我在转换用户权限时遇到问题。我想为某些文件/文件夹分配以下权限,但不知道将它们转换成 chmod 可以使用的格式,例如chmod 755.
-rwxrwxrwx
Run Code Online (Sandbox Code Playgroud)
将会?
和
drwxr-xr-x
Run Code Online (Sandbox Code Playgroud)
将会?
最后
-rw-r--r--
Run Code Online (Sandbox Code Playgroud)
将会?
Jac*_*ijm 15
精简版:
权限可以包括:读取(r)、写入(w)、执行(x)
所以权限是用一行三个字符来表示的,比如rwx(给所有权限)
当权限被拒绝时,放置一个“-”,例如:r--仅授予读取权限。
因为有三种类型的用户,我们需要 3 x 3 个字符:
owner | owner group | others
Run Code Online (Sandbox Code Playgroud)
例如rwx rwx rwx给所有类型的用户所有权限。
这些权限可以用八进制编号表示,其中:
read = 4
write = 2
execute = 1
so:
r-- = 4
rw- = 6
rwx = 7
Run Code Online (Sandbox Code Playgroud)例子:
rw- r-- r--
Run Code Online (Sandbox Code Playgroud)
给每个人读权限,只有用户可以写。八进制:
644
Run Code Online (Sandbox Code Playgroud)
(4+2+0 | 4+0+0 | 4+0+0 )
你的例子:
-rwxrwxrwx
Run Code Online (Sandbox Code Playgroud)
可能是 的输出ls -l,其中前面的-意思是它是一个文件。在你的第二个例子中:
drwxr-xr-x
Run Code Online (Sandbox Code Playgroud)
该项目是一个目录 ( d)
s旗帜来自维基百科:
setuid 和 setgid(分别是“执行时设置用户 ID”和“执行时设置组 ID”的缩写)1是 Unix 访问权限标志,允许用户分别以可执行文件的所有者或组的权限运行可执行文件并改变目录中的行为。它们通常用于允许计算机系统上的用户以临时提升的权限运行程序以执行特定任务。
一个例子是passwd( -rwsr-xr-x),它可以代表用户更改写保护的文件。
一个非常不错的描述被发现这里在维基百科上。
t标志(粘滞位)(再次)来自维基百科:
当设置目录的粘滞位时,文件系统以特殊方式处理此类目录中的文件,因此只有文件所有者、目录所有者或 root 用户才能重命名或删除文件。如果没有设置粘滞位,任何对目录具有写入和执行权限的用户都可以重命名或删除包含的文件,而不管文件的所有者如何。
在 Linux 系统上,该t标志在用于文件时会被忽略。
另请参阅维基百科上的此处。
您不需要将它们转换为数字。chmod理解符号就好了,如果你把它们分成用户、组和其他字段。以下是等效的:
chmod 755
chmod u=rwx,g=rx,o=rx
Run Code Online (Sandbox Code Playgroud)
所以给定一组权限,像这样拆分它们:
-rwxrwxrwx == - rwx rwx rwx
drwxr-xr-x == d rwx r-x r-x
-rw-r--r-- == - rw- r-- r--
Run Code Online (Sandbox Code Playgroud)
然后将第一个三元组分配给u,第二个给g和第三个给o,跳过连字符:
chmod u=rwx,g=rwx,o=rwx
chmod u=rwx,g=rx,o=rx
chmod u=rw,g=r,o=r
Run Code Online (Sandbox Code Playgroud)
当两个字段相同时,您可以将它们合并。最后一个chmod将与以下相同:
chmod u=rw,go=r
Run Code Online (Sandbox Code Playgroud)
你也可以使用a(全部)分配给u,g并o在一次,所以第一个就相当于:
chmod a=rwx
Run Code Online (Sandbox Code Playgroud)
现在,有一些特殊的权限:s(的setuid / setgid的)和t(粘滞位)。
这些显示在x通常可见的字段上,因此如果目录具有其他人的粘性位,您会看到 a t(如果存在执行权限) 或 a T(如果不存在执行权限) 。例如,权限/tmp:
drwxrwxrwt
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你需要写t的xt,并且s为rwxs:
chmod u=rwx,g=rwx,o=rwxt
Run Code Online (Sandbox Code Playgroud)
setuid 位意味着当这个文件被执行时,它以拥有该文件的用户身份运行,而不是以执行它的用户身份运行。考虑passwd(用于更改密码):
# stat `which passwd`
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Run Code Online (Sandbox Code Playgroud)
如果我(用户muru)运行passwd,则启动的进程以root的权限运行,而不是我的权限。它通常出现在需要 root 权限才能执行某些操作(例如passwdedits /etc/shadow)的二进制文件上。
目录上的 setgid 位意味着其中任何新创建的文件或目录都会继承组所有权。它通常出现在用于 Web 或 FTP 服务器等的目录上。
粘滞位意味着即使用户对该目录具有写权限,他们也不能移动或重命名其他用户的文件。它通常出现在共享目录中,例如/tmp.
| 归档时间: |
|
| 查看次数: |
8995 次 |
| 最近记录: |