当我们在目录下,使用ls横行输出文件信息,输出结果的第一行就是描述文件和目录权限的编码。
mugpengdembp:tmp mugpeng$ ls -l |head -10
total 264
-rw-r--r-- 1 root wheel 0 Jun 9 10:26 AlTest1.err
-rw-r--r-- 1 root wheel 0 Jun 9 10:26 AlTest1.out
prw-rw-rw- 1 root wheel 0 Jun 2 13:36 F7C71944B49B446081C0603DE90E4855_IN
prw-rw-rw- 1 root wheel 0 Jun 2 13:36 F7C71944B49B446081C0603DE90E4855_OUT
-rw-rw-rw- 1 mugpeng wheel 121278 Jun 9 10:52 adobegc.log
drwx------ 3 mugpeng wheel 96 Jun 2 13:36 com.apple.launchd.CEG3EUNUCk
drwx------ 3 mugpeng wheel 96 Jun 2 13:36 com.apple.launchd.lp7oclZNYU
drwxr-xr-x@ 2 mugpeng wheel 64 Jun 7 19:27 com.google.Keystone
-rw-r--r-- 1 root wheel 106 Jun 9 11:10 com.sangfor.ca.sha
解读权限编码信息
-rw-r--r--
drwx------
其中第一个字符
表示 对象的类型:
- 表示文件
d 表示目录
l 表示链接
c 表示字符型设备
b 表示块设备
n 表示网络设备
之后有3组
的三字符
的编码。每一组定义了三种访问权限:
r 表示对象是可读的
w 表示对象是可写的
x 表示对象是可执行的
若没有某种权限,则会在该权限位置出现单破折号。
这3组
权限分别对应对象的3个安全级别:
对象的属主
对象的属组
系统其他用户
编辑文件权限
umask
使用touch 或mkdir 创建文件,会默认设置文件的权限。
mugpengdembp:test mugpeng$ ls -l
total 0
-rw-r--r-- 1 mugpeng wheel 0 Jun 9 11:20 test1
drwxr-xr-x 2 mugpeng wheel 64 Jun 9 11:20 test2
- 表示文件,d 表示目录。
这些权限从何而来呢?是通过umask
设置的。
我们可以直接输入umask 查看默认权限的设置。
$ umask
0022
其中第一位代表了粘着位 sticky bit
的安全特性。而后面三位表示文件或目录对应的umask 八进制值。
也就是将三字符的权限的3组内容转化为八进制的三个数字。
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
因此对于文件来说,全权限的值为666
,而对目录来说,则是777
。
而我们创建的文件可以转为八进制表示644
。
但是,我们创建的文件权限却和默认的022
不同。
这是因为umask 值只是一个掩码。它会屏蔽掉不想授予权限的文件。因此我们需要将umask 值从对象的全权限值中减掉。如开始的文件权限本来为666
,在umask 为022
下,需要进行减法,因此它的实际权限为644
。
我们可以使用umask xxx
为其指定一个新值。此时创建的文件其权限已更为640
。
$ umask 026
$ ls -l test3
-rw-r----- 1 mugpeng wheel 0 Jun 9 11:41 test3
chmod
chmod 命令可以用来改变文件的权限。
chmod options mode file
mode 参数可以自定义为八进制模式还是符号模式进行安全性设置。默认下为八进制权限码。
-rw-r----- 1 mugpeng wheel 0 Jun 9 11:41 test3
$ chmod 760 test3
-rwxrw---- 1 mugpeng wheel 0 Jun 9 11:41 test3
符号模式安全设置
对于chmod 的符号模式下的安全设置,则略显复杂。
chmod [ugoa] [+-=] [rwxXstugo]
其中
u 表示用户
g 表示组
o 代表其他
a 代表ugo 全部
+ 表示增加权限
- 表示移除权限
= 表示将现有权限修改为后面新值
X 表示若对象是目录或已有执行权限,则赋予执行权限
s 表示运行时重新设置UID 或GID
t 表示保留文件或目录
比如
-rwxrw---- 1 mugpeng wheel 0 Jun 9 11:41 test3
$ chmod o+r test3
-rwxrw-r-- 1 mugpeng wheel 0 Jun 9 11:41 test3
网友评论