假设我在 ~ 中创建了目录(名为 temp),并在其中创建了几个文件。现在,我的 umask 是 0002,但为了练习,我更改了 ~/temp/ 的权限:
chmod 222 temp
据我所知,拥有目录的写权限意味着我无法打开它或读取其内容,但我应该能够在其中添加文件(或删除文件)。例如,我认为这会很好用:
touch temp/new_file.txt
但是,当我尝试这样做时,它只会引发一个错误:
touch: cannot touch 'temp/new_file.txt': Permission denied
我无法弄清楚为什么这不能按我预期的方式工作,所以我想知道当我只有写权限时我能对目录做什么,以及为什么按照我尝试的方式创建新文件不起作用?
(以上所有命令均在~中执行)
任何帮助都值得感激!
答案1
目录的权限工作方式不同,
这不是一个完美的解释,但是,
根据 chmod( man chmod
) 的手册页:
字母 rwxXst 为受影响的用户选择文件模式位:读(r)、写(w),执行(或搜索目录)(x)、仅当文件是目录或已对某些用户具有执行权限时才执行/搜索 (X)、在执行时设置用户或组 ID (s)、限制删除标志或粘性位 (t)。除了这些字母中的一个或多个之外,您还可以指定字母 ugo 中的一个:授予拥有该文件的用户的权限 (u)、授予属于该文件组的其他用户的权限 (g) 以及授予不属于上述两个类别的用户的权限 (o)。
这意味着要写入目录内的文件,您首先需要进入目录(执行权限)并创建一个文件(写权限)