文件权限
文件权限存在的意义:系统最底层安全设定的方法之一,保证文件可以被可用的用户做相应的操作。
1.文件属性的查看
ls -l file =ll file
-rw-r–r--. 1 root root 0 Jan 4 19:07 file
1 2 3 4 5 6 7 8
1.文件类型
-:普通文件,空文件或者文本
d:目录,文本
I:软连接相当于快捷方式
c:字符设备
s:套接文件(一个程序对外开放的“门”)
p:管道
b:块设备
2.rw-r–r--:文件读写权限
rw- r-- r- -
u g o
u 拥有者
g 所属组
o 其他人
对文件:文件内容被系统记录的次数
对目录:目录中子目录的个数
文件的拥有者
5.文件的所属组
6.文件的内容大小
对目录:目录中子文件元数据大小
元数据:matedata可以理解为文件的属性大小
cd
7.文件最后一次被修改的时间
不是修改文件属性的时间。
8.文件的名字
文件拥有者和所属组的改变
chown username file|dir
chgrp groupname file|dir
chown username.groupname file
chown -R username file|dir (递归)
chgrp -R groupname file|dir (递归)
示例:
文件的普通权限
u 拥有者
g 所属组
o 其他人
r w x
4 2 1
r
对文件:可以查看文件的字符(内容)
对目录:可以查看目录中文件/目录的信息
w
对文件:可以更改文件内的字符
对目录:在目录中增删改查
x
对文件:可以运行文件中记录的程序动作
对目录:可以进入目录
示例:
系统默认权限的设定
系统设定新建文件或目录会去掉一些权限
设定方式
umask(普通用户和超级用户) # 查看系统减掉的权限
umask xxx #修改该系统减掉xxx,此设定是临时设定,只在当前shell生效
示例:
永久设定
vim /etc/bashrc
示例:
vim /etc/profile
示例:
以上两个文件的umask值必须保持一致
[root@desktop0 pub]# source /etc/bashrc
[root@desktop0 pub]# source /etc/profile
让系统重新加载配置文件,让设定立即生效
示例:
文件的访问控制(acl列表)
1.acl的定义
acl=access control
指定特殊的用户对特殊的文件有特殊的权限
标示开启了acl访问控制列表
##注意:当文件/目录有权限列表时,ls-l能看到的权限是假的
示例:
file: 111/ ##目录/文件的名称
owner: root ##d/f 的拥有者
group: root ##d/f 的所属组
user::rwx ##拥有者的权限
user::rwx ##acl列表中(特殊用户)的权限
group::r-x ##特殊组的权限
mask:: ##权限掩码
other::r-x ##其他人的权限
2.设定acl列表
[root@desktop0 mnt]# touch file
[root@desktop0 mnt]# ll
total 0
-rw-r–r--. 1 root root 0 Dec 31 14:40 file
[root@localhost 222]# setfacl -m u:student:rwx file
-m 设定
u 用户
g 组
[root@localhost 222]# ll
total 4
-rw-rwxr–+ 1 root root 0 Jan 4 19:50 file
[root@localhost 222]# getfacl file
示例:
删除列表中的用户或组
[root@localhost 222]# setfacl -x u:student file
[root@localhost 222]# ll
total 4
-rw-r–r--+ 1 root root 0 Jan 4 19:53 file
示例:
关闭列表
[root@localhost 222]# setfacl -b file
[root@localhost 222]# ll
total 0
-rw-r–r--. 1 root root 0 Jan 4 19:55 file
示例:
acl mask
mask用来标示实际能够赋予用户最大权限
[root@localhost 222]# setfacl -m m:rw- file
[root@localhost 222]# getfacl file
示例:
注意:1当你用chmod改变文件普通权限的时候可能会破坏acl mask
2当mask和user 的权限不同时以mask为准。
acl的默认权限
当我们需要普通用户对属于root的某个目录拥有写的权限时,并且目录中新建的子目录对普通用户也生效,就要设定acl默认权限
注意:默认权限只对目录中新建的子从的目录或文件生效,对已经建立的目录和文件无效,对目录本身也无效,普通用户这和死后不能直接在这个目录下创建文件或目录,只能在root在这个目录下创建的子目录里面操作。
setfacl -m d:u:student:rwx /westos/
示例:用root用户创建111目录,并在111下建立test目录 。
示例:
特殊权限位
1.suid ##冒险位
只针对二进制可执行文件
文件内记录的程序产生的进程的拥有者为文件的拥有者
和进程的发起人没关系
[root@localhost /]# chmod u+s /usr/bin/touch == [root@desktop0 mnt]# chmod 4755 /usr/bin/touch
[root@localhost /]# ll /usr/bin/touch
-rwsr-xr-x. 1 root root 62432 Jan 4 20:10 /usr/bin/touch
示例:
2.sgid ##强制位
对文件:只针对二进制可执行文件,
任何人运行二进制文件程序时程序产生的进程的所属组都是文件的所有组
和程序发起人组的身份无关
示例:
对目录:当目录有sgid权限后,目录中新建的所有文件的所有组
都自动归属到目录的所有组之中,和文件建立者所在的组无关
示例:
设定方式:
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir
示例:
3.sticky ##粘贴位
t权限:
只针对于目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除
设定方式:
chmod o+t direcotry
t=1
chmod 1777 direcotry
示例;