【任务说明】
由于不可能为每个用户都单独提供完全独立、相互隔离的文件系统,多用户操作系统必须提供一种安全的访问控制机制,使得用户既能和其他用户共享某些文件,又能保证各个用户的文件不会被非法存取或破坏。因而Linux对文件所有者、用户和其他用户,分别设置了存取控制权限,也即读、写和执行权限。
文件的权限有两种表示方法,一种是符号化表示法,另一种是十进制数字表示法。 符号化表示法使用英文字母r(Read)、w(Write)和x(execute)来分别表示读、写 和执行权限。用符号化表示法表示的文件权限共九位,每三位为一组,每一组都是rwx的三个符号与“-”符号的组合,其中“-”符号表示没有该权限。每组分别代表文件所属用户、同组用户和其他非本组用户对该文件的读(r)、写(w)、执行权限(x)。
本任务的主要目的是要*灵活的管理Linux系统中的文件权限。
【任务实施】
由于不可能为每个用户都单独提供完全独立、相互隔离的文件系统,多用户操作系统必须提供一种安全的访问控制机制,使得用户既能和其他用户共享某些文件,又能保证各个用户的文件不会被非法存取或破坏。因而Linux对文件所有者、用户和其他用户,分别设置了存取控制权限,也即读、写和执行权限。
文件的权限有两种表示方法,一种是符号化表示法,另一种是十进制数字表示法。 符号化表示法使用英文字母r(Read)、w(Write)和x(execute)来分别表示读、写 和执行权限。用符号化表示法表示的文件权限共九位,每三位为一组,每一组都是rwx的三个符号与“-”符号的组合,其中“-”符号表示没有该权限。每组分别代表文件所属用户、同组用户和其他非本组用户对该文件的读(r)、写(w)、执行权限(x)。
本任务的主要目的是要*灵活的管理Linux系统中的文件权限。
【任务实施】
第一步:认识文件权限说明
执行【ls -l】或【ll】命令后显示的结果如图所示:
最前面的第2~10个字符是用来表示一般权限。第一个字符一般用来区分文件和目录:d表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。-:表示这是一个普通的文件。l: 表示这是一个符号链接文件,实际上它指向另一个文件。b.c:分别表示区块设备和其他的外围设备,是特殊类型的文件。s.p:这些文件关系到系统的数据结构和管道,通常很少见到。
第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如表所示:
下面以表举例说明:
读、写、进入目录
进入该目录,却无法读取任何数据
进入该目录,却无法读取任何数据
每个用户都拥有自己的专属目录,通常集中放置在/home目录下,这些专属目录的默认权限为rwx------:表示目录所有者本身具有所有权限,其他用户无法进入该目录。执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。
文件和目录的权限表示,是用rwx这三个字符来代表所有者,用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。我们把r、w、x分别用数字4、2、1来表示,权限数字之和即可代表对应的权限:
r: 对应数值4;
w: 对应数值2;
x:对应数值1;
-:对应数值0;
rwx合起来就是4+2+1=7,一个rwxrwxrwx权限全开放的文件,数值表示为777;而完全不开放权限的文件“---------”其数字表示为000。下面以表2-3为例说明字母所对应的数字权限关系。
-rwx------
4+2+1,0+0+0,0+0+0
700
-rwxr--r--
4+2+1,4+0+0,4+0+0
744
-rw-rw-r-x
4+2+1,4+2+0,4+0+1
665
drwx―x―x
4+2+1,0+0+1,0+0+1
711
drwx------
4+2+1,0+0+0,0+0+0
700
第2步:使用chmod改变文件或目录的访问权限
在文本模式下,可执行chmod命令去改变文件和目录的权限。
【chmod 777 123.txt】把123.txt 文件的权限设置为777。
【chmod 777 /home/user】仅把/home/user目录的权限设置为rwxrwxrw。
【chmod -R 777 /home/user】表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx。
【chmod u=rwx,g=rx,o=rx 123.txt】把123.txt文件设置为755的权限。
第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如表所示:
下面以表举例说明:
读、写、进入目录
进入该目录,却无法读取任何数据
进入该目录,却无法读取任何数据
每个用户都拥有自己的专属目录,通常集中放置在/home目录下,这些专属目录的默认权限为rwx------:表示目录所有者本身具有所有权限,其他用户无法进入该目录。执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。
文件和目录的权限表示,是用rwx这三个字符来代表所有者,用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。我们把r、w、x分别用数字4、2、1来表示,权限数字之和即可代表对应的权限:
r: 对应数值4;
w: 对应数值2;
x:对应数值1;
-:对应数值0;
rwx合起来就是4+2+1=7,一个rwxrwxrwx权限全开放的文件,数值表示为777;而完全不开放权限的文件“---------”其数字表示为000。下面以表2-3为例说明字母所对应的数字权限关系。
-rwx------
4+2+1,0+0+0,0+0+0
700
-rwxr--r--
4+2+1,4+0+0,4+0+0
744
-rw-rw-r-x
4+2+1,4+2+0,4+0+1
665
drwx―x―x
4+2+1,0+0+1,0+0+1
711
drwx------
4+2+1,0+0+0,0+0+0
700
第2步:使用chmod改变文件或目录的访问权限
在文本模式下,可执行chmod命令去改变文件和目录的权限。
【chmod 777 123.txt】把123.txt 文件的权限设置为777。
【chmod 777 /home/user】仅把/home/user目录的权限设置为rwxrwxrw。
【chmod -R 777 /home/user】表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx。
【chmod u=rwx,g=rx,o=rx 123.txt】把123.txt文件设置为755的权限。
第二步:使用【chmod】命令改变文件或目录的访问权限
在文本模式下,可执行【chmod】命令改变文件和目录的权限
【chmod 777 123.txt】把123.txt 文件的权限设置为777。
【chmod 777 /home/user】仅把/home/user目录的权限设置为rwxrwxrw。
【chmod -R 777 /home/user】表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx。
【chmod u=rwx,g=rx,o=rx 123.txt】把123.txt文件设置为755的权限。
这里的u=rwx代表user(文件的拥有者)的权限等于rwx,g=rx代表group(所属组)的权限等于rx,o=rx代表other(其他人)的权限等于rx。
第3步:更改文件的所有者以及所属组
文件与目录不仅可以改变权限,使用chown命令还可以改变其所有者及所属用户组。
先使用【touch 123.txt】命令创建一个文件后再执行【ls –l】或【ll】命令看看文件的情况,如图所示。
从上图所示可以看到123.txt文件的所有者为root,所属用户组为root。
执行下面命令,把123.txt文件的所有权转移到用户yhy,如图所示。
【chown yhy 123.txt】把123.txt文件的拥有者改为yhy用户。
【 ls –l】查看文件详细系统。
要改变所属组,可使用【chown :yhy 123.txt】命令把123.txt文件的所属组改为yhy ,然后使用【ls –l】命令查看文件详细系统,如图所示。
要修改目录的权限,使用-R参数就可以了,方法和前面一样。
除了可以通过【chown】命令改变文件的拥有者以及所属组外,还可以通过【chgrp】改变文件的所属组。
【chgrp yangs /etc/123.txt】修改/etc/a.txt属组为yangs。
【chmod yhy.zck a.txt】或【chmod yhy:zck a.txt】把a.txt文件的拥有者改为yhy,所属组改为zck。
当然,前提条件是yhy用户以及zck用户组需要存在在系统中。然后可以【ls -l】看一下执行后的结果。
第4步:认识umask
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile./etc/bashrc.$ [HOME]/.bash_profile.$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。具体取决于Linux发行版,
默认的权限可用【umask】命令修改,用法非常简单,只需执行【umask 777】 命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推,如图所示。
如上图所示,当我们执行【umask 777】 后,再建立的文件夹的权限默认为000。
通常root帐号搭配【umask】命令的数值为022.027和 077,普通用户则是采用002,这样所产生的权限依次为755、750、700和775。用户登录系统时,用户环境就会自动执行【umask】命令来决定文件、目录的默认权限。
第5步:识别特殊权限
Linux引入suid、sgid、sticky这三种特殊权限,能够更加方便、有效和安全地控制文件。
当在一个目录或文件上加入suid特殊权限时,如过原来目录或文件的属主具有x(执行)权限,就会用小写的s来替代x;如果原来文件或目录不具有x(执行)权限,就会用大写的S来代替x。
同样,sgid、sticky和suid相同,如过原来目录或文件的属组具有x(执行)权限,就会用小写的s来替代x;如果原来文件或目录不具有x(执行)权限,就会用大写的S来代替X。
如果在一个文件或目录上加入sticky权限时,若原文件或目录的其他用户有x(可执行)权限时,就用小写t代替x;如果原文件或目录没有x权限时,就用大写T替代x权限。
可以chmod的字符或数字的方式修改特殊权限,下例以数字方式实现,如图所示。
从上图的操作结果来看,对于test1这个文件,属主、属组、其他人都没执行权限,其权限用数字表示为644,通过【chmod 7644 test1】命令都加上特殊权限,然后再通过【ll】命令查看,发现属主、属组、其他用户的执行权限变为S、S、T。
对于test2这个文件,属主、属组、其他人都执行权限,其权限用数字表示为755,通过【chmod 7755 test1】命令都加上特殊权限,然后再通过【ll】命令查看,发现属主、属组、其他用户的执行权限变为s、s、t。
备注:特殊权限对可执行文件的作用:
在一个目录上设置了sticky特殊权限,只有文件的所有者和用户才能删除该目录的文件,而不理会属组和其他用户的写权限。
在一个目录上设置sgid特殊权限,则只要是同组成员,都可以在此目录查看、创建、删除文件。
经常会对目录设置sticky和suid权限以方便管理。即同组成员可以查看和写入本目录下的各个文件,却不能删除。
从安全方面来讲,对于特殊权限,最好不要设置,不然会带来很严重的安全问题。
第6步:识别文件颜色
从上图中,我们可以看出,在Linux中,文件的颜色都是有含义的。其中, Linux中文件名颜色不同,代表文件类型不一样。如下所示:
浅蓝色:表示链接文件;
灰色:表示其他文件;
绿色:表示可执行文件;
红色:表示压缩文件;
蓝色:表示目录;
红色闪烁:表示链接的文件有问题了;
黄色:表示设备文件,包括block,char,fifo。
用【dircolors -p】命令可以看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等的定义。
【touch a.txt】创见的一般文件,文件颜色为白色。
【chmod 775 a.txt】增加可执行权限后,文件颜色变为为绿色。
【ln /etc/abc.txt 345.txt 】执行该命令后,文件颜色变为为天蓝色(建立345.txt为/etc/abc.txt的快捷方式)。
第7步:总结常用的几个命令
CentOS中常用的有关权限的几个命令以及释义如下,熟悉他们会让你的运维会事半功倍。
【chmod u+x,g-x,o=x test】 所有者加上执行权限,组成员减少执行权限,其他成员设置为执行权限。
【chmod –R 766 ./】修改当前目录权限,要求里面的所有文件和文件夹的权限修改为766。
【chown user1:G3 zip.zip】修改zip.zip的所有者为user1,所有组为G3。
【umask】查看当前umask参数。
【touch /home/dir1】在/home目录下创建新目录 dir1。
【ll /home/dir1】显示目录dir1的详细信息,记录目录的权限信息。
【umask 066】改变umask参数为066。
【chmod g+w /home/dir1】为dir1的同组用户增加写权限。
【chmod 755 /home/dir1】改变file1的文件权限为755。
【chmod 777 /home/user】仅把/home/user目录的权限设置为rwxrwxrw。
【chmod -R 777 /home/user】表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx。
【chmod u=rwx,g=rx,o=rx 123.txt】把123.txt文件设置为755的权限。
这里的u=rwx代表user(文件的拥有者)的权限等于rwx,g=rx代表group(所属组)的权限等于rx,o=rx代表other(其他人)的权限等于rx。
第3步:更改文件的所有者以及所属组
文件与目录不仅可以改变权限,使用chown命令还可以改变其所有者及所属用户组。
先使用【touch 123.txt】命令创建一个文件后再执行【ls –l】或【ll】命令看看文件的情况,如图所示。
从上图所示可以看到123.txt文件的所有者为root,所属用户组为root。
执行下面命令,把123.txt文件的所有权转移到用户yhy,如图所示。
【chown yhy 123.txt】把123.txt文件的拥有者改为yhy用户。
【 ls –l】查看文件详细系统。
要改变所属组,可使用【chown :yhy 123.txt】命令把123.txt文件的所属组改为yhy ,然后使用【ls –l】命令查看文件详细系统,如图所示。
要修改目录的权限,使用-R参数就可以了,方法和前面一样。
除了可以通过【chown】命令改变文件的拥有者以及所属组外,还可以通过【chgrp】改变文件的所属组。
【chgrp yangs /etc/123.txt】修改/etc/a.txt属组为yangs。
【chmod yhy.zck a.txt】或【chmod yhy:zck a.txt】把a.txt文件的拥有者改为yhy,所属组改为zck。
当然,前提条件是yhy用户以及zck用户组需要存在在系统中。然后可以【ls -l】看一下执行后的结果。
第4步:认识umask
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile./etc/bashrc.$ [HOME]/.bash_profile.$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。具体取决于Linux发行版,
默认的权限可用【umask】命令修改,用法非常简单,只需执行【umask 777】 命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推,如图所示。
如上图所示,当我们执行【umask 777】 后,再建立的文件夹的权限默认为000。
通常root帐号搭配【umask】命令的数值为022.027和 077,普通用户则是采用002,这样所产生的权限依次为755、750、700和775。用户登录系统时,用户环境就会自动执行【umask】命令来决定文件、目录的默认权限。
第5步:识别特殊权限
Linux引入suid、sgid、sticky这三种特殊权限,能够更加方便、有效和安全地控制文件。
当在一个目录或文件上加入suid特殊权限时,如过原来目录或文件的属主具有x(执行)权限,就会用小写的s来替代x;如果原来文件或目录不具有x(执行)权限,就会用大写的S来代替x。
同样,sgid、sticky和suid相同,如过原来目录或文件的属组具有x(执行)权限,就会用小写的s来替代x;如果原来文件或目录不具有x(执行)权限,就会用大写的S来代替X。
如果在一个文件或目录上加入sticky权限时,若原文件或目录的其他用户有x(可执行)权限时,就用小写t代替x;如果原文件或目录没有x权限时,就用大写T替代x权限。
可以chmod的字符或数字的方式修改特殊权限,下例以数字方式实现,如图所示。
从上图的操作结果来看,对于test1这个文件,属主、属组、其他人都没执行权限,其权限用数字表示为644,通过【chmod 7644 test1】命令都加上特殊权限,然后再通过【ll】命令查看,发现属主、属组、其他用户的执行权限变为S、S、T。
对于test2这个文件,属主、属组、其他人都执行权限,其权限用数字表示为755,通过【chmod 7755 test1】命令都加上特殊权限,然后再通过【ll】命令查看,发现属主、属组、其他用户的执行权限变为s、s、t。
备注:特殊权限对可执行文件的作用:
在一个目录上设置了sticky特殊权限,只有文件的所有者和用户才能删除该目录的文件,而不理会属组和其他用户的写权限。
在一个目录上设置sgid特殊权限,则只要是同组成员,都可以在此目录查看、创建、删除文件。
经常会对目录设置sticky和suid权限以方便管理。即同组成员可以查看和写入本目录下的各个文件,却不能删除。
从安全方面来讲,对于特殊权限,最好不要设置,不然会带来很严重的安全问题。
第6步:识别文件颜色
从上图中,我们可以看出,在Linux中,文件的颜色都是有含义的。其中, Linux中文件名颜色不同,代表文件类型不一样。如下所示:
浅蓝色:表示链接文件;
灰色:表示其他文件;
绿色:表示可执行文件;
红色:表示压缩文件;
蓝色:表示目录;
红色闪烁:表示链接的文件有问题了;
黄色:表示设备文件,包括block,char,fifo。
用【dircolors -p】命令可以看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等的定义。
【touch a.txt】创见的一般文件,文件颜色为白色。
【chmod 775 a.txt】增加可执行权限后,文件颜色变为为绿色。
【ln /etc/abc.txt 345.txt 】执行该命令后,文件颜色变为为天蓝色(建立345.txt为/etc/abc.txt的快捷方式)。
第7步:总结常用的几个命令
CentOS中常用的有关权限的几个命令以及释义如下,熟悉他们会让你的运维会事半功倍。
【chmod u+x,g-x,o=x test】 所有者加上执行权限,组成员减少执行权限,其他成员设置为执行权限。
【chmod –R 766 ./】修改当前目录权限,要求里面的所有文件和文件夹的权限修改为766。
【chown user1:G3 zip.zip】修改zip.zip的所有者为user1,所有组为G3。
【umask】查看当前umask参数。
【touch /home/dir1】在/home目录下创建新目录 dir1。
【ll /home/dir1】显示目录dir1的详细信息,记录目录的权限信息。
【umask 066】改变umask参数为066。
【chmod g+w /home/dir1】为dir1的同组用户增加写权限。
【chmod 755 /home/dir1】改变file1的文件权限为755。