首页 > 代码库 > 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 命令参考