ill*_*rit 12 permissions command-line chmod
我有一个带有 644( -rw-r--r--
)的文件,并想-rw-rw-r--
在运行后将其更改为 664( ):
sudo chmod -664 my_file
Run Code Online (Sandbox Code Playgroud)
文件权限设置为 000( ----------
)。
尝试将权限更改为 000 以外的任何内容似乎不起作用。我在这里缺少什么?
ter*_*don 34
您正在使用-664
,请664
改用。并且在不需要时永远不要使用sudo
。如果这是您的文件,则不需要sudo
:
chmod 644 my_file
Run Code Online (Sandbox Code Playgroud)
当您在模式之前chmod
使用 a运行时-
,您将删除该模式。见man chmod
(强调我的):
运算符 + 使选定的文件模式位添加到每个文件的现有文件模式位中;- 导致它们被移除;和 = 导致它们被添加并导致未提及的位被删除,但目录的未提及的设置用户和组 ID 位不受影响。
数字是:
因此,具有777
权限的文件意味着每个人都有权执行所有三项操作,因为 1 + 2 + 4 = 7,因此将权限设置为 7 意味着允许读取、写入和执行。
如果您从模式为 的文件开始777
:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
Run Code Online (Sandbox Code Playgroud)
现在运行chmod -644
,您将删除这些位644
,并最终得到一个模式为133
:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
Run Code Online (Sandbox Code Playgroud)
那是因为您从所有者的权限中删除了 6 个(读取 (4) + 写入 (2)),只留下了 1 个(执行)集,以及从组和其他权限中删除了 4 个(读取)。结果是文件的所有者只有执行 (1) 权限,其余文件具有写入和执行(您取消设置 4,保留 1 和 3)权限。
因为您的文件可能对新文件具有默认权限,所以644
,当您运行 时chmod -644 my_file
,您删除了所有设置的权限位,并获得了一个对任何人都没有权限的文件。
$ ls -l my_file
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file
---------- 1 terdon terdon 0 May 28 13:45 my_file
Run Code Online (Sandbox Code Playgroud)