Linux系统是典型的多用户系统,不同的用户处于不同的位置,拥有不同的权限,为了保护系统的安全,Linux系统对不同用户对同一文件(包括目录文件)的访问有不同的规定。
在Linux中,我们可以使用ll或ls –l命令来显示文件的属性以及该文件所属的用户和组,如:
[root@www /]# ls -l total 64 dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot ……
例子中bin文件的第一个属性用“d”表示,“d”表示该文件在Linux中为目录文件。
在Linux中,第一个字符代表该文件是目录、文件、链接文件等。
后面的字符以三个为一组,都是“rwx”三个参数的组合。其中[r]代表可读(read),[w]代表可写(write),[x]代表可执行(execute)。需要注意的是,这三个权限的位置不会变,如果没有权限,就会出现减号[-]。
每个文件的属性由左侧第一部分的10个字符决定(如下图所示)。
从左到右,分别用数字0~9表示。
位 0 决定文件类型,位 1-3 决定所有者(文件的所有者)对文件的权限。
第 4-6 位决定了所属组(与所有者同组的用户)对文件的权限,第 7-9 位决定了其他用户对文件的权限。第 1、4、7 位表示读权限,如果用“r”字符表示,则有读权限,如果用“-”字符表示,则无读权限。
第2、5、8位表示写权限,如果用“w”字符表示,则有写权限,如果用“-”字符表示,则没有写权限。第3、6、9位表示可执行权限,如果用“x”字符表示,则有执行权限,如果用“-”字符表示,则没有执行权限。
Linux 文件所有者和组
[root@www /]# ls -l total 64 drwxr-xr-x 2 root root 4096 Feb 15 14:46 cron drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql ……
对于一个文件来说,它有一个特定的所有者,即拥有该文件所有权的用户。
同时,在Linux系统中,用户是按照组来划分的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为与文件所有者同组的用户、其他用户。
因此Linux系统根据文件所有者、与文件所有者同组的用户、其他用户定义了不同的文件访问权限。
上面例子中,mysql文件是一个目录文件,它的所有者和组都是mysql,所有者有读、写、执行的权限,和所有者同组的其他用户有读、执行的权限,其他用户也有读、执行的权限。
对于root用户来说,文件权限一般对其没有影响。
更改文件属性
1. chgrp:改变文件组
语法:
chgrp [-R] 属组名 文件名
参数选项
2.chown:改变文件所有者,同时可以改变文件组
语法:
chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名
进入/root目录(~),将install.log的所有者改为bin账户:
[root@www ~] cd ~ [root@www ~]# chown bin install.log [root@www ~]# ls -l -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将 install.log 的所有者和组改回 root:
[root@www ~]# chown root:root install.log [root@www ~]# ls -l -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
3. chmod:更改9个文件属性
Linux文件属性的设置方式有两种,一种是数字,一种是符号。
Linux文件有九种基本权限,即所有者/组/其他,每个权限都有各自的读/写/执行权限。
我们再来回顾一下上面刚刚提到的数据:文件权限字符为:“-rwxrwxrwx”,这九个权限是三个一组的!其中,我们可以用数字来表示每一个权限,各个权限的分数对照表如下:
每个身份(owner/group/others)的三个权限(r/w/x)的分数需要累计,例如当权限为:[-rwxrwx—]时文件的属性有,分数为:
所以当我们稍后更改权限时,该文件的权限编号将为770!更改权限的chmod命令的语法如下:
chmod [-R] xyz 文件或目录
选项和参数:
例如想开启.bashrc文件的所有权限,命令如下:
[root@www ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod 777 .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
如果我们想将权限改为 -rwxr-xr– 怎么办?那么权限分数就变成了 [4+2+1][4+0+1][4+0+0]=754。
符号类型更改文件权限
还有一种更改权限的方法,从前面的介绍我们可以发现,权限基本上有九种:
那么我们就可以用u,g,o来分别表示三个身份的权限啦!
另外a代表all,也就是所有身份,读写权限可以写成r,w,x,可以参见下表:
奇莫杜
a+(连接)
-(已移除)
=(设置)r
x 文件或目录
如果我们需要设置文件权限为-rwxr-xr–,可以使用chmod u=rwx,g=rx,o=r filename来设置:
# touch test1 // 创建 test1 文件 # ls -al test1 // 查看 test1 默认权限 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1 # chmod u=rwx,g=rx,o=r test1 // 修改 test1 权限 # ls -al test1 -rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
如果您想删除权限而不更改其他现有权限,该怎么办?例如,如果您想删除每个人的可执行权限文件的属性有,那么:
# chmod a-x test1 # ls -al test1 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1
暂无评论内容