一、rwxrwxrwx 777
在 Unix 和 Linux 的各种操作系统下,每个文件(文件夹也被看作是文件)都按读、写、运行设定权限。例如用ls -l
命令列文件表时,得到如下输出:
-rw-r--r-- 1 mchopin users 2254 2006-05-20 13:47 uu.htm
- 从第二个字符起rw-是说用户 mchopin 有读、写权,没有运行权。
- 接着的r--表示用户组 users 只有读权限,没有运行权。
- 最后的r--指其他人 others 只有读权限,没有写权和运行权。
这是系统默认设置,可以改写 uu.htm,同组的人和其他人只有权读,没人有权运行,因为只是一个 html 文件,不必运行。这在 Novell 的 directory services 之前很先进。
读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1
。所以,上面的例子中的rw-r--r--
用数字表示成644。
反过来说 777 就是 rwxrwxrwx,意思是该登录用户(可以用命令id查看)所在的组和其他人都有最高权限。
chmod o-r uu.htm
命令改权限,o-r 是 others 的权限中减掉读。结果是
-rw-r----- 1 bu users 2254 2006-05-20 13:47 uu.htm
如果用命令chmod 777 uu.htm
,结果是
-rwxrwxrwx 1 bu users 2254 2006-05-20 13:47 uu.htm
任何人都有读、写、运行三项权限。
二、指令名称 : chmod
使用权限 : 所有使用者
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以借以控制档案如何被他人所存取。
参数格式 :
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
① u : 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
② + : 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
③ r : 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 -c : 若该档案权限确实已经更改,才显示其更改动作
④ -f : 若该档案权限无法被更改也不要显示错误讯息
⑤ -v : 显示权限变更的详细资料
⑥ -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
⑦ --help : 显示辅助说明
⑧ --version : 显示版本
三、示例
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
①将档案 file.txt 设为所有人皆可读取chmod ugo+r file.txt
②将档案 file.txt 设为所有人皆可读取chmod a+r file.txt
③将档案 file.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入chmod ug+w,o-w file.txt file2.txt
④将 ex1.py 设定为只有该档案拥有者可以执行chmod u+x ex1.py
⑤将目前目录下的所有档案与子目录皆设为任何人可读取chmod -R a+r *
⑥此外 chmod 也可以用数字来表示权限如chmod 777 file
。
⑦语法为chmod abc file
。其中a、b、c各为一个数字,分别表示User、Group、及Other的权限。
⑧chmod a=rwx file
和chmod 777 file
效果相同。
⑨chmod ug=rwx,o=x file
和chmod 771 file
效果相同。
⑩若用chmod 4755 filename
可使此程式具有 root 的权限。