权限各种命令

chmod u+x hello.sh
chmod 755 hello.sh
# 赋予执行权限
chmod g+w,o+w hello.sh
chmod g-w,o-w hello.sh
chmod u=rwx,g=rw hello.sh
chmod a=rwx hello.mp4

权限的数字表示

权限类型数字
r4
w2
x1
-rw-r--r--.
# 默认创建的文件
drwxr-xr-x.
# 默认创建的文件夹
drwxr-xr-x+
# acl权限目录
chown 用户名 文件名
# 修改文件所有者
chgrp 组名 文件名
# 修改文件所属组

e.g.

chown songxiaobao:actors /xiaopin
# 修改文件所有者
umask
# 0022
# 第一位0:文件特殊权限
# 022:文件默认权限
umask 0002
# 临时修改
vim /etc/profile
# 永久修改
dumpe2fs -h /dev/sda5
# dumpe2fs命令是查询指定分区详细文件系统信息的命令

选项

选项备注
-h仅显示超级块中信息,而不显示磁盘块组的详细信息

临时开启分区 ACL 权限

dumpe2fs -h /dev/sda5 | grep acl
mount -o remount,acl /
重新挂载根分区,并挂载加入acl权限

永久开启分区 ACL 权限

vim /etc/fstab
UUID=cdda7dc1-4d8f-40b1-8f25-59cb4413a9de /boot                   ext4    defaults,acl        1 2
# 加入acl
mount -o remount /
# 重新挂载文件系统或重启动系统,使修改生效
getfacl 文件名
# 查看acl权限
setfacl 选项 文件名
# 设定acl权限

选项

选项备注
-m设定 ACL 权限
-x删除指定的 ACL 权限
-b删除所有的 ACL 权限
-d设定默认 ACL 权限
-k删除默认 ACL 权限
-R递归设定 ACL 权限,可能导致权限溢出
setfacl -m u:用户名:权限 文件名
# 给用户赋予ACL权限
setfacl -m g:用户组名:权限 文件名
# 给用户组赋予ACL权限
setfacl -x u:用户名 文件名
# 删除指定用户的ACL权限
setfacl -x g:用户组名 文件名
# 删除指定用户组的ACL权限
setfacl -b 文件名
# 删除所有的 ACL 权限
setfacl -m d:u:用户名:权限 文件夹名
# 默认 ACL 权限
setfacl -m u:用户名:权限 -R 文件夹名
# 递归 ACL 权限

e.g.

setfacl -m u:songxiaobao:rx /xiaoping
# 给用户songxiaobaofuy赋予r-x权限
setfacl -m g:actors:rwx /xiaoping
# 给用户组actors赋予rwx权限
visudo
# 实际上修改的是/etc/sudoers,小心使用
root ALL=(ALL)  ALL
# 用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%whell ALL=(ALL)  ALL
# %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
man 5 sudoers

e.g.

# 超级用户
visudo
# 最后一行插入
user1 ALL=(ALL)  /sbin/shutdown -r now
# user1
sudo /sbin/shutdown -r now
su - user1
sudo -l
# 查看可用的sudo命令
sudo /sbin/shutdown -r now
# 普通用户执行sudo赋予的命令
visudo
user1 ALL=/usr/sbin/useradd
# 授予用户添加用户的权限,(ALL)可以省略
user1 ALL=/usr/bin/passwd [A_Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
# 授予用户设定密码的权限,(ALL)可以省略
文件特殊权限
SetUID
SetGID
Sticky BIT

SUID

chmod 4755 文件名
chmod u+s 文件名
# 设置SUID权限
# 4代表SUID,慎用
# s=x+S
chmod 0755 文件名
chmod u-s 文件名
# 取消SUID权限
  1. 创建 suid.log 文件
find / -perm -4000 -o -perm -2000 > suid.log
# 在根目录下查找包含SUID和SGID权限的文件,并记录在suid.log文件内
  1. 创建 suid_check.sh 文件
#!/bin/bash
find / -perm -4000 -o -perm -2000 > /tmp/setsuid.check
for i in $(cat /tmp/setsuid.check)
do
        grep $i  /root/suid.log > /dev/null
        if [ "$?" != "0" ]
                then
                        echo "$i is a new suidfile!" >> /root/suid_log_$(date +%F)
                fi
done
rm -rf /tmp/setsuid.check
  1. 赋予 suid_check.sh 文件执行权限
chmod 755 suid_check.sh
  1. 测试
touch abc
chmod u+s abc
./suid_check.sh
cat suid_log_2018-06-10
ll /usr/bin/locate
ll /var/lib/mlocate/mlocate.db

SGID

chmod 2755 文件名
chmod g+s 文件名
# 设置SUID权限
# 2代表SGID,慎用
# s=x+S
chmod 0755 文件名
chmod g-s 文件名
# 取消SUID权限

SBIT

chmod 1755 文件名
chmod o+t 文件名
# 设置粘着位
# 1代表SBIT,慎用
chmod 0777 文件名
chmod o-t 文件名
# 取消粘着位

chattr

chattr [+-=] [选项] 文件或目录名

选项

选项备注
+增加权限
-删除权限
=等于某权限
i修改的权限
a追加的权限

e.g.

chattr +i abc
chattr -i abc
chattr +a abc
chattr -a abc
lsattr 文件或目录名
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值