Linux命令之chmod
1.chmod介绍
chmod(change mode)命令是用来更改文件(linux系统中一切一切皆为"文件")权限的命令。在linux系统中,我们使用chmod命令主要用来更改文件或目录的权限,以达到变更文件或目录权限的效果。
在linux系统中,文件或目录的权限有三种:所有者User(简称:u)、所属组Group(简称:g)、其它用户Other(简称:o),见下图:
使用chmod命令更改文件或目录的权限时,只有文件或目录的所有者或root管理员才能有权限执行。在linux系统中,User,Group、Other(简称UGO)中rwx权限所对应八进制数字模式,见下图。
除了使用"字符表示法"对文件或目录授权外,我们也可以使用"数字表示法"进行授权。
2.chmod用法
chmod [参数] [模式] [文件|目录]
模式:权限设定字串,格式如下:
[ugoa...][[+-=][rwx]...][,...]
所有者User,简称:u
所属组Group,简称:g
其它用户Other,简称:o
a,代表ugo
+表示增加权限
-表示减少权限
=表示唯一授权权限
r:对应数值4
w:对应数值2
x:对应数值1
-:对应数值0 (没有权限)
E.g:
rwx 表示:7
rw- 表示:6
r-- 表示:4
参数 | 说明 |
-R | 递归更改文件或/和目录 |
-v | 显示变更权限的详细过程 |
3.实例
3.1对ztj.sh文件所有者授权写入,读取,执行权限
命令:
chmod u+rwx ztj.sh
or
chmod 700 ztj.sh
3.2对ztj.sh文件所有者取消授权写入,读取,执行权限
命令:
chmod u-rwx ztj.sh
or
chmod 000 ztj.sh
3.3对ztj.sh文件所属组授权写入,读取,执行权限
命令:
chmod g+rwx ztj.sh
or
chmod 070 ztj.sh
3.4对ztj.sh文件所属组取消授权写入,读取,执行权限
命令:
chmod g-rwx ztj.sh
or
chmod 000 ztj.sh
3.5对ztj.sh文件其它用户授权写入,读取,执行权限
命令:
chmod o+rwx ztj.sh
or
chmod 000 ztj.sh
3.6对ztj.sh文件其它用户取消授权写入,读取,执行权限
命令:
chmod o-rwx ztj.sh
or
chmod 000 ztj.sh
3.7对ztj目录所有者授权写入,读取,执行权限
命令:
chmod u+rwx ztj/
or
chmod 700 ztj/
3.8对ztj目录所有者取消授权写入,读取,执行权限
命令:
chmod u-rwx ztj/
or
chmod 000 ztj/
3.9对ztj目录所有者、所属组、其它用户授权写入,读取,执行权限
命令:
chmod ugo+rwx ztj/
or
chmod a+rwx ztj/
or
chmod 777 ztj/
3.10对ztj目录所有者、所属组、其它用户取消授权写入,读取,执行权限
命令:
chmod ugo-rwx ztj/
or
chmod a-rwx ztj/
or
chmod 000 ztj/
3.11对ztj目录及其下所有文件所有者、所属组、其它用户授权写入,读取,执行权限
命令:
chmod -R ugo+rwx ztj/
or
chmod a+rwx ztj/
or
chmod 777 ztj/
4.特殊权限
除了传统的读r、写w、执行x以外,还有Linux的文件特殊权限,他们分别是Set UID、Set GID、Sticky Bit三种,也就是多出来的那一位,功能介绍如下(了解即可:):
4.1SUID
权值:4
符号:x --> s
当x权限不存在时,s变为S
特点:仅对可执行文件有效。
功能:可执行文件执行时,拥有文件所有者的权限。
命令:
chmod 4xxx
E.g:如果/usr/bin/passwd 权限变更为4755,对应的普通用户,获得了root权限,可以修改普通用户平常根本想都不敢想、无法修改的root拥有的/etc/shadow系统文件(如果/usr/bin/passwd 权限为755,则普通用户执行passwd的时候,会出现无权限修改root own的/etc/shadow文件的提示)
1./usr/bin/passwd权限
2.切换至普通用户执行passwd
发现ztj用户可以执行passwd命令
3.root管理员用户变更/usr/bin/passwd权限为755
4. 切换至普通用户执行passwd
发现ztj用户不再可以执行passwd命令
总结:SUID使普通用户可以获取/usr/bin目录下二进制命令的root管理员执行权限
4.2SGID
权值:2
符号:x --> s
当x权限不存在时,s变为S
特点:文件、目录都有效。
功能:对于可执行文件,相同用户组的,拥有文件所有者权限;对于目录,相同用户组的,在其目录下创建的文件自动属于父目录的属组。
命令:
chmod 2xxx
E.g:SGID多用在特定的多人团队的项目开发上,在系统中用得较少
1.查看ztj目录权限
2.进入ztj目录,创新任意文件
文件ztj.sh属组为ztj
3.取消SGIT,创建任意文件
文件ztj.sh属组恢复为root
总结:
当某个目录设置SGIT后,在该目录中新建的文件不再是以往创建文件的默认所属组,用户在该目录创建的目录或文件的所属组与该目录的所属组一致。
4.3SBit
权值:1
符号:x --> t
当x权限不存在时,t变为T
特点:仅对目录有效。
功能:当目录SBit=1,权限变为rwxrwxrwt时,在此文件夹下删除、重命名、移动的操作只允许是对应创建者用户或root(如果SBit=0,则用户间创建的文件可以互相删除,互相伤害)。
命令:
chmod 1xxx
E.g:/tmp 权限为1777,该目录下不同用户间不可互删文件,只能删自己的(如果/ztj权限为777,则ztj目录下不同用户间可互删文件)
1.设置/tmp/test目录sticky bit权限
2.在目录test下,使用用户ztj创建ztj.txt文件
3.变更ztj.txt文件属组为utest1
4.验证utest1不能删除ztj.txt
5.验证用户ztj能够删除ztj.txt文件
6.取消/tmp/test目录sticky bit权限
7.验证utest1用户可以删除test.txt文件
总结:
SBIT作用:限制删除权限,用户只能删除自己的文件
4.4特殊权限取消命令(SUID,SGID,SBit)
命令:
chmod 00xxx ztj/
E.g:
chmod 00777 ztj/