注:用户名已修改为公开帖子。
我有一台 Linux 服务器,我在该服务器上拥有 root 权限。有一个用户帐户“privuser”只能使用 SSH 密钥通过 SSH 登录。但是,由于一些用户更改,privuser 无法再读取自己的目录。尽管是root,我也不能!
[root@server ~]# id privuser
uid=29772(privuser) gid=509(abc) groups=509(abc),1519(ghi)
[root@server ~]# groups privuser
privuser : abc ghi
[root@server ~]# su - privuser
su: warning: cannot change directory to /usr/home/xyz/abc/privuser: Permission denied
Your password expires on never
-bash: cd: /usr/home/xyz/abc/privuser: Permission denied
cannot cd to home directory /usr/home/xyz/abc/privuser
-bash: /usr/home/xyz/abc/privuser/.bash_profile: Permission denied
-bash-4.1$ exit
logout
-bash: /usr/home/xyz/abc/privuser/.bash_logout: Permission denied
即使作为 root 我也看不到这些文件。
[root@server ~]# ls -alh /usr/home/xyz/abc/privuser/
ls: cannot access /usr/home/xyz/abc/privuser/: Permission denied
但是,/usr/home/xyz/abc/privuser 是 NFS 挂载,因此我可以直接在 NFS 服务器上检查该目录和文件确实属于该 UID。
我怎样才能知道这里发生了什么?
编辑:(添加 ls 输出)
testuser 是服务器中属于同一组的另一个用户 - abc 作为麻烦用户(privuser),这是我可以从 testuser 获取的内容。
[testuser@server ~]$ ls -alh /usr/home/xyz/abc/
total 196K
drwxr-s--- 37 root xyz 4.0K Nov 2 15:47 .
drwxr-xr-x 9 root root 4.0K Feb 1 2016 ..
drwx------ 5 testuser abc 4.0K Nov 29 14:12 testuser
drwxr-xr-x 13 privuser abc 16K Jan 4 21:05 privuser
.....
testuser,属于同一个组abc,可以看到privuser的文件。
testuser@server ~]$ ls -alh /usr/home/xyz/abc/privuser
total 124K
drwxr-xr-x 13 privuser abc 16K Jan 4 21:05 .
drwxr-s--- 37 root **xyz** 4.0K Nov 2 15:47 .. <========== !!
drwxr-xr-x 2 privuser abc 4.0K Jan 4 12:38 arkiv20180104
-rw------- 1 privuser abc 15K Jan 4 21:05 .bash_history
-rw-r--r-- 1 privuser abc 99 Jan 4 12:31 .bashrc
drwxr-xr-x 3 privuser abc 4.0K Jan 4 12:42 .conda
drwx------ 2 privuser abc 4.0K Jan 23 2017 .ssh
....
解决方案: 尽管 privuser 的主目录位于 xyz 拥有的目录中,但它不属于组 xyz。我将 privuser 添加到 xyz 组,权限问题就消失了。