Edg*_*rka 9 permissions files touch
我正在尝试在目录中创建一个文件,但我得到:
`touch`: cannot touch ‘test’: Permission denied
Run Code Online (Sandbox Code Playgroud)
这是我的命令:
`touch`: cannot touch ‘test’: Permission denied
Run Code Online (Sandbox Code Playgroud)
Cos*_*age 16
如果您没有写入和执行权限,则无法编辑公共目录的内容。
您表示您正在尝试创建一个新文件。如果该test
文件在 中不存在public
,touch
将尝试创建一个新文件。如果没有对父目录的写入和执行权限,它就无法做到这一点。遍历目录需要execute;需要 write 来为新文件添加 inode 条目。显然,您没有这些权限中的一个或两个。
如果该test
文件已存在于 中public
,touch
则默认情况下会更新该文件的修改时间。只有写的访问文件需要这一点,因为修改日期/时间存储在文件的inode。如果文件已经存在,您将需要使用类似命令来检查文件的权限,ls -l public/test
以确定您是否具有写访问权限。
目录上的权限位掩码rwxrwxr-x
, 表示:
root
用户,即,目录的拥有者,具有写权限的目录由第一所指示rwx
的块。该用户还可以读取目录(r
位)并遍历它以访问其内容(x
位)。root
组的成员,即目录上的组,他们自己不是root
用户,也有类似的权限来读取、写入和遍历目录,如第二个rwx
块所示所有其他用户只有读取和执行权限,如最后一个r-x
块所示。如前所述,对于目录,执行权限允许您遍历该目录并访问其内容。请参阅此问题以更清楚地了解这一点。
您需要与您的系统管理员(可能是您!)交谈以执行以下操作之一:
public/
chown user public/
。如果您是唯一需要具有编辑权限的用户,这将是合适的。publiceditors
,然后public/
使用类似chgrp publiceditors public/
. 确保您和任何其他需要能够修改目录的用户都被列为组成员。这种方法适用于多个用户需要编辑功能的情况。root
组的成员(我不建议这样做)。root
访问权限,例如使用密码sudo
或su
使用root
密码chmod o+w public
. 请注意,这使盒子上的每个人都能够编辑和删除公共目录中的文件。* 您可能不想要这个!*在没有其他访问控制强制执行的情况下,例如内核中的强制访问控制。
假设您在 Linux 机器上,在目录上,读取权限位允许您读取目录列表。写权限位允许您更新列出的目录,这是创建文件*、编辑文件名、取消链接(删除)文件所必需的。执行位允许您遍历目录、访问其文件等。有关Linux 目录权限的更多信息。
* 实际上,您正在将文件链接到目录中。大多数情况下,您会在创建文件时执行此操作,但还有更复杂的示例。例如,对最初存在于文件系统中其他地方的文件进行硬链接将需要对该链接的目标目录的写访问权限,尽管您并未创建新文件。
您需要能够写入目录以添加对您正在添加的文件的相关 inode 的引用。