Linux - Montar dispositivo com direitos de usuário específicos

86

Como montar um dispositivo com direitos de usuário específicos na inicialização? Eu ainda tenho alguns problemas para descobrir isso. Eu gostaria de montar a divisão com uid=1000e gid=1000. Minha entrada atual para o /etc/fstab/arquivo é assim:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000
wowpatrick
fonte
Não esqueça gui = 1000. Além disso, qual é a propriedade / direitos de / var / www. Deve pertencer à raiz.
Skol
1
@skub: O proprietário do /var/www/é root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000não funcionou tão bem (o Ubuntu removeu a entrada após uma falha na reinicialização).
Wowpatrick 8/08
2
Sua fonte de montagem é "dev" ??
sua experiência
@wowpatrick - seu dispositivo de montagem deve ser algo como / dev / sda1, não deve ser 'dev'.
Skol
1
@skub: É uma pasta compartilhada do VirtualBox, então / dev está certo. Eu descobri agora, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwfunciona muito bem.
Wowpatrick 8/08

Respostas:

119

Para montar um dispositivo com certos direitos, você pode usar a -o Optiondiretiva ao montar o dispositivo. Para montar o dispositivo que você descreveu, execute:

 mount -t deviceFileFormat -o umask=filePermissions,gid=ownerGroupID,uid=ownerID /device /mountpoint

Por exemplo, montar uma pasta compartilhada do VirtualBox /var/wwwcom www-datacomo proprietário ficaria assim:

mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/www

Se você deseja montar o dispositivo na inicialização, você pode adicionar a seguinte entrada ao seu /etc/fstabarquivo:

 /device /mountpoint deviceFileFormat umask=filePermissions,gid=ownerGroupID,uid=ownerUserID

Novamente, com o mesmo exemplo, a entrada para o /etc/fstabarquivo ficaria assim:

dev /var/www vboxsf umask=0022,gid=33,uid=33

Para sistemas de arquivos que não suportam montagem como um usuário específico (como ext4), o código acima dará o erro

Unrecognized mount option "uid=33" or missing value

Para alterar o proprietário de uma montagem ext4, basta executar

chown username /mountpoint

depois de montado.

wowpatrick
fonte
Consegui usar a opção uid / gid no ext4.
CMCDragonkai
Isso não parece para trabalhar com montagem --bind, eu estou usando um sistema de arquivos Btrfs
meffect
A umask não deveria ser, em umask=0077vez de umask=0022dar permissão apenas ao proprietário para ler ou gravar? Parece que umask=0022dará permissões de leitura a outras pessoas se eu estiver lendo corretamente. Quero que apenas o usuário que monta o disco tenha permissão de leitura ou gravação.
Mian Asbat Ahmad
3

Para um sistema de arquivos como ext3 ou ext4, depois de executar

    chown -R username:group /mountpoint

para alterar o proprietário dos arquivos existentes no momento, você pode definir o bit de identificação do grupo para que novos arquivos sejam criados com o grupo específico (não funciona para a identificação do usuário no Linux):

    find /mountpoint -type d -exec chmod g+ws {} \;

A entrada da Wikipedia sobre setuid e setgid é bastante informativa, consulte a seção sobre diretórios .

js.
fonte
18
Alterar a propriedade de todos os arquivos no dispositivo é muito invasivo. Como existe uma -oopção para montagem, é o melhor caminho.
Expiação limitada
6
-oinfelizmente não funciona para ext4, como explicado na resposta de @wowpatrick.
js.
14
chownÉ ridículo o conteúdo da unidade montada para outro usuário. Você não tem idéia do que pode quebrar para qualquer aplicativo nessa unidade. Pode ser bom se todos os conteúdos pertencem ao seu usuário, mas este é um grande não-não ...
carlspring
O dispositivo em questão é / dev / www, é fácil controlar quais aplicativos têm acesso a ele (provavelmente apenas um servidor WWW, que você pode desligar durante a operação). Mesmo que o aplicativo que o está usando ainda esteja sendo executado, ele continuará sendo executado, pois esse é o ponto da operação.
js.