Montando Sistema de Arquivos com Conjunto de IDs de Usuário Especial

19

Quero montar o dispositivo /dev/sda3para o diretório /foo/bar/baz. Depois de montar o diretório deve ter o uid do usuário johndoe. Então eu fiz:

sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe

e adicionei a seguinte linha ao meu /etc/fstab:

/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1

Quando eu faço agora, sudo -u johndoe mount /dev/sda3o comando stat -c %U /foo/bar/bazresulta em rootvez de johndoe. Qual é a melhor maneira de montar este sistema de arquivos ext4 com o johndoeconjunto uid ?

qbi
fonte

Respostas:

20

Não é possível forçar um proprietário em um disco com um sistema de arquivos ext4. Somente sistemas de arquivos que não suportam permissões do Linux, como fat, têm um atributo para propriedade / grupo de grupos: uid=valueegid=value . Veja a página do manual em montagem .

Você deve alterar o proprietário no sistema de arquivos montado como em:

sudo chown johndoe /foo/bar/baz

Se você precisar alterar as permissões recursivamente:

sudo chown -R johndoe /foo/bar/baz

... e se o grupo precisar ser alterado johndoetambém:

sudo chown -R johndoe: /foo/bar/baz
Lekensteyn
fonte
2
Mudar de forma recursiva de propriedade geralmente é uma má ideia, se você puder ajudá-lo. Depois de eliminar a propriedade "correta", não há praticamente nenhuma maneira fácil de recuperá-la. O bindfs do IMO é a maneira correta de lidar com isso (veja minha resposta).
Catskul
3
bindfs soa como outra camada de complexidade. Minha resposta é mais adequada para um disco rígido externo (para backup) usado em uma instalação anterior com um ID de usuário diferente. Ele não deve ser usado em situações em que vários IDs de usuário precisam ser mantidos (sistema de arquivos raiz), mas, nesse caso, bindfs with -utambém não deve ser usado porque contorna as restrições de acesso dos diferentes IDs de usuário. --mapdeve ser usado se você deseja preservar as restrições de acesso.
Lekensteyn
11
+1 para o "só é possível em FSs sem permissão" - estou tentando usar uide gid, o que não funcionaria.
mgarciaisaia
19

bindfsé a resposta. Ele precisará de um sistema de arquivos já montado e fornecerá uma visão dele com o que você desejar:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo
Catskul
fonte
11
O bindfs possui outros modos de operação, consulte: bindfs.org/docs/bindfs.1.html
Lekensteyn
2
Ugh, ele usa o FUSE.
Navin
Eu queria montar um sistema de arquivos virtual 9p com permissões de usuário diferentes do sistema operacional host. Estava batendo minha cabeça contra a parede, tentando fazê-lo funcionar. Os Bindfs realmente me tiraram do sério. Ótima pequena ferramenta!
Boann
6

Supondo que o grupo definido para os arquivos tenha permissões apropriadas, você poderá descobrir seu ID de grupo (GID) e adicionar-se a ele.


Para descobrir o ID do grupo de um arquivo, use ls -n. Exemplo de saída:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

Você quer o quarto campo para GID, que no meu caso é o segundo 1000.

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

Depois de executar, você deverá ter o controle total sempre que os atributos do arquivo para o grupo permitirem.

Conforme observado na outra resposta relacionada às permissões do usuário, se você precisar corrigir o grupo em alguns arquivos, execute um destes:

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./
Chinoto
fonte
11
Observe se você deseja alternar o usuário ou grupo de A para B sem alterar a propriedade dos arquivos que não são A; você pode usar sudo chown --from A B -R ./para os usuários e sudo chown --from :A :B ./para os grupos
LateralFractal