权限、所有者和ACL
一:设置文件和目录权限
1:文件和目录权限简介
1)权限对于目录的意义
a:首先要明白的是目录主要的内容是记录文件名列表和子目录列表,而不是实际存放数据的地方。
b:r权限:拥有此权限表示可以读取目录结构列表,也就是说可以查看目录下的文件名和子目录名,注意:仅仅指的是名字。
c:w权限:拥有此权限表示具有更改该目录结构列表的权限,总之,目录的w权限与该目录下的文件名或子目录名的变动有关,注意:指的是名字。具体如下:
l 在该目录下新建新的文件或子目录。
l 删除该目录下已经存在的文件或子目录(不论该文件或子目录的权限如何),注意:这点很重要,用户能否删除一个文件或目录,看的是该用户是否具有该文件或目录所在的目录的w权限。
l 将该目录下已经存在的文件或子目录进行重命名。
l 转移该目录内的文件或子目录的位置。
d:x权限:拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限。且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。
2)权限对于文件的意义
a:也应该明白的是文件是实际含有数据的地方,所以r、w、x权限对文件来说是与其内容有关的。
b:r权限:用于此权限表示可以读取此文件的实际内容。
c:w权限:拥有此权限表示可以编辑、添加或者是修改该文件的内容。但是不包含删除该文件,因为由上面权限对于目录的意义得知删除文件或目录的条件是什么。
d:x权限:表示该文件具有可以被系统执行的权限。文件是否能被执行就是由该权限来决定的,跟文件名没有绝对的关系。
2:设置基本权限
(1) 基本权限简介
[root@localhost ~]# ls -l
总用量 100
-rw-------. 1 root root 1642 7月 1 2016 anaconda-ks.cfg
-rw-r--r--. 1 root root 47276 7月 1 2016 install.log
-rw-r--r--. 1 root root 10033 7月 1 2016 install.log.syslog
drwxr-xr-x. 2 root root 4096 7月 1 2016 公共的
drwxr-xr-x. 2 root root 4096 7月 1 2016 模板
- 10个字符确定不同用户能对文件干什么
- 第一个字符代表文件(-)、目录(d),链接(l)
- 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
- 第一组rwx:文件所有者的权限是读、写和执行
- 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
- 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行
(2) 文件浏览器设置权限
右键需要设置权限的目录或文件属性à权限
(3) 文字设定法设置权限
chmod [who] [+ | - | =] [mode] 文件名
◆操作对象who可以是下述字母中的任一个或它们的组合
u:表示用户,即文件或目录的所有者。
g:表示同组用户,即与文件属主有相同组ID的所有用户。
o:表示其它用户。
a:表示所有用户,它是系统默认值。
◆操作符号
+:添加某个权限。
-:取消某个权限。
=:赋予给定权限,并取消其它所有权限(如果有的话)。
◆设置mode的权限可用下述字母的任意组合
r:可读。
w:可写。
x:可执行。
X:只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。
s:文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的
用户ID位,“g+s”设置组ID位。
t:保存程序的文本到交换设备上。
u:与文件属主拥有一样的权限。
g:与和文件属主同组的用户拥有一样的权限。
o:与其它用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
一个命令行中可以给出多个权限方式,其间用逗号隔开。
(4) 数字设定法设置权限
数字设定法的一般形式为: chmod [mode] 文件名
数字属性的格式应为3个0到7的八进制数,其顺序是(u)(g)(o)文件名,以空格分开的要改变权限的文件列表,支持通配符。 数字表示的权限的含义如下:0001为所有者的执行权限;0002为所有者的写权限;0004为所有者的读权限;0010为组的执行权限;0020为组的写权限;0040为组的读权限;0100为其他人的执行权限;0200为其他人的写权限;0400为其他人的读权限;1000为粘贴位置位;2000表示假如这个文件是可执行文件,则为组ID为位置位,否则其中文件锁定位置位;4000表示假如这个文件是可执行文件,则为用户ID为位置位。
3:设置特殊权限
(1) 特殊权限简介
除了我们前面介绍的rwx权限外,Linux中还有另外三种特殊权限:SUID,SGID,SBIT
Ø 1.SUID:s出现在文件所有者的x权限上。
1)SUID只能用于二进制可执行文件,对目录无效
2)执行者若具有该文件的x权限,则将具有文件所有者的权限
3)权限只在文件执行时有效,执行完毕不再拥有所有者权限
Ø 2.SGID:s出现在文件所属群组的x权限上。
SGID和SUID不同,可以用于目录
1)使用者若有此目录的x,w权限,则可进入和修改此目录
2)使用者在此目录下的群组将变成该目录的群组,新建的文件,群组是此目录的群组。
SGID对于文件来说
1)SGID只对二进制可执行文件有效
2)执行者若具有该文件的x权限,则将具有文件所属群组的权限
3)权限只在文件执行时有效,执行完毕不再拥有所属群组权限
Ø 3.SBIT:t出现在文件其他用户的x权限上。
1)和SUID,SGID不同的是,只能用于目录
2)使用者在该目录下,仅自己与root才有权力删除新建的目录或文件
(2) 文字设定法设置特殊权限
chmod u+s test \为test文件加上suid权限
chmod g+s test \为test文件加上sgid权限
chmod o+t test \为test文件加上sbit权限
(3) 数字设定法设置特殊权限
chmod 4777 test \test拥有SUID权限,rwsrwxrwx
chmod 2777 test \test拥有SGID权限,rwxrwsrwx
chmod 1777 test \test拥有SBIT权限,rwxrwxrwt
二:文件和目录所有者
1:更改用户和组所有者
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。
语法
chown(选项)(参数)
选项
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
参数
用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。
实例
将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:
chown -R liu /usr/meng
2:更改组所有者
chgrp命令用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。
在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。
语法
chgrp(选项)(参数)
选项
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
参数
· 组:指定新工作名称;
· 文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。
实例
将/usr/meng及其子目录下的所有文件的用户组改为mengxin
chgrp -R mengxin /usr/meng
三:权限掩码
功能说明:指定在建立文件时预设的权限掩码。
语 法:umask [-S][权限掩码]
补充说明:umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
参 数:
-S 以文字的方式来表示权限掩码。
当最初登录到系统中时, umask命令确定了你创建文件的缺省模式。这一命令实际上和
chmod命令正好相反。你的系统管理员必须要为你设置一个合理的umask值,以确保你创建的
文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。
在已经登录之后,可以按照个人的偏好使用umask命令来改变文件创建的缺省权限。相应
的改变直到退出该shell或使用另外的umask命令之前一直有效。
一般来说,umask命令是在/etc/profile文件中设置的,每个用户在登录时都会引用这个文
件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久性
地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。
1 如何计算umask值
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、
其他用户)存在一个相应的u m a s k值中的数字。对于文件来说,这一数字的最大值分别是6。
统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用c h m o d命令增加这一
权限。目录则允许设置执行权限,这样针对目录来说, u m a s k中各个数字最大可以到7。
该命令的一般形式为:
umask nnn
其中n n n为umask置0 0 0 - 7 7 7。
umask值与权限
例如,对于umask值002,相应的文件和目录缺省创建权限是什么呢?
第一步,我们首先写下具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。
第二步,在下面一行按照umask值写下相应的位,在本例中是002。
第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。
稍加练习就能够记住这种方法。
第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即可。
这就是上面的例子,其中umask值为002:
1) 文件的最大权限rwx rwx rwx (777)
2) umask值为002 - - - - - - -w-
3) 目录权限rwx rwx r-x (775) 这就是目录创建缺省权限
4) 文件权限rw- rw- r-- (664) 这就是文件创建缺省权限
下面是另外一个例子,假设这次umask值为022:
1) 文件的最大权限rwx rwx rwx (777)
2 ) u m a s k值为022 - - - -w- -w-
3) 目录权限rwx r-x r-x (755) 这就是目录创建缺省权限
4) 文件权限rw- r-- r-- (644) 这就是文件创建缺省权限
2 常用的umask值
如果想知道当前的umask值,可以使用umask命令:
如果想要改变umask值,只要使用umask命令设置一个新的值即可:
$ umask 002
确认一下系统是否已经接受了新的umas k值:
在使用umask命令之前一定要弄清楚到底希望具有什么样的文件/目录创建缺省权限。否则可能会得到一些非常奇怪的结果;例如,如果将umask值设置为600,那么所创建的文件/目录的缺省权限就是066!除非你有特殊需要,否则没有必要去管他,系统默认的值“022”umask是用的掩码,至于掩码的概念,从基础学吧,这里不说了。
掌握二个要点,
Ø 文件基数为666,目录为777,即文件无设x位,目录可设x位。
Ø chmod是设哪个位,哪么哪个位就有权限,而umask是设哪个位,则哪个位上就没权限
我们只要记住umask是从权限中“拿走”相应的位即可。
四:ACL控制
1:ACL简介
2:设置Linux系统支持ACL功能
(1) 安装ACL软件包
[root@localhost ~]# rpm -qa acl
(2) 设置支持ACL功能
a) 设置支持ACL功能
[root@localhost ~]# mount -o remount,acl
[root@localhost ~]# mount
b) 设置开机自动启用ACL
[root@localhost ~]# vi /etc/fstab
UUID=294ad562-2483-41ce-b5c8-22feb620a766 /boot ext4 defaults,acl 1 2
[root@localhost ~]# mount -o remount /dev/sda1
3:查看文件和目录ACL(见附件)
getfacl命令
4:设置文件和目录ACL(见附件)
(1) setfacl命令
(2) chacl命令