首页 > 代码库 > chmod 命令参考

chmod 命令参考

-rw------- (600) -- 只有属主有读写权限。

-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。

-rwx------ (700) -- 只有属主有读、写、执行权限。

-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。

-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。

-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。

-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做

777对应了9位分别是属主有读、写、执行权限;和属组用户和其他用户的读、写、执行权限。

允许某个权限就置1,777(8进制)=111111111(2进制),9位都置一,就是所有权限都开 命令为:chmod 700 a.c

 

使用 chmod 命令更改文件的权限,使用 chown 来更改文件的归属。例如:

chmod 755 xxx

chmod a+x xxx

chown user:group xxx 用来更改文件的归属用户,也可以同时更改其归属群组

chgrp group xxx 用来更改文件的归属群组

上面命令中的 755 和 a+x 是两种类型的表达式

我们将后面章节中详细介绍 权限管理 用户管理

执行命令的权限

有一些命令,普通用户也可以执行,但是只有root用户才能执行成功,这是为什么呢?

例如在系统中增加一个新用户 useradd

ls -l /usr/sbin/useradd

可以看到:

-rwxr-xr-x 1 root root 56156 2006-04-03 21:37 /usr/sbin/useradd

明明所有的用户都可以执行嘛?

这是因为, useradd 命令是修改 /etc/passwd 文件的一个工具,来看看这个文件:

ls -l /etc/passwd

-rw-r--r-- 1 root root 1835 2006-06-24 17:58 /etc/passwd

原来只有root用户才能写入修改结果,非root用户执行 useradd 命令当然不会有结果。

 

a+x 给所有用户增加可执行权限

go-wx 将归属群组和其它用户的可写、可执行权限去掉

u=rwx 归属用户具有可读、可写、可执行权限

 

 

chown   修改文件所属组

 

chown <归属用户>[:归属群组] <文件|目录>

更改文件的归属用户。可以使用用户名或者UID

-R 递归              -v 显示过程                -c 类似 -v ,仅显示更改部分

--reference=<参考文件或目录> 以指定文件为参考更改权限

示例:

chown user:admin path                   chown -R user.admin path              chown user path

chgrp <归属群组> <文件|目录>

更改文件的归属群组。可以使用群组名或者GID

参数同上

SUID、SGID、Sticky bit

某些情况下,需要以可执行文件归属用户的身份执行该文件,可以为该文件设置SUID。同样,设置SGID能够以该文件归属群组的身份执行它。

例如:用户自行设定密码。出于安全方面的考虑, /etc/shadow 只能由root用户直接修改。

-rw------- root root /etc/shadow

这个时候,可以为程序 /usr/bin/passwd

设置SUID,当普通用户执行“passwd”命令时,便能够以该程序归属用户root的身份修改 /etc/shadow

文件。而“passwd”程序自身带有身份验证机制,不能通过验证时拒绝执行,从而保证了安全。

ls -l /usr/bin/passwd

-r-s--x--x root root /usr/bin/passwd

我们发现,归属用户的可执行权限位使用 s ,表示SUID。同样,归属群组的可执行权限位使用 s ,表示SGID。任何用户或群组都拥有

其它用户 的权限,所以不需要以 其它用户 身份执行文件,其它用户的可执行权限位便不会出现 s 。该权限位可能出现的属性为 t

,也就是粘着位Sticky bit。

ls -ld /tmp

drwxrwxrwt root root /tmp

粘着位表示任何用户都可能具有写权限,但只有该归属用户或root用户才能够删除

SUID、SGID、Sticky bit也可以像权限一样,使用一个八进制数表示,如下:

4 SUID

2 SGID

1 Sticky bit

通过在“chmod”命令中使用4个八进制数的表达式,如 4755 ,用第一位表示SUID、SGID、或Sticky bit,便能够为文件设置这些特殊权限。示例:

chmod -R 4755 path

lsattr [路径]

查看文件的特殊属性

-a 全部显示                -d 只显示目录            -R 递归

特殊属性包括:

a:仅供附加用途                 b:不更新最后存取时间              c:压缩后存放            d:排除在倾倒操作之外

i:不得任意更动文件或目录                s:保密性删除文件或目录          S:即时更新文件或目录

u:预防以外删除

chattr +|-|=<属性> <路径>

更改文件特殊属性

-R 递归              -V 显示过程

 

chmod 命令参考