我的目录是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 用户就能够更改共享文件系统上的任何文件,并留下受特洛伊木马感染的应用程序,以便其他用户无意中执行。