文件权限相当于系统的法律法规,保证系统的稳定性和安全
一、文件权限的查看
ls -l | 更详细的信息显示目录里面的内容 |
---|---|
ls -l file | 文件的属性 |
ls -d dir | 目录本身 |
ls -a dir | 包含隐藏文件 |
ls -S dir | 查看目录里面的内容并按照内容大小排序 |
ls -l file | 查看文件信息 |
ls -ld dir | 查看目录本身的信息 |
ll file | 等同于ls -l file |
ll -d dir | 相当于ls -ld dir |
ls -LR dir | 递归显示子目录 |
如下:
(1)
ls -l file
查看文件信息
(2)
ls -ld dir
查看目录本身的信息
(3)
ll file
等同于
ls -l file
(4)
ll -d dir
相当于
ls -ld dir
(5)
ls -LR dir
递归显示子目录
二、文件属性的查看(读取权限)
文件类型
– | 空文件,或文本(没有系统级的功能) |
---|---|
d | 目录 |
l | 软连接(快捷方式) |
s | socket套接字 (一个程序对外开放的大门) |
b | block块设备 |
c | 字符设备 |
p | 管道 |
如下:
1、- 空文件,或文本(没有系统级的功能)
2.d 目录
3.l 软连接(快捷方式)
4.c 字符设备
三、文件的权限
总共9位,分为3部分
3位为一位,分别代表
user(u),文件拥有者对文件能做什么操作(所有人)
group(g),文件所有组对文件能做什么操作(所有组)
other(o),其他人对文件能做什么操作
ls -ld test
/
如下:
包含信息: 用户名字 用户组名字 文件内容大小 (对文件:文件大小 对目录:目录中子文件元数据) 文件最后一次被修改的时间 文件名字
四、改变文件的所有组和所有人
使用命令chown chgrp
思路:先建立文件和目录,再监控文件和目录所有人所有组改变的过程
监控命令 :
watch -n 1 ls -lR /mnt/
(1)
chown username file|dir
##更改文件或者目录的所有人
2)
chown username.groupname file|dir
##更改文件或者目录的所有人所有组
3)
chown -R username dir
##更改目录本身及里面所有内容的所有人
(4)
chgrp groupname file|dir
##更改文件或者目录的所有组
(5)
chgrp -R groupname dir
##更改目录本身及里面所有内容的所有组
五|、文件普通权限
u | 文件所有人对文件可以读写 |
---|---|
g | 文件组成员对文件可读 |
o | 其他人对文件可读 |
优先级:u优先匹配,g次优先,o当u,g不匹配时匹配
r:
对文件:可以查看文件中的字符
对目录:可以查看目录中文件的信息
w:
对文件:可以更改文件内字符
对目录:可以在目录中添加删除文件
x:
对文件:可以运行文件内记录的程序动作
对目录:可以进入目录
六、.字符命令修改文件权限
chmod+/- 权限
(1)
chmod [-R] <u|g|o><+|-|=><r|w|x> file|dir
总的格式
(2)
chmod u-x file1 file1
拥有者去掉x权限
(3)
chmod g+w file1 file1
拥有组添加w权限
4)
chmod u+x,g-w /mnt/ file1
file1拥有者加上x权,file1拥有组减去w权限
5)
chmod ugo-r file2
file2的用户、组、其他人去掉r权限
(6)
chmod ug+x,o-r file3
file3用户和组添加x权限,其他人去掉r权限
七、.数字方式修改文件权限
在linux中,三种权限的权值为:r=4,w=2,x=1(相当于二进制)
chmod 修改后权限值 file
例如:
chmod 777 file
文件权限数字表达的所有可能如下:
7=r w x;6=r w -;5=r – x;4=r – -;3=- w x;2=- w -;1=- – x;0=- – –
r 读 用ls查看文件(看)
w 写 是否可以新建或者删除(搬走)
x 调用执行 是否可以进入此目录(进入)
八.系统默认权限的设定
权限设定方式如下:
umask ##查看系统保留权限默认为022
umask 077 ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效
永久设定方式:
vim /etc/bashrc
##设置shell中的权限
70 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
71 umask 002 ##普通用户的umask
72 else
73 umask 077 ##超级用户的umask
74 fi
vim /etc/profile
##设置系统的权限
59 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
60 umask 002 ##普通用户umask
61 else
62 umask 077 ##超级用户umask
以上两个文件umask设定值必须保持一致
source /etc/bashrc
source /etc/profile
让设定立即生效
九、.文件的访问控制(acl列表)
(1)acl定义: acl = access control list
指定特殊用户对特殊文件有特殊权限
命令格式:
getfacl /mnt/westos/
查看该目录的权限列表
file: westos/ ##文件名称
owner: root ##文件所有人
group: root ##文件所有组
user::rwx ##拥有者权限
user:student:rwx ##特殊用户权限
group::— ##组权限
mask::rwx ##权限掩码
other::— ##其他人权限
含义如上
2)设定acl列表
命令格式:
setfacl -m <u|g>:<username|groupname>:
权限 文件|目录
-m 表示设定acl列表
u 表示用户
g 表示用户组
1.删除列表中的用户或者组
命令格式:
setfacl -x <u|g>:<username|groupname> 文件|目录
2.关闭列表
setfacl -b 文件|目录
acl 默认权限
当我们需要某个目录对于student可写,并且目录中新建的子目录对student也可写
就要设定默认默认权限
注意:
默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,
对于目录本身也无效
setfacl -m d:u:student:rwx /westos
十、.特殊权限
1.1.sticky 粘制位
只针对目录有效,当一个目录上有sticky权限时,这个目录中的文件只能被文件的所有者删除
设定方式:
chmod o+t direcotry
chmod 1777 direcotry
chmod 1xxx direcotry
1)先在超级用户下建立一个目录
mkdir /westos1
然后设置监控命令j监控改目录以及改目录下的文件:
watch -n 1 “ls -ld /westos1 ; ls -l /westos1”
并且在超级用户下设置满权限
chmod 777 /westos1
2)在超级用户下建立两个普通用户linux1 linux2
分别切换到两个普通用户下建立文件file1 file2
在这里插入图片描述
(3)linux1用户可以删除linux2用户建立的文件file2,这样做很不安全
我们可以设置特殊权限t
(4)在超级用户模式下给westos1这个目录增加t权限
(5)给westos1目录加上t权限以后,linux2用户就不能删除linux1用户建立的file1文件了
2.sgid 强制位
设定方式:
chmod g+s file|dir
chmod 2xxx file|dir
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
1)首先在超级用户下建立一个目录
并且对这个目录进行监控
(2)查看这个目录的权限:
3)在超级用户下建立一个新用户,并且将新建目录的用户组变为刚刚新建的用户
然后在改目录下建立新的文件,发现此文件的用户组仍然为超级用户,
并不是刚刚 新建的那个用户
(4) 为了使在目录中建立的文件都属于目录的用户组,需要在目录上加上s权限
加上权限后,目录的所有组权限会出现S,建立的文件的所有组为目录的所有组
3.suid ##冒险位
只针对与2进制可执行文件
当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人
设定方式
chmod u+s file
chmod 4xxx file