Acabei de reinstalar meu iMac na minha rede doméstica e montei os diretórios iniciais dos usuários por meio de um compartilhamento NFS (hospedado em um servidor Ubuntu).
O problema que tenho é que quando uso o sudo, recebo permissão negada para meu próprio diretório pessoal.
Meu UID é 501 e tenho permissão para usar o sudo por ser membro do grupo Admin (GID 80).
No servidor Ubuntu, configurei meu diretório inicial da seguinte forma:
Ubuntu# ls -ln | grep bryan
drwxrwx--- 35 501 80 4096 2012-01-27 14:09 bryan
O que se traduz corretamente no mac:
iMac$ ls -l | grep bryan
drwxrwx--- 35 bryan admin 4.0K 27 Jan 14:09 bryan/
Como o root também é membro do admin (GID 80), eu esperava que o sudo tivesse permitido acesso ao meu diretório inicial, mas como você pode ver abaixo, esse não é o caso.
iMac$ whoami
bryan
iMac$ sudo bash
bash: /Volumes/home/bryan/.bashrc: Permission denied
iMac# whoami
root
iMac# cd /Volumes/home/bryan/
bash: cd: /Volumes/home/bryan/: Permission denied
Apenas para confirmar, a seguir está a parte relevante da saída dscacheutil -q group
do meu iMac:
name: admin
password: *
gid: 80
users: root bryan
O que posso fazer para ativar o acesso ao meu diretório inicial no iMac ao usar o sudo?
Responder1
Quando você usa sudo
, você está mudando para o root
usuário (uid 0) – vocêperderseu brian
UID e o admin
grupo. ( sudo id
mostrará os valores exatos.)
Como as versões anteriores do NFS (v3 e anteriores) realizavam todas as verificações de segurança apenas no lado do cliente, há uma salvaguarda incorporada para proteger contra clientes desonestos – quando o cliente diz que seu UID é 0, você faz isso.nãoreceber permissões de root –em vez disso, o servidor NFS vê você como o usuário nobody
.
Para desativar essa proteção, edite o servidor /etc/exports
para ter essa no_root_squash
opção e, em seguida, execute novamente exportfs -ra
e remonte o compartilhamento em todos os clientes.
Ao testar permissões NFS, é útil ter um diretório gravável mundialmente em seu compartilhamento. Por exemplo, no Ubuntu, sudo mkdir /home/temp; sudo chmod a+rwx /home/temp
. Então, no OS X, você pode executar sudo touch /Volumes/home/temp/testfile
e ver instantaneamente qual é o proprietário do arquivo recém-criado.