文件权限查看及简介
ls
参数 -a 查看所有文件,包括隐藏文件
-l 查看文件的详细属性
-d 查看目录属性
-R 查看目录以及目录下文件属性
-i 打印文件所占inode数
-s 打印文件所占blocks数目
-S 按文件大小排序
利用ls -l查看文件详细属性
- | rw- | r-- | r-- | 1 | root | root | 0 | Apr 1 20:52 | file
文件类型 拥有者权限 组用户权限 其他用户权限 文件连接数 拥有者 文件所属组 文件大小 文件最后一次修改时间 文件名称
文件类型
- 普通文件 d 目录 l 链接文件
b 块设备 c 字符设备 s socket套接字符
权限介绍
权限表示共有四个字符
对文件: r 代表读权限 w 代表写权限 x 代表执行权限 - 表示无权限
对目录: r 代表查看目录下文件
w 代表是否可以在目录下创建删除文件/目录
x 是否可以进入目录
文件连接数
表示有多少文件连接到此节点
文件大小
对文件:文件大小(一般以B为单位)
对目录:目录中子文件元数据(matedate可以理解为文件的属性)
文件权限修改
注意:权限设置对root用户无效
修改文件权限
chmod
参数 -R表示递归修改目录下所有文件
(1)字母方式修改
u->针对用户所有者权限
g->针对用户所在组权限
o->针对其他用户权限
a->针对所用用户 另:不指定默认为a
+ 表示添加权限
- 表示删除权限
= 表示权限与后接字符相等
例:
(2)数字方式修改
数字对应关系
r w x -
4 2 1 0
利用以上映射得出各部分用户权限的大小
例如:所有者拥有读写执行权限,组内用户拥有读写权限,其他用户无权限,则此时应为 760
例:
修改文件所有者(也可以用来修改所属组)
chown
参数 -R表示递归修改目录下所有文件
例:先修改文件所有者,后修改文件所在组
修改文件所在组
chgrp
参数 -R表示递归修改目录下所有文件
例:root用户下新建文件夹 test1/test2/Octopus 在Octopus下建立文件file,修改以上所有文件目录所属组为student
系统保留权限
查看系统保留权限
用777-保留权限=新建文件默认权限
新建文件默认没有执行权限
umask
临时设置系统保留权限
umask 022
永久设置用户保留权限
相关文件
/etc/profile
/etc/bashrc
修改以上文件中umask值
source /etc/profile
source /etc/bashrc
配置生效
ACL权限设置方式
设置ACL权限位
setfacl
参数 -m 设置acl权限给后续文件使用
-b 删除所有acl权限
-k 删除默认acl权限
-R 递归设置acl权限
-d 设置默认acl权限,只针对目录使用
注意 setfacl -m m:rx test/ 的用法,修改有效权限限制
例:递归设置test目录acl权限,尝试取消所有目录acl权限失败,利用-R参数取消成功
查看ACL权限位
getfacl 文件名
特殊权限
Sticky
作用:
只针对目录生效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者所删除,其他用户无法删除
设定方式:
chmod o+t dir
chmod 1xxx dir
创建test目录,修改权限1777,利用student用户创建文件,切换至kiosk,发现无法删除
SGID
作用
对文件:只针对与二进制可执行文件,当文件上有sgid时任何人执行此文件生成的进程都属于文件的组
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式:
chmod g+s file|dir
chmod 2xxx file|dir
SUID
只针对与二进制可执行文件
当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人
设定方式:
chmod u+s file
chmod 4xxx file
例:修改/bin/watch为4777,利用kiosk执行watch
SGID和SUID可以同时设置
chmod 6777 file
chmod ug+s file
注意:rwS中产生S是因为文件本身不具有x权限