2 个 NFS 客户端中的 1 个在 NFS 共享和文件权限方面出现了一个奇怪的问题,web1 存在文件权限问题,但 web2 却没有问题。web1 和 web2 是负载平衡的 Web 服务器。
所以问题是:
- 我如何确保 NFS 共享文件内容对用户/组保留与 web1 服务器上的原始文件相同的权限,就像在 web2 服务器上一样?
- 我如何撤销在 web1 上所做的事情,我尝试了卸载命令但说找不到命令?
信息:
我使用 3 台专用服务器设置。所有 3 台服务器均基于 CentOS 5.4 64 位。
服务器如下:
- web1-nfs 客户端存在文件权限问题
- web2-nfs 客户端文件权限正常
- db1-/nfsroot 上的 nfs 共享
web2 nfs 客户端由我的网络主机设置,而 web1 由我设置。
我在 web1 上执行了以下命令,并且它可以使用 web1 上的最新文件更新 /nfsroot/site_css 上的 db1 nfsroot 共享,但是即使我使用带有 -p 命令的 tar 来保留文件权限,文件权限仍然不起作用?
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错误的用户/组为 nobody
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,对于 2 月 22 日发布的较新文件,用户/组所有权不正确,这些文件由 root 而不是用户名拥有?
在数据库1最初为 2 月 22 日的新文件分配了错误的 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 上对它们进行 chmod 操作,并将 chown 设置为在 db1 上正确拥有所有权,如下所示
在数据库1一旦更正了较新的 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
太令人困惑了,所以非常感谢任何帮助!
谢谢
答案1
试图理解您的问题是什么会让人感到困惑,您没有说清楚您是在检查 web1 上的 web1 上的文件,还是在检查 web1 上的 db1 上的文件,或者其他什么。请很好地描述您实际看到的内容,不要将问题与复制和 chmoding 混淆。简单来说,我在 db1 上创建一个文件,权限为 x:y,在 web1 上我看到权限 a:b,在 web2 上我看到权限 c:d。
首先,使用 NFS,任何由 root 拥有的文件通常都会被共享,因此它不属于任何人。这意味着如果您在客户端计算机上拥有 root 权限,那么您实际上在服务器上就没有 root 权限。我认为这解释了您所看到的一些情况。
其次,如果您正在运行 NFS,那么所有服务器上的用户 ID -> 用户名映射必须相同。Unix 文件系统只存储用户 ID 和组 ID 的数字 ID,然后由 ls 等程序将其映射到用户名。您确定它们都同步了吗?可能是您遇到了不匹配的情况。
最后,tar p 是用于提取而不是创建 tar 的选项。创建 tar 时会忽略它,即使使用它,也不会将所有权设置为原来的所有权。-p 基本上意味着忽略 umask。除非您是 root 用户,否则 Tar 将创建仅由您拥有的文件。