A distribuição é um servidor Ubuntu executando o kernel Linux 2.6.35-30.
Eu gostaria de ter um diretório que fica completamente na memória. Isso é possível sem privilégios de root?
fonte
A distribuição é um servidor Ubuntu executando o kernel Linux 2.6.35-30.
Eu gostaria de ter um diretório que fica completamente na memória. Isso é possível sem privilégios de root?
O Linux fornece um dispositivo tmpfs que qualquer usuário pode usar /dev/shm
,. Por padrão, ele não é montado em um diretório específico, mas você ainda pode usá-lo como um.
Simplesmente crie um diretório /dev/shm
e, em seguida, faça o link simbólico para onde quiser. Você pode conceder ao diretório criado as permissões que escolher, para que outros usuários não possam acessá-lo.
Este é um dispositivo suportado por RAM, então o que há na memória por padrão. Você pode criar todos os diretórios que precisar dentro/dev/shm
Naturalmente, os arquivos colocados aqui não sobreviverão a uma reinicialização e, se sua máquina começar a trocar, /dev/shm
não o ajudará.
O Solaris paralelo com /dev/shm
é /tmp
que é uma "troca" partição tipo, e também a memória baseada. Assim como os /dev/shm
usuários arbitrários, podem criar arquivos no /tmp
Solaris.
O OpenBSD também tem a capacidade de usar uma montagem baseada em memória, mas não tem uma disponível por padrão. O comando mount_mfs está disponível para o super usuário.
Não tenho certeza sobre outros * BSDs.
/dev/tmpfs
no sistema (nem meu próprio sistema que possui um kernel 3.0.0). Tem certeza de que isso não é algo criado por sua distribuição?/run
e possivelmente/run/shm
precisa ser investigado antes de atualizar minha resposta./ dev / shm é inseguro
... em sistemas com swap ativo ! As chances são muito altas de serem ativadas pelo computador.
Existe uma alternativa padrão melhor, segura e padrão -
ramfs
. Você pode usarramfs
se planeja usar o espaço suportado por RAM para armazenar temporariamente dados confidenciais, como chaves privadas, carteiras Bitcoin ou Ethereum e outras.ramfs
é melhor do quetmpfs
quando se trata de segurança, pois osramfs
dados nunca são trocados (salvos em uma unidade de armazenamento físico), enquantotmpfs
podem ser trocados. Terceiros podem inspecionar o espaço de troca e extrair dados confidenciais .A solução
Você pode preparar a
ramfs
montagem para que qualquer usuário não privilegiado possa montá-lo / desmontá-lo sob demanda.Para fazer isso, você precisará do privilégio root uma vez . Peça ao administrador do seu sistema para configurar isso para você, se você não tiver privilégios de root.
No início, você precisa adicionar uma linha ao
/etc/fstab
. A linha no fstab pode ficar assim:/mnt/ramfs
é um ponto de montagem, onde o sistema de arquivos ramfs será montado. Diretório deve existir.noauto
A opção impede que isso seja montado automaticamente (por exemplo, na inicialização do sistema).user
torna isso montável por usuários regulares.size
define o tamanho desse "ramdisk" (você pode usarM
eG
aqui).mode
é muito importante ,0770
pois somente o código octal root e o usuário, que montou este sistema de arquivos, poderão ler e escrever nele, não nos outros (você também pode usar código diferente de sua escolha, mas tenha certeza! )Quando isso for feito, qualquer usuário poderá montar isso sob demanda.
Depois que algum usuário monta isso, um novo
ramfs
sistema de arquivos de 1024 MB é criado e montado em/mnt/ramfs/
. Será de propriedade deroot:user
. Quando ele desmontar ou o sistema for reiniciado, esse sistema de arquivos baseado em RAM desaparecerá com todos os seus dados. O que é legal.Além disso, esse sistema de arquivos pode ser montado por vários usuários de forma independente, mas não ao mesmo tempo , ou seja, para estar pronto para ser montado por um próximo usuário, o usuário anterior deve desmontar esse sistema de arquivos.
montar:
desmontar:
PS Se você estiver tentando
rsync
arquivos na raiz dos ramfs recém-montados / criados como um usuário não raiz, poderá encontrar umrsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
erro. Isso é completamente bom e esperado, porque o usuário não possui a raiz do sistema de arquivos ram. A solução é simples, basta criar um diretório lá,/mnt/ramfs/copied/
por exemplo, ersync
nele.PPS testado no Debian 9. Certamente também funcionará no Ubuntu.
fonte
Seu sistema pode ter um já disponível; sistemas Linux recentes baseados no Glibc sempre têm um tmpfs montado
/dev/shm
.Se o seu sistema não possui um ou é muito pequeno, um sistema de arquivos não montado pelo root significa praticamente o FUSE . No Ubuntu, você precisa estar no
fuse
grupo para usar o FUSE. Examinando os sistemas de arquivos FUSE disponíveis , vejo apenas o Ramfuse , que infelizmente está abandonado no upstream.fonte
Em geral, não, os sistemas de arquivos podem ser montados apenas pela raiz. Se você permitir que um usuário coloque sistemas de arquivos arbitrariamente, isso está basicamente dando raiz a ele. (Maneira fácil: monte uma sobre / etc, coloque sua própria senha e sombra lá, su com a nova senha root que você acabou de criar, desmonte)
Se você quiser um tmpfs em um local específico, poderá adicioná-lo
/etc/fstab
, com os sinalizadores denoauto,user
e, em seguida, um usuário poderá montá-lo (mas não está particularmente claro por que você não o montaria automaticamente)Se os usuários precisarem de tmpfs arbitrários, você terá algumas opções:
sudo
para permitir que os usuários o executem. Certifique-se de não permitir que o usuário escolha caminhos arbitrários.fonte