1、文件权限(不包括setuid和setgid):####
从左至右4个#表示特殊权限位、用户、用户所在的组、其它组。如果不使用特殊权限位,第一个#应为0,比如0755表示用户的权限值是7,用户所在的组的权限值是5,其它组的权限值是5,无特殊权限。
2、权限值:rwx
1)
r-读取
w-写
x-执行
比如:
rwx表示能同时读取、写和执行
-wx表示能写和执行,不能读取,-表示禁止和不能。
r-x表示能读和执行,不能写
2)
chmod [who] [opt] [mode] 文件/目录名
其中who表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
opt则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
+表示增加权限,-表示减少权限,=表示确定权限
比如:取消文件所有者的写文件权限,给予读的执行权限
%chmod u-w,u+rx myfile
可以把权限位表示成一个三位(二进制位),比如说rwx表示111,111的二进制转换成10进制为7
我们温习一下3位二进制转换成十进制:用*代替一位
***:当其中一个*为0时,表示0,否则第1个*表示2的2次方,为4,第2个*表示2的1次方为2,第1个*表示2的0次方为1
比如:
101=>4+0+1=5 表示r-x
110=>4+2+0=6 表示rw-
我们可以选择使用特殊位外加3个十进制数的方式表示权限
比如:给予用户、用户组和其它用户组的文件读写权限,不能执行
%chmod 0666 myfile
3、特殊权限位,权限位的第1位,用于提权执行一些特权命令
4-setuid,给予生效UID权限 (以其身份运行的用户ID),非真实用户UID
2-setgid,给予生效GID权限,以其身份所在的用户组运行的组ID
1-sticky,设置了该位后,其下的文件只能被文件的所有者删除了
什么是真实用户id,即拥有或启动进程的用户UID,什么是生效UID,即进程以其身份运行的用户ID。
比如普通用户运行passwd,实际是以 root身份修改密码,需要提权。
setgid同setuid一样。
比如:
%chmod 0755 myfile
在未提权的情况下应是
rwx r-x r-x
setuid后
%chmod 4755 myfile
其权限如下:
rws r-x r-x 其中s表示提权。
setgid后
%chmod 2755 mfile
其权限如下:
rwx r-s r-x 其中s表示提权。
sticky后
%chmod 1757 mfile
-rwx r-x rwt 其中t表示sticky。