Root не может изменить разрешение файла или владельца

8

Моя директория - root:

pwd 
/

У меня есть следующий каталог:

drwxrwxrwx   4 root   root     81920 Jun  4 09:25 imr_report_repo

ПРИМЕЧАНИЕ: imr_report_repo это ресурс NFS.

Вот fstabсписок для imr_report_repo:

netapp1:/imr_report_repos_stage  /imr_report_repo  nfs   rw,bg,actimeo=0,nointr,vers=3,timeo=600,rsize=32768,wsize=32768,tcp 1    1
d imr_report_repo

Файл внутри монтирования:

$ ls -al
-rw-r--r--  1 502     502      1273 Mar 21  2013 imr1_test.txt

UID 502 не существует. Если мы добавим этот UID / GID локально:

$ groupadd -g 502 jimmy
$ useradd -g 502 -u 502 jimmy

Теперь он появляется:

$ ls -al
-rw-r--r--  1 jimmy     jimmy      1273 Mar 21  2013 imr1_test.txt

Теперь перейдите в root:

$ su -
$ chown oracle:oinstall imr1_test.txt
chown: changing ownership of `imr1_test.txt': Operation not permitted
стрингер
источник
Является ли сервер NFS NetApp? Есть ли у вас административный доступ к нему?
Марк Плотник
Да, это NetApp. У меня есть администраторские привилегии
Стрингер

Ответы:

10

Обычно rootне имеет специальных разрешений для общих ресурсов NFS. Напротив: rootотображается на обычного пользователя (то есть даже не имеет «нормального» доступа для чтения и записи к rootфайлам).

Вы должны работать chownна сервере NFS.

Хауке Лагинг
источник
4

Как правило, локальный пользователь root на клиентах NFS не может выполнять такие действия на смонтированных общих ресурсах NFS. NetApp добавляет немного изюминки в это следующим образом:

  • По умолчанию параметр anon задает UID 65534. То есть, если вы не используете параметры root и anon для ресурса, пользователи root на всех хостах получают доступ к ресурсу с помощью UID 65534.
  • Если опция anon указывает UID 65535, root-доступ отключен.
  • Если опция anon указывает UID 0, root-доступ предоставляется всем хостам.
  • Если вместо UID указано имя, это имя ищется в соответствии с порядком, указанным в /etc/nsswitch.confфайле, чтобы определить соответствующий UID, который будет назначен опцией anon.

Итак, судя по всему, у общего ресурса NetApp NFS есть опция по умолчанию # 1. Вы можете подтвердить это, коснувшись файла на общем ресурсе NFS как root и увидев, какой идентификатор получен в результате этого.

Вы должны увидеть экспортированные параметры общего ресурса NFS mount -vна своем клиенте NFS.

$ mount -v
...
mulder:/export/raid1/home/sam on /home/sam type nfs (rw,intr,tcp,nfsvers=3,rsize=16384,wsize=16384,addr=192.168.1.1)

Ссылки

SLM
источник
2

Сервер NFS NetApp по умолчанию изменит учетные данные пользователя root на клиенте на uid 65534 на сервере, поэтому такие операции chownзавершатся неудачно. Чтобы изменить это, отредактируйте список экспорта в файлере так, чтобы в строке для файловой системы был параметр root=clientid, где clientid - это IP-адрес или имя хоста клиента, которому вы хотите иметь root-доступ к этой файловой системе. Затем запустите, exportfs -aесли вы используете интерфейс командной строки на файлере.

Марк Плотник
источник
0

Как сказано выше в комментариях slm ,

Как правило, локальный пользователь root на клиентах NFS не может выполнять такие действия на смонтированных общих ресурсах NFS.

Используемая функция называется гнилой сквош . Больше информации здесь . В моем случае единственным способом было войти в систему, чтобы отключить root-сквош для этого конкретного сервера и включить его позже.

С подобной ситуацией вы столкнетесь, если будете использовать dockerконтейнер с томами и контейнер будет работать с непривилегированным пользователем (например USER apache). Таким образом, идея о точках монтирования NFS, которые должны быть r/ wтолько для owner, а не для, rootявляется обычной практикой безопасности.

azbarcea
источник