一、基本含义
1.文件权限存在的意义
(1)文件权限是系统最底层的安全机制组成之一
(2)权限设定的作用是保证文件可以被可用的用户做相应的操作
2.文件权限的查看
(1)ls -l file 查看文件的属性
(2)ls -ld dir 查看目录的属性
-rw-r--r--. 1 root root 0 3月 23 17:30 test
1 2 3 4 5 6 7 8
1.文件类型
-:普通文件
d:目录
c:字符设备
s:套接文件
p:管道
b:块设备
2.rw-r–r--:文件读写权限
rwx|rwx|rwx
u g o
u拥有者
g所属组
o其他人
rwx
r 读权限 4 对文件查看文件的字符;对目录查看目录中的文件/信息
w 写权限 2 对文件可以更改文件的字符;在目录中增删改查
x 执行权限 1 对文件运行文件中记录的程序动作;可以进入目录
- 421为2进制赋值
3.文件被记录次数
-文件 1 记录一次文件 文件初始为1 之后每次新建增加1
d目录 2 记录一次目录 目录初始为2,即隐藏的. 和..文件 之后每次新建增加1
4.文件的拥有者
5.文件的所属组
6.文件的内容大小
7.文件最后一次被修改的时间
8.文件的名字
二、对权限的管理
1.拥有者和所属组变更
chown 拥有者 文件名 只改变拥有者
chown 拥有者.所属组 文件名 同时改变拥有者和所属组
chgrp 所属组 文件名 只改变所属组
chown -R 拥有者.所属组 文件名 递归改变所有拥有者和所属组
chgrp -R 所属组 文件名 递归改变所属组
chown -R 拥有者 文件名 递归改变拥有者
2.文件的权限管理
chmod u+rwx
chmod u+r,g-w
chmod 777
chmod -R 777
3.系统默认权限的设定
系统设定新建文件或目录会去掉一些权限
设定方式
umask(普通用户和超级用户) # 查看系统减掉的权限
umask xx #修改该系统减掉xxx,此设定是临时设定,只在当前shell生效
永久设定
vim /etc/bashrc
70 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
71 umask 002 #普通用户的umask
72 else
73 umask 022 #超级用户的umask
74 fi
vim /etc/profile
59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
60 umask 077
61 else
62 umask 022
63 fi
以上两个文件的umask值必须保持一致
source /etc/bashrc
source /etc/profile
让系统重新加载配置文件,让设定立即生效
三、文件的访问控制(acl列表)
1.acl的定义
acl=access control
指定特殊的用户对特殊的文件有特殊的权限
ls -dl /home/kiosk/
drwx--x---+ 44 kiosk kiosk 4096 Dec 31 08:59 /home/kiosk/
^
标示开启了acl访问控制列表
- 注意:当文件/目录有权限列表时,ll能看到的权限是假信息,(ll查看的是文件本身权限,但是开启acl后mask权限会出现在组权限位置,所以显示的不再是文件本身的权限,此时显示的acl附加的mask权限)
getfacl /home/kiosk
getfacl: Removing leading '/' from absolute path names
# file: home/kiosk ##目录/文件的名称
# owner: kiosk ##d/f 的拥有者
# group: kiosk ##d/f 的所属组
user::rwx ##拥有者的权限
user:qemu:--x ##acl列表中(特殊用户)的权限
group::--- ##特殊组的权限
mask::--x ##权限掩码
other::--- ##其他人的权限
2.设定acl列表
键入
touch file
ll
输出
总用量 0
-rw-r--r--. 1 root root 0 3月 23 17:59 file
键入
setfacl -m u:student:rwx file
- -m 设定 u 用户 g 组
再次键入
ll
输出
总用量 4
-rw-rwxr--+ 1 root root 0 3月 23 17:59 file
键入
getfacl file
输出
# file: file
# owner: root
# group: root
user::rw-
user:student:rwx
group::r--
mask::rwx
other::r--
3.删除列表中的用户或组
[root@client Desktop]# setfacl -x u:student file
[root@client Desktop]# ll
总用量 4
-rw-r--r--+ 1 root root 0 3月 23 17:59 file
4.关闭列表
[root@client Desktop]# setfacl -b file
[root@client Desktop]# ll
总用量 0
-rw-r--r--. 1 root root 0 3月 23 17:59 file
5.acl mask
mask用来标示实际能够赋予用户最大权限
[root@client Desktop]# setfacl -m m:rw- file
[root@client Desktop]# getfacl file
# file: file
# owner: root
# group: root
user::rw-
group::r--
mask::rw-
other::r--
###可能:当你用chmod改变文件普通权限的时候可能会破坏acl mask
6.acl的默认权限
当我们需要普通用户对属于root的某个目录拥有写的权限时,并且目录中新建的子目录对普通用户也生效,就要设定acl默认权限
注意:默认权限只对目录中新建的目录或文件生效,对已经建立的目录和文件无效,对目录本身也无效
setfacl -m d:u:student:rwx /westos/
四、特殊权限位
1.suid ##冒险位
只针对二进制可执行文件
文件内记录的程序产生的进程的拥有者为文件的拥有者(和进程的发起人没关系)
[root@desktop0 mnt]# chmod u+s /usr/bin/touch == [root@desktop0 mnt]# chmod 4755 /usr/bin/touch
[root@desktop0 mnt]# ll /usr/bin/touch
-rwsr-xr-x. 1 root root 62432 Jan 25 2014 /usr/bin/touch
[root@desktop0 mnt]# su - student
Last login: Mon Dec 31 16:23:23 CST 2018 on pts/0
[student@desktop0 ~]$ ll
total 0
-rw-------. 1 student student 0 Dec 31 16:23 file
[student@desktop0 ~]$ touch file2
[student@desktop0 ~]$ ll
total 0
-rw-------. 1 student student 0 Dec 31 16:23 file
-rw-------. 1 root student 0 Dec 31 16:25 file
2.sgid ##强制位
对文件:只针对二进制可执行文件,
任何人运行二进制文件程序时程序产生的进程的所属组都是文件的所有组 (和程序发起人组的身份无关)
设定方式:
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir
[root@desktop0 mnt]# chmod g+s /usr/bin/touch ^C
[root@desktop0 mnt]# chmod 2755 /usr/bin/touch
[root@desktop0 mnt]# ll /usr/bin/touch
-rwxr-sr-x. 1 root root 62432 Jan 25 2014 /usr/bin/touch
[root@desktop0 mnt]# su - student
Last login: Mon Dec 31 16:25:36 CST 2018 on pts/0
[student@desktop0 ~]$ ls
file file2
[student@desktop0 ~]$ touch file3
[student@desktop0 ~]$ ll
total 0
-rw-------. 1 student student 0 Dec 31 16:23 file
-rw-------. 1 root student 0 Dec 31 16:25 file2
-rw-------. 1 student root 0 Dec 31 16:43 file3
对目录:当目录有sgid权限后,目录中新建的所有文件的所有组
都自动归属到目录的所有组之中,和文件建立者所在的组无关
[root@desktop0 mnt]# chmod g+s /westos/
[root@desktop0 mnt]# ll -d /westos/
drwxrwsrwx. 3 root root 19 Dec 31 16:46 /westos/
[root@desktop0 mnt]# su - studnet
su: user studnet does not exist
[root@desktop0 mnt]# su - student
Last login: Mon Dec 31 16:45:59 CST 2018 on pts/0
[student@desktop0 ~]$ cd /westos/
[student@desktop0 westos]$ ls
stuent
[student@desktop0 westos]$ ll
total 0
drwx------. 2 student student 6 Dec 31 16:46 stuent
[student@desktop0 westos]$ touch ww
[student@desktop0 westos]$ ll
total 0
drwx------. 2 student student 6 Dec 31 16:46 stuent
-rw-------. 1 student root 0 Dec 31 16:47 ww
[student@desktop0 westos]$ mkdir ee
[student@desktop0 westos]$ ll
total 0
drwx--S---. 2 student root 6 Dec 31 16:47 ee
drwx------. 2 student student 6 Dec 31 16:46 stuent
-rw-------. 1 student root 0 Dec 31 16:47 ww
3.sticky ##粘制位
t权限:
只针对于目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除
设定方式:
chmod o+t direcotry
t=1
chmod 1777 direcotry
drwxrwxrwt. 2 root root 6 Dec 31 17:04 /pub/
[root@desktop0 mnt]# su - westos
Last login: Mon Dec 31 17:03:45 CST 2018 on pts/0
[westos@desktop0 ~]$ cd /pub/
[westos@desktop0 pub]$ touch westos
[westos@desktop0 pub]$ ll
total 0
-rw-------. 1 westos root 0 Dec 31 17:06 westos
[westos@desktop0 pub]$ su - student
Password:
Last login: Mon Dec 31 17:03:26 CST 2018 on pts/0
[student@desktop0 ~]$ cd /pub/
[student@desktop0 pub]$ ls
westos
[student@desktop0 pub]$ rm -rf westos
rm: cannot remove ‘westos’: Operation not permitted
[student@desktop0 pub]$