Я только что переустановил свой iMac в домашней сети и смонтировал домашние каталоги пользователей через общий ресурс NFS (размещенный на сервере Ubuntu).
Проблема в том, что когда я использую sudo, мне отказывают в доступе к моему домашнему каталогу.
Мой UID — 501, и мне разрешено использовать sudo, поскольку я являюсь членом группы администраторов (GID 80).
На сервере Ubuntu я настроил свой домашний каталог следующим образом:
Ubuntu# ls -ln | grep bryan
drwxrwx--- 35 501 80 4096 2012-01-27 14:09 bryan
Что правильно переводится на Mac:
iMac$ ls -l | grep bryan
drwxrwx--- 35 bryan admin 4.0K 27 Jan 14:09 bryan/
Поскольку root также является членом группы admin (GID 80), я ожидал, что sudo разрешит доступ к моему домашнему каталогу, но, как вы можете видеть ниже, это не так.
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
Для подтверждения приведу соответствующую часть вывода на dscacheutil -q group
моем iMac:
name: admin
password: *
gid: 80
users: root bryan
Что можно сделать, чтобы разрешить доступ к моему домашнему каталогу на iMac при использовании sudo?
решение1
При использовании sudo
вы переключаетесь на root
пользователя (uid 0) – вытерятьВаш brian
UID и admin
группа. ( sudo id
покажет вам точные значения.)
Поскольку предыдущие версии NFS (v3 и более ранние) выполняли все проверки безопасности только на стороне клиента, существует встроенная защита от недобросовестных клиентов — когда клиент говорит, что ваш UID равен 0, вы этого не делаете.нетполучить права root –Вместо этого сервер NFS видит вас как пользователя nobody
.
Чтобы отключить эту защиту, отредактируйте сервер, /etc/exports
чтобы включить эту no_root_squash
опцию, затем перезапустите exportfs -ra
и перемонтируйте общий ресурс на всех клиентах.
При тестировании разрешений NFS полезно иметь каталог, доступный для записи всем пользователям, на вашем ресурсе. Например, в Ubuntu, sudo mkdir /home/temp; sudo chmod a+rwx /home/temp
. Затем в OS X вы можете запустить sudo touch /Volumes/home/temp/testfile
и мгновенно увидеть владельца нового созданного файла.