Linux 继承自 Unix,自设计之初就是多用户的系统。我们用实际的例子说明一下。
~/test$ ls -l
-rw-r--r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
显示的信息分别表示(按列): 文件属性、链接数(inode)、文件拥有者(owner)、文件所属用户组(group)、文件大小、最新修改日期、文件(目录)名。
1. 文件属性
文件或目录有 10 个基本属性,第 1 个表示类型,后 9 个分为三组,分别表示 owner、group、others 的执行属性。
文件类型: [d] 目录; [-] 文件; [l] 链接文件; ...
执行属性: [r] 可读; [w] 可写; [x] 可执行。
-rw-r--r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
表示文件拥有者(owner)可读写(rw)、用户组(group)和其他用户(other)只读(r)。属性还可以用数字表示 r = 4, w = 2, x = 1,比如 rw-r--r-- = 644。
~/test$ ls -l
-rw-r--r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
~/test$ chmod 664 ./a.txt
~/test$ ls -l
-rw-rw-r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
当然,我们也可以用更直观的参数。
~/test$ chmod a+w a.txt # 全部设置为可写
~/test$ ls -l
-rw-rw-rw- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
~/test$ chmod ug=rw,o=r a.txt # 拥有人和组可读写, 其他只读
~/test$ ls -l
-rw-rw-r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
~/test$ chmod u=rw,g-w a.txt # 拥有人可读写, 组移除写
~/test$ ls -l
-rw-r--r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
参数说明:
(1) u = owner; g = group; o = other; a = u + g + o
(2) [=] 设置; [-] 移除; [+] 增加。
对于目录而言, r 表示读取目录结构的权限,w 表示可以在目录里创建、删除、移动文件和子目录,x 表示可以进入该目录。
~/test$ ls -l
-rw-r--r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
~/test$ chmod a-x ./b # 移除 x
~/test$ ls -l
-rw-r--r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drw-r--r-- 2 yuhen yuhen 4096 2009-08-03 20:08 b
~/test$ cd b # 无法进入该目录
-bash: cd: b: Permission denied
~/test$ chmod a+x b # 恢复
~/test$ ls -l
-rw-r--r-- 1 yuhen yuhen 0 2009-08-03 20:07 a.txt
drwxr-xr-x 2 yuhen yuhen 4096 2009-08-03 20:08 b
~/test$ cd b # 正确进入
chmod 支持 -R 参数对目录下所有文件和子目录进行递归修改。
除了上述的基本属性外,还可以用 chattr 和 lsattr 设置和显示隐藏属性。