文件基本权限
1.查看 ls -l
-rw-r--r--
- 常见文件类型(-文件 d目录 l软链接文件)
rw- u所有者 r--g所属组 r--o其他人
r 读 w 写 x 执行
2.修改 chmod
chmod [选项] 模式 文件名
选项:-R 递归
模式
[ugoa][+-=][rwx]
[mode=421]
例:chmod u+x test 所有者加上执行权限
chmod g-w,o-w test 所属组和其他人去除写权限
chmod chmod u=rwx test 所有者可读可写可执行
chmod chmod u=rw test 所有人可读可写
权限数字表示
r = 4 w = 2 x = 1
rwxr-xr-x
7 5 5
例:chmod 755 test
常用权限:777 最高权限
644 文件读写权限
755 文件可执行权限
3.权限作用
对文件作用
r 读取文件内容 (cat more head tail)
w 编辑 新增文件内容(但是不包含删除当前文件权限,需要对上级目录拥有w权限才可以删除下级文件)
x 运行文件
对目录作用
r 可以查询目录下文件名 (ls)
w 修改目录结构,如:新增和目录,删除此目录下文件和目录,重命名,复制,剪切
x 可以进入目录 (cd)
/*
对文件来讲:最高权限是x权限
对目录来讲:最高权限是w权限
*/
4.权限其他命令
chown 用户名 文件名 改变文件或目录所有者
例:chown user1 test
例:chown user1:user1 test
chgrp 组名 文件名 改变文件或目录所属组
chgrp user1 test
5.文件默认权限
umask 查看默认权限
0022
第一位 文件特殊权限
022 文件默认权限
文件默认不能建立为执行文件,必须手动赋予权限
所有文件默认权限最大为666
默认权限需要换成字母再相减(不是数字直接相减)
建立文件之后的默认权限为666-umask值
目录默认最大权限为777
默认权限需要换成字母再相减(不是数字直接相减)
建立目录之后的默认权限为777-umask值
临时修改umask 0002
永久修改 vi/etc/profile
特殊权限
ACL权限(解决用户身份不够用的情况)
dumpe2fs -h /dev/sda*
查询指定分区详细文件系统信息的命令
临时开启
mount -o remount,acl /
永久开启acl defaults后面增加
vi /etc/fstab UUID=*******... / ext4 defaults,acl
mount -o remount / 重新挂载
1.查看ACL权限
getfacl 文件名
2.设置ACL权限命令
setfacl 选项 文件名
选项:
-m 设定acl权限
-x 删除指定的acl权限
-b 删除所有acl权限
-d 设定默认acl权限
-k 删除默认acl权限
-R 递归设定acl权限
例:setfacl -m u:user1:rx test
getfacl test
3.最大有效权限 mask
ACL权限需要与mask进行与运算
setfacl -m m:rx test 设置最大有效权限
4.删除ACL权限
setfacl -x u:用户名 文件名
setfacl -x g:组名 文件名
setfacl -b 文件名
删除文件的全部ACL权限
5.递归设定ACL权限 -R
(x权限对目录与文件的作用是不一样的,注意递归时权限溢出问题)
setfacl -m u:user:rx -R test/
6.默认ACL权限(父目录设定默认权限,以后新建的子目录自动继承)
setfacl -d u:user:rx test/
sudo权限
普通用户临时获取root权限
visudo 命令设置sudo权限
root ALL=(ALL) ALL
用户 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
例:user1 ALL=/sbin/shutdown -r now 授权普通用户可以任何主机上重启服务器
user1 ALL=/usr/bin/passwd 授权修改用户密码(有风险,可直接修改root密码)
user1 ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root (需要过滤root)
写的越详细越能限制权限大小
sudo -l
查看可执行命令
例:sudo /sbin/shutdown -r now 普通用户使用,需要验证user1密码
文件特殊权限
SetUid
需要二进制可执行文件才设置SUID
需要用户对该文件拥有x执行权限
作用
执行该文件时会临时将身份变成文件所有者
例:ll /usr/bin/passwd 普通用户执行passwd命令 临时获得root权限 可修改密码
(身份转换只在执行的过程中有效)
设置
chmod 4755 test
chmod u+s test
4代表SUID
取消
chmod 0755 test
chmod u-s test
SetGid
除文件外还可对目录作用
文件
执行该文件时会临时将身份变成文件所属组
例:ll /urs/bin/locate命令 普通用户执行时升级为slocate组身份,对/var/lib/mlocalte/mlocate.db用有读权限
(身份转换只在执行的过程中有效)
目录
普通用户必须对目录拥有r和x权限,才能进入此目录
任何用户在此目录下建立的文件所属组都属于设置用户的所属组
设置
chmod 2755 test
chmod g+s test
2代表SGID
Sticky BIT
只对目录有作用
普通用户对此目录拥有w和x权限
作用
限制777目录权限删除目录下不是自己的文件
例:/tmp 目录 任何用户可查看,防止误删除,设置SBIT
设置SBIT
chmod 1777 test
chmod o+t test
1代表SBIT
取消SBIT
chmod 0777 test
chmod o-t
不可改变位权限 chattr
chattr [+-=] [选项] 文件或目录名
+ 增加权限
- 删除权限
= 等于某权限
常用选项
a 追加append
i 插入insert
i 文件 无法进行删除,增加,修改文件
目录 不能新建删除文件,只能修改目录下文件的数据
例:chattr +i test
a 文件 只能增加数据,不能删除,不能修改(不能使用vi)
目录 只能新建和修改文件,不能删除
例:chattr +a test
查看
lsattr [选项] 文件名
选项:
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的