我在尝试从所属组 ( ) 删除写入权限并同时g
向其他组 ( ) 添加读取权限时遇到一些麻烦。o
如何从所属组中删除一些权限并为同一行中的其他人添加一些权限?
答案1
注意你的问题的标题:
在同一行上使用数字符号删除和添加权限
通过chmod
GNU coreutils(您可能在 Linux 系统上拥有该工具),您可以使用
$ chmod -020,+004 test.txt
要做到这一点。它的工作方式很明显:中间数字代表组,2
用于写入;最后一位数字表示“其他”,4
用于读取。
能够使用+
或-
与数字模式是一个 GNU 扩展,例如我的 Mac 上基于 BSD 的版本chmod
出现以下错误+004
:
$ chmod +004 test.txt
chmod: Invalid file mode: +004
因此,仅使用符号形式会更简单、更短、更便携并且可能更具可读性:
$ chmod g-w,o+r test.txt
答案2
编辑:看到 ilkkachu 的答案,让我测试了这个,他描述的语法有效,但是我系统上的手册页(我已经检查过)说
可以是要进行的更改的符号表示,也可以是表示新模式位的位模式的八进制数
这就是我写下原始答案的原因(如下)。我猜这是一个新的变化,他们忘记更新手册页了。
原答案如下:
您的问题的标题提到“数字符号”,如果您的意思是将模式指定为八进制数字,那么答案是您无法指定更改,只能指定文件的新模式。
答案3
正如手册页第二行所说:
chmod g-w,o+r file
$手动chmod
CHMOD(1) User Commands CHMOD(1)
NAME
chmod - change file mode bits
SYNOPSIS
chmod [OPTION]... MODE[,MODE]... FILE...
或第一行chmod --帮助
Usage: chmod [OPTION]... MODE[,MODE]... FILE...
答案4
因为您没有具体说明为什么要这样做。我假设您不知道简单地设置所需的模式比一个接一个地翻转标志要快得多(而且更精确)。
用简单的术语解释一下: 为所有读、写和执行标志的设置/取消设置状态指定 3 个数值。为了所有者,团体, 和其他的 一次全部。
为了简单起见,我将坚持使用 3 位数字。 但你应该看看其余的标志当你习惯了这种方式时也是如此。
进一步简化: 这 3 个值是独立的位置性的值,而不是三位数。第一个设置权限所有者,下一项设置权限团体,第三,设置其他人的权限(其他的)。
设置标志: 现在。决定每个数字的含义这是有些人感到困惑的地方,但当你第一次了解它是如何完成的时,它真的很简单。
以下是标志值:
- 1=执行
- 2=写入
- 4=已读
现在,您只需做一个位置一次,并将所需的标志值相加(求和)在一起。如果要设置读取并执行:4+1=5。如果要读写但不执行:4+2=6。
例子
| ### |业主|集团|其他 | | ---| ---| ---| ---| | 755 | 755 RWX |接收 |接收 | | 644 | 644 RW- | R--| R--|
额外信息和更多示例可以在这里查看: https://linux.die.net/Linux-CLI/file-permissions.html
所以如果你想要团体和其他的仅具有读取权限,但所有者应该具有读取和写入权限,您只需这样做chmod 644 FILENAME
这是一个伟大的教程:了解 Linux 文件权限
最后一点提示: 请记住,用户需要目录的执行权限才能列出内容。