在linux中,我们可以通过chmod命令对文件的权限进行配置。
背景
首先有两点需要了解:
- 在Unix和Linux的中,每个文件(文件夹也被看作是文件)都有三种权限:读、写、运行。
- 被授予权限的用户身份有三种:当前文件的拥有者,与拥有者属于同组者(同一个group),其他人。
查看权限
输入 ls -l 命令,可以查看当前文件夹下各个文件的权限,例如
1. 方框中第1位字母,表示文件类型:普通文件(-)、目录文件(d)、字符设备文件(c)和块设备文件(b)、符号链接文件(s)等,此处不过多关注;
2. r、w、x代表三种权限:r(read,读),w(write,写),x(execut,运行),- 表示没有;
3. 在第2到第10位的这9个位置上,前三位表示文件所有者的权限,中间三位表示同组用户的权限,最后三位表示其他用户的权限,三个为一组;
解读举例:
上图中abrt文件夹的权限:文件夹所有者(此处是root)拥有读,写,运行的权限,与root同组的用户拥有读和运行的权限,其它用户拥有读和运行的权限。
设置权限
1.通过数字设置权限
例如:
(ps:-R 表示对当前目录下的所有文件(包含子目录)进行相同的权限变更(即以递回的方式逐个变更),此处还有其它参数可选,不常用,此处不赘述)
你可能要问了,755,777,这是无规则的特殊指令吗?类似于华安的9527?
当然不是,对于文件的三种权限,除了上面的r,w,x的表示方式,还有一种用数字代表的方式:读的权限等于4,写的权限等于2,运行的权限等于1。
通过4、2、1的组合,得到以下几种权限:
0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)
以755为例:
1-3位7等于4+2+1,rwx,所有者具有读取、写入、运行权限;
4-6位5等于4+1+0,r-x,同组用户具有读取、运行权限但没有写入权限;
7-9位5,同上,也是r-x,其他用户具有读取、运行权限但没有写入权限。
因此也就有了常用的linux文件权限:
444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx
2.通过字母修改权限
例如
这种修改方式的统一格式为 chmod [ugoa...][[+-=][rwxX]...][,...]
- 第一个位置上,u 表示该文件的拥有者,g 表示与该文件的拥有者属于同组者,o 表示其他人,a 表示这三者所有;
- 第二个位置上,+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限;
- 第三个位置上,r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当 该文件是个子目录 或者 该文件已经被设定过 为可执行。
这儿有一个突出的
chmod 4755 filename可使此程序具有root的权限
例如:
root用户创建了一个上网认证程序netlogin,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令,使其他用户也能运行netlogin。
但是netlogin执行时可能需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。
这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。