我创建了一个用户,用于通过 FTP 进行备份。我将主目录移动到已安装的驱动器,并授予用户rwx
使用 ACL 的权限。用户有一个 shell,用户有一个密码,但是当我通过 SSH 使用该用户登录服务器时,我收到以下错误。
Could not chdir to home directory /mnt/NAS/nextcloud_data/linuxman/files/PUSCraft/Backups: Permission denied
-bash: /mnt/NAS/nextcloud_data/linuxman/files/PUSCraft/Backups/.bash_profile: Permission denied
文件夹权限如下:
drwxrws---+ 6 mcbackup mcbackup 4096 Jul 12 2020 Backups
这是 ACL 配置:
# file: Backups
# owner: mcbackup
# group: mcbackup
# flags: -s-
user::rwx
user:linuxman:rwx
user:mcbackup:rwx
user:1002:---
user:1003:---
user:1004:---
user:1005:rwx
user:1006:---
group::rw-
mask::rwx
other::---
default:user::rwx
default:user:linuxman:rwx
default:user:mcbackup:rwx
default:user:1002:---
default:user:1003:---
default:user:1004:---
default:user:1005:rwx
default:user:1006:---
default:group::rw-
default:mask::rwx
default:other::---
我不太了解 SELinux,但据我所知,我没有看到任何可能导致问题的布尔值。
知道我这里遗漏了什么吗?
更新:忘了提了,有问题的用户是mcbackup
。
更新 1:我查看了默认主目录的 SELinux 上下文和内容,并将其添加到 mcbackup 的主文件夹中
sudo chcon -r user_home_dir_t Backups
登录 SSH 时仍然出现相同的权限错误。
答案1
为了访问给定目录中的文件,您需要对单个文件具有适当的访问权限(读取和/或写入,取决于您对它们执行的操作),并且至少执行(又称“搜索”)对目录的访问以及该路径上的所有目录。如果您对某个目录至少没有执行权限,则您无法触碰其中的任何内容(包括子目录)。(注意:您需要读取权限才能列出目录的内容,但如果你已经知道所需项目的名称,则这并不是必需的。)
在这种情况下,问题似乎是缺少对 /mnt 目录的访问权限(因此无法访问其中的所有内容)。这相当不寻常;我习惯于 /mnt 允许所有人读取和执行,如下所示:
$ ls -ld /mnt
drwxr-xr-x 2 root root 4096 Sep 25 2019 /mnt
...但如果您出于某种原因想要将其锁定,则通过 ACL 授予访问权限即可。