root 无法更改文件权限或所有权

root 无法更改文件权限或所有权

我的目录是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

答案1

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

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

答案2

通常情况下,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。您可以通过以 root 身份触摸 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)

参考

答案3

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

答案4

在 nfs 主机上

nano /etc/exports

/share       ip_of_client(rw,no_root_squash)

出口

exportfs -a

mount -t nfs host:/folder <mnt location>

RHEL

默认情况下,NFS 共享将 root 用户更改为 nfsnobody 用户,这是一个非特权用户帐户。这会将所有 root 创建的文件的所有者更改为 nfsnobody,从而阻止上传设置了 setuid 位的程序。

如果使用 no_root_squash,远程 root 用户就能够更改共享文件系统上的任何文件,并留下受特洛伊木马感染的应用程序,以便其他用户无意中执行。

相关内容