在 2 个 NFS 客户端中的 1 个上的 NFS 共享和文件权限有一个奇怪的问题,web1 有文件权限问题,但 web2 很好。web1 和 web2 是负载平衡的 Web 服务器。
所以问题是:
- 如何确保 NFS 共享文件内容保留与 web1 服务器上的原始文件相同的用户/组权限,就像它们在 web2 服务器上一样?
- 我如何扭转我在 web1 上所做的事情,我尝试了卸载命令并说找不到命令?
信息:
我正在使用 3 个专用服务器设置。所有 3 台服务器基于 CentOS 5.4 64 位。
服务器如下:
- web1 - 具有文件权限问题的 nfs 客户端
- web2 - nfs 客户端文件权限是 OKAY
- db1 - 在 /nfsroot 的 nfs 共享
web2 nfs 客户端是由我的虚拟主机设置的,而 web1 是由我设置的。
我在 web1 上执行了以下命令,它可以使用 web1 上的最新文件更新 /nfsroot/site_css 上的 db1 nfsroot 共享,但是即使我使用 tar 和 -p 命令来保持文件权限,文件权限也不会保持不变?
cd /home/username/public_html/forums/script/
tar -zcp site_css/ > site_css.tar.gz
mount -t nfs4 nfsshareipaddress:/site_css /home/username/public_html/forums/scripts/site_css/ -o rw,soft
cd /home/username/public_html/forums/script/
tar -zxf site_css.tar.gz
但是检查web1 文件权限不再是用户名用户/组,而是由任何人拥有?但 web2 文件权限正确吗?这只是 web1 的问题,而 web2 是正确的?看起来数字ID不一样?不知道如何纠正这个?
web1的用户/组不正确
ls -alh /home/username/public_html/forums/scripts/site_css
total 48K
drwxrwxrwx 2 nobody nobody 4.0K Feb 22 02:37 ./
drwxr-xr-x 3 username username 4.0K Feb 22 02:43 ../
-rw-r--r-- 1 nobody nobody 1 Nov 30 2006 index.html
-rw-r--r-- 1 nobody nobody 5.8K Feb 22 02:37 style-057c3df0-00011.css
-rw-r--r-- 1 nobody nobody 5.8K Feb 22 02:37 style-95001864-00002.css
-rw-r--r-- 1 nobody nobody 5.8K Feb 18 05:37 style-b1879ba7-00002.css
-rw-r--r-- 1 nobody nobody 5.8K Feb 18 05:37 style-cc2f96c9-00011.css
web1 数字 ID
ls -n /home/username/public_html/forums/scripts/site_css
total 48
drwxrwxrwx 2 99 99 4096 Feb 22 02:37 ./
drwxr-xr-x 3 503 500 4096 Feb 22 02:43 ../
-rw-r--r-- 1 99 99 1 Nov 30 2006 index.html
-rw-r--r-- 1 99 99 5876 Feb 22 02:37 style-057c3df0-00011.css
-rw-r--r-- 1 99 99 5877 Feb 22 02:37 style-95001864-00002.css
-rw-r--r-- 1 99 99 5877 Feb 18 05:37 style-b1879ba7-00002.css
-rw-r--r-- 1 99 99 5876 Feb 18 05:37 style-cc2f96c9-00011.css
web2正确的用户名用户/组权限
ls -alh /home/username/public_html/forums/scripts/site_css
total 48K
drwxrwxrwx 2 root root 4.0K Feb 22 02:37 ./
drwxr-xr-x 3 username username 4.0K Dec 2 14:51 ../
-rw-r--r-- 1 username username 1 Nov 30 2006 index.html
-rw-r--r-- 1 username username 5.8K Feb 22 02:37 style-057c3df0-00011.css
-rw-r--r-- 1 username username 5.8K Feb 22 02:37 style-95001864-00002.css
-rw-r--r-- 1 username username 5.8K Feb 18 05:37 style-b1879ba7-00002.css
-rw-r--r-- 1 username username 5.8K Feb 18 05:37 style-cc2f96c9-00011.css
web2 数字 ID
ls -n /home/username/public_html/forums/scripts/site_css
total 48
drwxrwxrwx 2 503 500 4096 Feb 22 02:37 ./
drwxr-xr-x 3 503 500 4096 Dec 2 14:51 ../
-rw-r--r-- 1 503 500 1 Nov 30 2006 index.html
-rw-r--r-- 1 503 500 5876 Feb 22 02:37 style-057c3df0-00011.css
-rw-r--r-- 1 503 500 5877 Feb 22 02:37 style-95001864-00002.css
-rw-r--r-- 1 503 500 5877 Feb 18 05:37 style-b1879ba7-00002.css
-rw-r--r-- 1 503 500 5876 Feb 18 05:37 style-cc2f96c9-00011.css
我检查了 db1 /nfsroot/site_css 并且用户/组所有权对于 root 拥有的日期为 feb22 而不是用户名的较新文件不正确?
在db1上,为新的 feb22 日期文件分配的 root 用户/组最初不正确
ls -alh /nfsroot/site_css
total 44K
drwxrwxrwx 2 root root 4.0K Feb 22 02:37 .
drwxr-xr-x 17 root root 4.0K Feb 17 12:06 ..
-rw-r--r-- 1 root root 1 Nov 30 2006 index.html
-rw-r--r-- 1 root root 5.8K Feb 22 02:37 style-057c3df0-00011.css
-rw-r--r-- 1 root root 5.8K Feb 22 02:37 style-95001864-00002.css
-rw------- 1 username nfs 5.8K Feb 18 05:37 style-b1879ba7-00002.css
-rw------- 1 username nfs 5.8K Feb 18 05:37 style-cc2f96c9-00011.css
然后我在 db1 和 chown 上将它们全部 chmod 设置为 db1 上的正确所有权,所以它看起来像下面
在db1上更正了较新的 feb22 日期文件
ls -alh /nfsroot/site_css
total 44K
drwxrwxrwx 2 root root 4.0K Feb 22 02:37 .
drwxr-xr-x 17 root root 4.0K Feb 17 12:06 ..
-rw-r--r-- 1 username username 1 Nov 30 2006 index.html
-rw-r--r-- 1 username username 5.8K Feb 22 02:37 style-057c3df0-00011.css
-rw-r--r-- 1 username username 5.8K Feb 22 02:37 style-95001864-00002.css
-rw-r--r-- 1 username username 5.8K Feb 18 05:37 style-b1879ba7-00002.css
-rw-r--r-- 1 username username 5.8K Feb 18 05:37 style-cc2f96c9-00011.css
但是仍然没有人拥有 web1 节目?而 web2 显示正确的权限?
web1仍然有不正确的用户/nobody 组与 web2 和 db1 的设置不匹配?
ls -alh /home/username/public_html/forums/scripts/site_css
total 48K
drwxrwxrwx 2 nobody nobody 4.0K Feb 22 02:37 ./
drwxr-xr-x 3 username username 4.0K Feb 22 02:43 ../
-rw-r--r-- 1 nobody nobody 1 Nov 30 2006 index.html
-rw-r--r-- 1 nobody nobody 5.8K Feb 22 02:37 style-057c3df0-00011.css
-rw-r--r-- 1 nobody nobody 5.8K Feb 22 02:37 style-95001864-00002.css
-rw-r--r-- 1 nobody nobody 5.8K Feb 18 05:37 style-b1879ba7-00002.css
-rw-r--r-- 1 nobody nobody 5.8K Feb 18 05:37 style-cc2f96c9-00011.css
太令人困惑了,非常感谢任何帮助!
谢谢
试图理解你的问题是什么令人困惑,你不清楚你是在 web1 上的 web1 上检查文件,还是在 web1 上的 db1 上检查文件,或者其他什么。请很好地描述您实际看到的内容,不要将问题与复制和 chmoding 混淆。一些简单的事情,比如我在 db1 上创建一个文件,权限为 x:y,在 web1 上我看到权限 a:b,在 web2 上我看到权限 c:d。
首先,使用 NFS,root 拥有的任何文件通常都会被共享,因此它不属于任何人。这意味着如果您在客户端机器上有根,那么您实际上在服务器上没有根。我认为这解释了你所看到的一些情况。
其次,如果您正在运行 NFS,那么所有服务器上的 userid->username 映射必须相同,这一点至关重要。Unix 文件系统只为 userid 和 groupid 存储一个数字 id,然后由 ls 等程序映射到用户名。你确定它们都是同步的吗?这可能是你有一个不匹配。
最后, tar p 是提取而不是创建 tar 的一个选项。创建 tar 时会忽略它,即使使用它,也不会将所有权设置为原来的样子。-p 基本上意味着,忽略 umask。Tar 将创建仅属于您的文件,除非您是 root。