1.文件权限
1.文件权限存在的意义
- 系统最底层安全设定方法之一
- 保证文件可以被可用的用户做相应操作
2.文件权限的查看
ls -l 文件名称 | 显示文件的权限 |
---|---|
ls -ld 目录名称 | 显示目录的权限 |
ll 文件名称 | 相当于ls -l |
ll -d 目录名称 | 相当于ls -ld |
ls -lR 文件名称 | 递归显示目录里的文件权限 |
3.文件权限的读取
- | rw-rw-r-- | 1 | kiosk | kiosk | 0 | Jul 21 09:18 | file
1.文件的类型
符号 - | 空文件 |
---|---|
l | 软连接 |
d | 目录 |
s | 套接字sock(相当于程序与命令的接口) |
b | 块设备block(存储系统资源的设备) |
c | 字符设备 |
注意:
- 硬链接:一个节点号对应多个数据区域
- 软链接:多个节点号对应一个数据区域
- 文件名称一个字母占一个字节,一类属性占一个字节
2.文件的权限
r w - | r w - | r - -
【1 】【2】 【3】
【1】:【u】:用户,文件拥有者能够对文件进行的操作
【2】:【g】:组成员,文件所有者能够对文件进行的操作
【3】:【o】:other,其他人能够对文件进行的操作
r | 可读 |
---|---|
w | 可写 |
x | 可执行 |
- | 无权限 |
- - - | 000 , 0 |
- - x | 001 , 1 |
- w - | 010 , 2 |
- w x | 011 , 3 |
r - - | 100 , 4 |
r - x | 101 , 5 |
r w - | 110 , 6 |
r w x | 111 , 7 |
3.文件名链接到此节点的个数
对文件,表示此文件的硬链接个数,即文件内容被系统记录的次数
对目录,表示目录当中子目录的个数
4.文件或目录拥有者的帐号
5.文件的所属用户组
6.文件大小,默认单位为Bytes
7.文件的创建时间或最后被修改的时间
8.文件或目录名称,若名称前面有【.】则为隐藏文件,可用 ls 及 ls -a查看
4.改变文件的所有人和所有组 chown、chgrp
chown 所有人的新名称 被更改的文件名称 | 更改所有人的名称 |
---|---|
chown lee.student westos | 更改文件名为westos的所有人所有组 |
chown lee:student westos | 同上 |
chown lee.student text | 更改目录名为text的所有人所有组,但不改变目录里面的所有人所有组的名称 |
chown -R lee.student text | 更改目录名为text的所有人所有组并改变目录里面的所有人所有组的名称 |
chgrp 所有组的新名称 被更改的文件名称 | 更改所有组的名称 |
chgrp student text | 更改目录名为text的所有组,但不改变目录里面的所有组的名称 |
chgrp -R student text | 更改目录名为text的所有组并改变目录里面的所有组的名称 |
注: lee为所有人的新名称,student为所有组的新名称,westos为文件名,text为目录名
5.改变文件的权限
1.对权限的理解
r
- 对文件:查看文件中的内容 -> cat file
- 对目录:查看目录中有什么子文件或子目录 -> ls dir
w
- 对文件:改变文件里面记录的字符。不能对元数据进行操作,元数据是目录的数据。不能进行删除的操作,删除是指对目录进行的操作,若要删除,则应对目录进行修改
- 对目录:对目录中子目录或子文件的元数据进行更改
x
- 对文件:通过文件名称调用文件内记录的程序
- 对目录:进入程序
2.更改方式 chmod
chmod [u/g/o] [+/-/=] [r/w/x] file/dir | 更改用户/组成员/其他人对于目录或文件的权限 |
---|---|
chmod u+x /mnt/file | 更改/mnt下文件file的用户权限+x |
chmod g-r /mnt/file | 更改/mnt下文件file的组成员权限-r |
chmod ug-r /mnt/file | 更改/mnt下文件file的用户和组成员权限-r |
chmod u-r,g+x /mnt/file | 更改/mnt下文件file的用户权限-r组成员权限+x |
chmod -r /mnt/file | 更改/mnt下文件file的用户、组成员和其他人的权限-r |
chmod o=r - x /mnt/file | 把其他的权限改成r - x |
6.文件默认权限:umask
umask:系统建立文件时默认保留的权力
umask 077:临时设定系统预留权限为077,即文件权限为r w - - - - - - -
[kiosk@foundation79 ~]$ umask 077
[kiosk@foundation79 ~]$ touch a
[kiosk@foundation79 ~]$ ll a
-rw-------. 1 kiosk kiosk 0 Oct 11 02:29 a
永久更改umask:
1.vim /etc/profile #更改系统配置文件
59 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
60 umask 002 ##普通用户的umask
61 else
62 umask 077 ##超级用户的umask
63 fi
2.vim etc/bashrc #更改shell配置文件
70 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
71 umask 002
72 else
73 umask 077
74 fi
3.source /etc/profile #让更改立刻生效
source /etc/bashrc
7.特殊权限
1.sticky #粘贴位
作用:
- 只针对目录生效,当一个目录上有sticky权限时
- 在这个目录中的文件只能被文件的所有者删除,其他用户不能删除
设定方式:
- chmod o+t dir
- chmod 1xxx dir
注:1xxx ##xxx为目录的权限 eg:1777
设定完成后,目录的权限的最后一位将变成t
2.sgid #强制位
作用:
-
对文件: 只针对于二进制可执行文件
当文件上有sgid时任何人执行此文件产生的进程都属于文件的所有组 -
对目录: 当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式:
-
chmod g+s file|dir
-
chmod 2xxx file|dir
3.suid #冒险位
作用:
- 只针对于二进制可执行文件(如watch)
- 当文件上有suid时,任何人执行此文件时,产生的进程属于该文件的所有人
设定方式:
- chmod u+s file
- chmod 4xxx file ##xxx为文件的权限
2.acl权限列表
1.acl的含义及作用
- acl是Access Control List的英文缩写,译为访问控制列表,主要目的是提供传统的所有者、所属群组、其他人的读、写、执行权限之外的详细权限设置。可以针对单一用户、单一文件或目录进行r、w、x的权限设置,即就是让特定的用户对特定的文件拥有特定权限。
2.acl列表查看
- | rw-rw-r-- + | 1 | root | root | 0 | Jul 21 09:18 | file
+ 表示acl开启
3.acl列表管理
getfacl 文件名称 | 查看acl开启的文件的权限 |
---|---|
setfacl -m u:username:rwx file | 设定username对file拥有rwx权限 |
setfacl -m g:group:rwx file | 设定group组成员对file拥有rwx权限 |
setfacl -x u:username file | 从acl列表中删除username |
setfacl -b file | 关闭file上的acl列表 |
注意:-x只能删除用户不能删除权限
4.mask值
- 在权限列表中mask表示能生效的权力值
- 当用chmod减小开启acl的文件权限时mask值会发生改变
- chmod g-w 文件名称
- 如果要恢复mask值,则要重新设定mask的值
- setfacl -m m:rw 文件名称
5.acl的默认权限设定
acl默认权限只针对目录设定,acl权限只针对设定完成之后新建立的文件或目录生效而已经存在的文件是不会继承默认权限
setfacl -m d:u:username:rwx /mnt/ | 设定目录的默认权限 |
---|---|
setfacl -R -m d:u:username:rwx /mnt/ | 设定目录及在目录中新建的所有文件的权限 |
setfacl -k /mnt/ | **取消目录的默认权限 |
3.其他
- 优先级:userperm >acluser >aclgroup >groupperm >otherprem
- chattr +i /mnt/ # 添加i权限,只能查看文件,不能建立及删除
- chattr =i /mnt/ #设定i权限
- chattr -i /mnt/ #取消i权限
- chattr +a /mnt/ #只能添加,不能删除
- lsattr /mnt/ -d #只显示chattr命令所设置的权限