linux-权限管理
- 一、权限的基本类型
- 二、权限的表示方式
- 1. 字符形式(rwx)
- 2. 数字形式
- 三、权限管理常用命令
- 1. chmod
- 2. chown
- 3. chgrp
- 四、隐藏权限
- 1. lsattr
- 2. chattr
- 五、权限掩码
- 六、特别权限位
- 1. suid
- 2. sgid
- 3. Sticky Bit
- 七、权限委托
- 1. 授权用户
- 2. 授权组里的用户
- 3. 使用命令别名授权
- 八、ACL
- 1.getfacl
- 2. setfacl
- 总结
一、权限的基本类型
读(r) | 写(w) | 执行(x) | |
---|---|---|---|
文件 | 查看内容cat | 修改内容vim | 作为命令使用 |
文件夹 | 列出目录内容ls | 添加、删除touch、rm | 进入文件夹或搜索cd |
二、权限的表示方式
1. 字符形式(rwx)
-rw- r-- r-- root root /etc/passwd
用户 组 其他人 用户 组
第一个位置
- 表示文件的类型是普通的文件
d 表示文件的类型是文件夹 directory
r read 读文件
w write 写文件、修改、删除
x execute 执行权限
- 没有权限
3类人
user —》owner 拥有者
group 组
others 其他人
all 所有人
2. 数字形式
r : 4
w :2
x : 1
- : 0
三、权限管理常用命令
1. chmod
修改权限(读、写、执行)
chmod 任何用户都可以使用
[huang@feng ~]$ vim test.sh 编辑一个test.sh的脚本
echo “hello,world”
[huang@feng ~]$ ll
-rw-r–r–. 1 huang huang 43 5月 8 20:19 test.sh
[huang@feng ~]$ ./test.sh 执行当前文件夹下的test.sh脚本
-bash: ./test.sh: 权限不够
授予test.sh文件可执行权限
[huang@feng ~]$ chmod +x test.sh
[huang@feng ~]$ ll
-rwxr-xr-x. 1 huang huang 43 5月 8 20:19 test.sh
[huang@feng ~]$ ./test.sh 执行脚本
hello,world
使用 + 、- 增加或减少权限,可指定哪一类人(u、g、o)加,不指定则都加
[root@feng lianxi]# chmod o+w zhang.txt
[root@feng lianxi]# ll zhang.txt
-rw-r–rw-. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod a+x zhang.txt
-rwxr-xrwx. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod a-x zhang.txt
-rw-r–rw-. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod +x zhang.txt
-rwxr-xrwx. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod -x zhang.txt
=或数字 赋予对应权限
[root@feng lianxi]# chmod a=rwx zhang.txt
[root@feng lianxi]# chmod 777 zhang.txt
[root@feng lianxi]# ll zhang.txt
-rwxrwxrwx. 1 root root 0 5月 8 20:29 zhang.txt
-R 递归修改
[root@feng lianxi]# chmod -R a=rwx liu
# 将liu目录下的所有的文件或者子文件夹里的文件的权限,全部修改
[root@feng liu]# chmod -R 644 fan.txt
2. chown
修改文件的归属(用户、组)
chown 只能root用户使用
chown user:group file
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 root root 0 5月 8 20:37 zhang.txt
[root@feng liu]# chown huang:huang zhang.txt
用户 组
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 huang huang 0 5月 8 20:37 zhang.txt
[root@feng liu]# useradd zhang
[root@feng liu]# id zhang # 查看zhang用户的信息 uid和gid
用户id=1001(zhang) 组id=1001(zhang) 组=1001(zhang)
[root@feng liu]# chown zhang zhang.txt
用户
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 zhang huang 0 5月 8 20:37 zhang.txt
[root@feng liu]# chown :root zhang.txt
组
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 zhang root 0 5月 8 20:37 zhang.txt
-R 递归修改
[root@feng lianxi]# chown -R zhang:zhang liu
3. chgrp
专门用于修改文件或目录的用户组
chgrp group file
四、隐藏权限
1. lsattr
查看文件的隐藏权限
lsattr - list file attributes on a Linux second extended file system
-d List directories like other files, rather than listing their contents.
2. chattr
chattr - change file attributes on a Linux file system
设置文件的隐藏权限
chattr +/-i
chattr +/-a
immutable (i) 不能修改 --》不能删除和增加、修改
append only (a) 只能在文件或者文件夹里追加内容,不能删除
授予不能修改的权限
root@sanchuang:~# mkdir /feng
root@sanchuang:~# ll -d /feng
drwxr-xr-x 2 root root 4096 May 15 19:18 /feng/
root@sanchuang:~# chattr +i /feng
root@sanchuang:~# lsattr /feng
root@sanchuang:~# lsattr -d /feng
----i---------e------- /feng
root@sanchuang:~# cd /feng
root@sanchuang:/feng# mkdir sc
mkdir: cannot create directory ‘sc’: Operation not permitted
root@sanchuang:/feng# rm -rf /feng
rm: cannot remove ‘feng’: Operation not permitted
取消不能修改的权限
root@sanchuang:/feng# chattr -i /feng
root@sanchuang:/feng# lsattr -d /feng
--------------e------- /feng
root@sanchuang:/feng# mkdir sc
root@sanchuang:/feng# ls
sc
授予文件夹可追加的权限
root@sanchuang:/feng# chattr +a changsha
root@sanchuang:/feng# lsattr
-----a--------e------- ./changsha
root@sanchuang:/feng# cd changsha/
root@sanchuang:/feng/changsha# mkdir furong
root@sanchuang:/feng/changsha# ls
furong
root@sanchuang:/feng/changsha# rm -rf furong
rm: cannot remove ‘furong’: Operation not permitted
取消可追加权限
root@sanchuang:/feng# chattr -a changsha
root@sanchuang:/feng# lsattr
--------------e------- ./changsha
五、权限掩码
umask 0022
控制新文件和目录的默认权限
计算方式:默认权限(文件 666,目录 777)减去 umask 值
正常情况下,新建一个文件的默认权限 644
新建一个文件夹的默认权限 755
在内核级别,文件的初始权限为666
文件夹的初始权限为777
[root@hz lianxi]# umask
0022
[root@hz lianxi]# touch test.txt
[root@hz lianxi]# ll
-rw-r–r-- 1 root root 0 7月 7 21:20 test.txt
[root@hz lianxi]# umask 077 # 修改用户的umask值,从而达到设置默认文件或文件夹的权限
[root@hz lianxi]# umask
0077
[root@hz lianxi]# touch test2.txt
[root@hz lianxi]# ll
-rw------- 1 root root 0 7月 7 21:21 test2.txt
-rw-r–r-- 1 root root 0 7月 7 21:20 test.txt
六、特别权限位
1. suid
普通用户在执行命令的时候,会享有root用户的权限,因为linux系统里的所有的命令都是归root用户所有
[root@fengdeyong /]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 32656 5月 15 2022 /usr/bin/passwd
授予mkdir命令suid权限位
[root@fengdeyong sc]# which mkdir
/usr/bin/mkdir
[root@fengdeyong sc]# ll /usr/bin/mkdir
-rwxr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir
[root@fengdeyong sc]# chmod u+s /usr/bin/mkdir
[root@fengdeyong sc]# ll /usr/bin/mkdir
-rwsr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir
取消suid权限位
[root@fengdeyong /]# chmod u-s /usr/bin/mkdir
[root@fengdeyong /]# ll /usr/bin/mkdir
-rwxr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir
权限数字授权
chmod mnnn 文件
m为4时,对应suid,2对应sgid,1对应粘滞位,可叠加
[root@rocky shell]# ll get_info_cpu_mem.sh
-rw-r–r-- 1 root root 705 7月 9 17:56 get_info_cpu_mem.sh
[root@rocky shell]# chmod 4755 get_info_cpu_mem.sh
[root@rocky shell]# ll get_info_cpu_mem.sh
-rwsr-xr-x 1 root root 705 7月 9 17:56 get_info_cpu_mem.sh
s 小写的s 表示原来的文件具有可执行权限
S 大写的S 表示原来的文件没有可执行权限
[root@fengdeyong test]# touch hello.sh
[root@fengdeyong test]# ll
-rw-r–r–. 1 root root 0 5月 22 20:55 hello.sh
# 没有可执行权限 -> S
[root@fengdeyong test]# chmod +s hello.sh
[root@fengdeyong test]# ll
-rwSr-Sr–. 1 root root 0 5月 22 20:55 hello.sh
[root@fengdeyong test]# chmod u+s hello.sh
[root@fengdeyong test]# ll
-rwSr–r–. 1 root root 0 5月 22 20:55 hello.sh
[root@fengdeyong test]# chmod u-s hello.sh
[root@fengdeyong test]# ll
-rw-r–r–. 1 root root 0 5月 22 20:55 hello.sh
# 设置可执行权限 -> s
[root@fengdeyong test]# chmod +x hello.sh
[root@fengdeyong test]# ll
-rwxr-xr-x. 1 root root 0 5月 22 20:55 hello.sh
[root@fengdeyong test]# chmod u+s hello.sh
[root@fengdeyong test]# ll
-rwsr-xr-x. 1 root root 0 5月 22 20:55 hello.sh
2. sgid
此目录下创建的文件会继承该目录的用户组
chmod g+s
3. Sticky Bit
粘滞位(t) --》如果一个文件夹具有粘滞位权限,任何人都只能删除自己创建的文件或者文件夹
root@sanchuang:~# ll -d /tmp
drwxrwxrwt 15 root root 4096 May 22 19:12 /tmp/
/tmp 临时文件夹,任何用户都可以在这个目录下创建文件和文件夹
temporary 临时
授予粘滞位
root@sanchuang:~# ll -d /sky
drwxrwxrwx 2 root root 4096 May 22 20:45 /sky/
root@sanchuang:~# chmod +t /sky
root@sanchuang:~# ll -d /sky
drwxrwxrwt 2 root root 4096 May 22 20:49 /sky/
七、权限委托
sudo
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
1. 授权用户
root用户授权一个普通用户zhangmx去实现新建用户和删除用户的权限
- 新建用户zhangmx并且设置密码为123456
[root@fengdeyong /]# useradd zhangmx
[root@fengdeyong /]# echo “zhangmx:123456” |chpasswd
[root@fengdeyong /]# su - zhangmx
[zhangmx@fengdeyong ~]$ useradd zhangmx1
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
注销
- 进行委托授权
/etc/sudoers 授权书
授予zhangmx可以执行/usr/sbin/useradd, /usr/sbin/userdel 命令
[root@fengdeyong /]# vim /etc/sudoers
zhangmx ALL=/usr/sbin/useradd, /usr/sbin/userdel
- 验证sudo授权
[root@fengdeyong /]# su - zhangmx
上一次登录: 四 5月 15 20:10:31 CST 2025 pts/0 上
[zhangmx@fengdeyong ~]$ useradd zhangmx1
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
[zhangmx@fengdeyong ~]$ sudo useradd zhangmx1
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] zhangmx 的密码:
# 第一次使用sudo命令的时候,需要输入普通用户的密码
[zhangmx@fengdeyong ~]$ id zhangmx1
用户id=1033(zhangmx1) 组id=1034(zhangmx1) 组=1034(zhangmx1)
[zhangmx@fengdeyong ~]$ sudo useradd zhangmx2
[zhangmx@fengdeyong ~]$ id zhangmx2
用户id=1034(zhangmx2) 组id=1035(zhangmx2) 组=1035(zhangmx2)
[zhangmx@fengdeyong ~]$ sudo userdel -r zhangmx2
只要是使用sudo去执行命令,会记录日志–》记录到/var/log/secure日志里
[root@fengdeyong /]# tail -20 /var/log/secure
2. 授权组里的用户
新建一个wudang组,新建用户wuji 属于wudang组,设置密码为123456
然后授权wudang组可以执行任何的命令
- 新建组wudang
[root@fengdeyong /]# groupadd wudang
[root@fengdeyong /]# useradd -g wudang wuji
[root@fengdeyong /]# id wuji
用户id=1035(wuji) 组id=1028(wudang) 组=1028(wudang)
[root@fengdeyong /]# echo “wuji:123456”|chpasswd
- 修改授权书,授予权限
[root@fengdeyong /]# vim /etc/sudoers
## Allows people in group wheel to run all commands
%wudang ALL=(ALL) ALL
- 验证授权
[root@fengdeyong /]# su - wuji
[wuji@fengdeyong ~]$ sudo useradd wuji1
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] wuji 的密码:
[wuji@fengdeyong ~]$ id wuji1
用户id=1036(wuji1) 组id=1036(wuji1) 组=1036(wuji1)
3. 使用命令别名授权
命令别名 : 一般是大写的
Cmnd_Alias 将很多命令放到一个别名里,然后授予用户或者组可以使用这个命令别名
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
授予zhangfan用户,可以使用yum、ip、useradd、userdel、mount命令,别名定义为ZHANGCMD
- 新建zhangfan用户,并且设置密码123456
[root@fengdeyong /]# useradd zhangfan
[root@fengdeyong /]# echo “zhangfan:123456”|chpasswd
- 定义别名并授权
先用which查找命令存放的地方
Cmnd_Alias ZHANGCMD = /usr/bin/yum, /usr/sbin/ip, /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/mount
# 授予zhangfan可以使用命令别名ZHANGCMD
zhangfan ALL=ZHANGCMD
- 验证
[zhangfan@fengdeyong ~]$ sudo yum install vim -y
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] zhangfan 的密码:
上次元数据过期检查:1:43:52 前,执行于 2025年05月15日 星期四 19时03分34秒。
软件包 vim-enhanced-2:8.2.2637-21.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
[zhangfan@fengdeyong ~]$ sudo useradd zhangfan1
[zhangfan@fengdeyong ~]$ id zhangfan1
用户id=1039(zhangfan1) 组id=1039(zhangfan1) 组=1039(zhangfan1)
八、ACL
access control list
文件权限的访问控制列表: 写明哪些用户哪些组有哪些权限
可以单独对某个人或者组进行限制
对原来的权限进行扩展
1.getfacl
获取文件的访问控制列表权限 --》查看文件的访问控制列表
[root@fengdeyong sc]# getfacl sc
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
group::rwx
other::—
2. setfacl
设置文件的访问控制列表权限
setfacl - set file access control lists
[root@fengdeyong sc]# setfacl -m u:songqingshu:--- /sc
-m 作用是修改 modify
u 用户 user
[root@fengdeyong sc]# getfacl /sc
getfacl: Removing leading ‘/’ from absolute path names
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
user:songqingshu:---
group::rwx
mask::rwx
other::---
验证用户是否还有权限
[root@fengdeyong sc]# su - songqingshu
上一次登录: 四 5月 22 21:09:20 CST 2025 pts/0 上
[songqingshu@fengdeyong ~]$ cd /sc
-bash: cd: /sc: 权限不够
让其他组的某个用户有权限
[root@fengdeyong sc]# groupadd shaolin
[root@fengdeyong sc]# useradd -g shaolin huang1
[root@fengdeyong sc]# id huang1
用户id=1048(huang1) 组id=1040(shaolin) 组=1040(shaolin)
[root@fengdeyong sc]# su - huang1
[huang1@fengdeyong ~]$ cd /sc
-bash: cd: /sc: 权限不够
[root@fengdeyong sc]# setfacl -m u:huang1:rwx /sc
[root@fengdeyong sc]# su - huang1
上一次登录: 四 5月 22 21:18:01 CST 2025 pts/0 上
[huang1@fengdeyong ~]$ cd /sc
[huang1@fengdeyong sc]$ mkdir huang
[huang1@fengdeyong sc]$ ls
huang qingshu wuji
[huang1@fengdeyong sc]$ ll
drwxr-xr-x. 2 huang1 shaolin 6 5月 22 21:19 huang
drwxr-xr-x. 2 songqingshu wudang 6 5月 22 21:09 qingshu
drwxr-xr-x. 2 zhangwuji wudang 6 5月 22 21:08 wuji
对组修改
[root@fengdeyong sc]# groupadd emei
[root@fengdeyong sc]# setfacl -m g:emei:rwx /sc
[root@fengdeyong sc]# getfacl sc
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
user:songqingshu:—
user:huang1:rwx
group::rwx
group:emei:rwx
mask::rwx
other::—
删除组的 ACL 权限
[root@fengdeyong sc]# setfacl -x g:emei /sc
删除所有 ACL 权限
[root@fengdeyong sc]# setfacl -b /sc
总结
拒绝权限高于一切
权限管理是 Linux 系统安全的基石,其核心价值在于平衡安全性与可用性:通过精细的权限控制,既保护系统和数据免受未授权访问,又允许用户高效完成工作。合理的权限策略能显著降低安全风险、提升运维效率