尽管 dir 有 777 权限,但文件创建权限错误

尽管 dir 有 777 权限,但文件创建权限错误

运行命令时touch file 出现错误

touch: cannot touch 'file': permission denied

虽然我对尝试创建文件的目录拥有 777 权限,但仍然无法使用某个特定用户创建文件,但其他一些用户可以在那里创建文件。

试图strace找出根本原因,但无法理解 strace 输出。我认为与 strace 输出相关的一行是:

open("file", O_WRONGLY|O_CREATE|O_NOCTTY|O_NONBLOCK, 0666) = -1  EACESS (Permission denied)

我也尝试创建具有特定权限的文件,但出现权限错误,尝试的命令是:

install -b -m 511 /dev/null file

答案1

它可能被文件系统访问控制列表覆盖。可能是Linux ACL?您可以通过使用来确定lsfacl

获取当前ACL- 您可以使用 getfacl 检查任何文件或目录的权限。请参阅下面的示例。

# getfacl dir/ file: dir owner: root group: root user::rwx group::--- other::---

使用 ACL 设置权限- 您可以为访问控制列表中具有继承的目录设置“模式”0777setfacl -d -m o::rwx /directory

答案2

我也遇到了这个问题。对我来说,问题是我已经向父目录授予了必要的 rwx 权限:

chmod 777 parent_dir

但我试图访问touch我没有权限的子目录中的文件。

> touch parent_dir/subdir/file.txt
touch: cannot touch 'parent_dir/subdir/file.txt': Permission denied

如果这是您的问题,那么您正在寻找的命令是,例如

chmod -R 777 parent_dir

答案3

有时,您对要在其中创建文件的当前目录有足够的权限,但对层次结构中的父目录没有权限。

请检查一次,是否存在从根目录到当前目录的权限问题。

另一个原因可能是检查 selinux 是否启用。

相关内容