根目录无法更改文件许可权或所有权


8

我的追根溯源是根:

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吗?您具有管理权限吗?
Mark Plotnick 2014年

是的,它是NetApp。我确实有admin privs
Stringer

Answers:


10

通常root对NFS共享没有特殊权限。相反::root映射到普通用户(即,甚至没有对root文件的“普通”读写访问权限)。

您必须chown在NFS服务器上运行。


4

通常情况下,不允许NFS客户端上的本地root用户在NFS挂载的共享上执行这些类型的活动。NetApp似乎为此增加了一些扭曲,如下所示:

  • 默认情况下,anon选项指定的UID为65534。即,如果不对资源使用root和anon选项,则所有主机上的root用户都将使用UID 65534访问该资源。
  • 如果anon选项指定的UID为65535,则禁用root访问。
  • 如果anon选项将UID指定为0,则将对所有主机授予root访问权限。
  • 如果提供的是名称而不是UID,则将根据/etc/nsswitch.conf文件中指定的顺序查找该名称,以确定由anon选项分配的相应UID。

因此,从外观上看,NetApp NFS共享具有默认选项#1。您可以通过以根用户身份触摸NFS共享上的文件并查看执行此操作后得到的ID来确认这一点。

您应该能够mount -v在NFS客户端上使用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)

参考文献


2

默认情况下,NetApp NFS服务器会将客户端上的root用户的凭据更改为服务器上的uid 65534,因此类似操作chown将失败。要更改此设置,请在文件管理器上编辑导出列表,以使文件系统的行具有参数root=clientid,其中clientid是要对该文件系统具有根访问权限的客户机的IP地址或主机名。然后运行exportfs -a如果你正在使用的文件管理器的命令行界面。


0

正如上述slm评论所述,

通常情况下,不允许NFS客户端上的本地root用户在NFS挂载的共享上执行这些类型的活动。

所使用的功能称为腐烂南瓜。更多信息在这里。就我而言,唯一的方法是登录以禁用该特定服务器的root南瓜,然后稍后再启用它。

如果您将docker容器与卷一起使用,并且该容器与无特权的用户(例如USER apache)一起运行,则会遇到类似的情况。因此,将NFS挂载点的想法设为r/ w仅由owner而不是by root是,这是一种常见的安全惯例。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.