用户于用户组及文件权限管理命令

1. 用户与用户组管理命令:

1.0用户组管理命令

1.0.1 创建用户组--groupadd

groupadd用来创建用户组。

常用的参数:

参数 说明
-g 指定用户组的ID(GID)
-r 创建系统用户组

例子:

  • 创建一个普通的用户组:
1)创建用户组的命令:
wmn@srudy:~$ sudo groupadd ops
[sudo: authenticate] Password:    
2)查看是否创建成功:
wmn@srudy:~$ sudo tail -1 /etc/group
ops:x:1001:
  • 创建一个系统管理组:
1)创建用户组命令:
wmn@srudy:~$ sudo groupadd -r shell
2)查看是否创建成功:
wmn@srudy:~$ tail -1 /etc/group
shell:x:983:
  • 创建一个用户组,并且指定GID为2000:
1)创建的指令:
wmn@srudy:~$ sudo groupadd dev -g 2000
2)查看是否创建成功:
wmn@srudy:~$ sudo tail -1 /etc/group
dev:x:2000:

1.0.2用户组修改--groupmod

groupmod是用来修改用户组信息,可以用来修改用户组的名称和用户组的GID等。

常用的参数:

参数 说明
-n 修改用户组的名称。-n [新的用户组名称] [原先用户组的名称]
-g 修改用户组的ID(GID)

例子:

  • 修改用户组的名称:
1)把用户组ops名称修改成devops:
wmn@srudy:~$ sudo groupmod -n devops ops
2)查看是否修改成功:
wmn@srudy:~$ sudo tail -1 /etc/group
devops:x:1001:
  • 修改用户组的GID
1)把devops用户的id修改成2001:
wmn@srudy:~$ sudo groupmod devops -g 2001
2)查看是否修改成功:
wmn@srudy:~$ sudo tail -1 /etc/group
devops:x:2001:

1.0.3 删除用户组--groupdel

groupdel是用来删除用户组的,如果用户组是某个用户的主组,不能删除,删除会报错。删除用户自动的会把主组删除掉。

示例:

删除主组,会报错:

0)查看用户和用户组:
wmn@srudy:~$ id wmn02
uid=1001(wmn02) gid=1001(wmn02) groups=1001(wmn02)
1)删除主组,会报错:
wmn@srudy:~$ sudo groupdel wmn02
groupdel: cannot remove the primary group of user 'wmn02'

删除不是用户主组:

1)查看dev用户组是否存在:
wmn@srudy:~$ sudo grep "\bdev" /etc/group
dev:x:2000:
2)删除dev用户组:
wmn@srudy:~$ sudo groupdel dev
3)查看是否删除掉:
wmn@srudy:~$ sudo grep "\bdev" /etc/group
wmn@srudy:~$ 

1.0.4 查看用户和用户组---groups和getent

1.0.4.1 查看用户属于哪个组---groups

例子:

  • 查看用户属于哪个组:
1)查看wmn属于哪个组:
[wmn@studry ~]$ sudo groups wmn
wmn : wmn wheel
2)查看wmn02属于哪个组
[wmn@studry ~]$ sudo groups wmn02
wmn02 : wmn02 devops
1.0.4.2 查看用户组包含哪些用户--getent

例子:

  • 查看用户组有哪些用户:
1)查看devops用户组用哪些附加成员:
[wmn@studry ~]$ sudo getent group devops 
devops:x:1002:wmn02

1.0.5 用户管理命令:

1.0.5.1 创建用户--useradd

注意事项:

  • 创建用户,如果不指定用户的主组,默认会自动创建用户的主组。
  • 在rockylinux中,创建用户自动会创建用户的家目录并且使用/bin/bash作为shell。而Ubuntu,创建用户不会自动创建用的家目录及使用/bin/sh作为shell。
  • 创建用户后会有一个主组,可以有0个或多个附加组。
  • 主组是用户的默认组,附加组是用户附加权限,在使用用户创建文件及目录,默认的属组是用户的主组。

常用的参数选项:

参数选项 说明 备注
-m 创建家目录 rocky非必须的,Ubuntu是必须的
-s 指定shell rocky不指定使用/bin/bash作为shell。Ubuntu不指定默认使用/bin/sh作为shell。
-M 不创建家目录 一般用于系统用户,用来管理程序进程
-u 指定用户的UID
-g 指定用户的主组 指定用户的主组,必须确认用户组是否存在,如果不指定,默认创建和用户同名的用户组
-G 指定用户的附加组 如果多个,用逗号隔开
-r 创建系统用户 它不会创建用户的家目录
-d 指定用户的家目录 一般它与-m一起使用
-c 添加用户的描述信息

例子:

  • 不使用参数创建用户:
1)rockylinux使用默认创建用户:
创建用户:
[wmn@studry ~]$ sudo useradd wmn03
[sudo] password for wmn: 
查看是否创建家目录:
[wmn@studry ~]$ sudo ls /home/
wmn  wmn02  wmn03
查看使用shell:
[wmn@studry ~]$ sudo grep "wmn03" /etc/passwd
wmn03:x:1002:1003::/home/wmn03:/bin/bash
2)ubuntu使用默认创建用户:
创建用户:
wmn@srudy:~$ sudo useradd wmn03
[sudo: authenticate] Password:  
查看是否创建家目录:
wmn@srudy:~$ ls /home/
wmn
查看使用的shell:
wwmn@srudy:~$ sudo grep "wmn03" /etc/passwd
wmn03:x:1002:1002::/home/wmn03:/bin/sh
`说明:`
rockylinux创建用户默认是创建家目录,并且使用/bin/bash作为shell。
Ubuntu创建用户默认是不创建家目录,并且使用/bin/sh作为shell。
  • ubuntu创建用户并且创建家目录,使用/bin/bash作为shell:
1)创建用户:
wmn@srudy:~$ sudo useradd wmn04 -m -s /bin/bash
2)查看用户是否创建家目录:
wmn@srudy:~$ sudo ls /home/
wmn  wmn04
3)查看用户的信息:
wmn@srudy:~$ sudo grep "wmn04" /etc/passwd
wmn04:x:1003:1003::/home/wmn04:/bin/bash
  • 创建用户,指定UID:
1)创建用户:
[wmn@studry ~]$ sudo useradd wmn04 -u 2001
[sudo] password for wmn: 
2)查看是否创建成功:
[wmn@studry ~]$ id wmn04
uid=2001(wmn04) gid=2001(wmn04) groups=2001(wmn04)
  • 指定主组(不建议操作)
1)创建用户组:
[wmn@studry ~]$ sudo groupadd ops
2)创建用户:
[wmn@studry ~]$ sudo useradd wmn05 -g ops
3)查看是否创建成功:
[wmn@studry ~]$ id wmn05
uid=2002(wmn05) gid=2002(ops) groups=2002(ops)
  • 创建用户并且指定附加组:

注意事项:添加到附加组中,先确认用户组是否存在。

1)添加用户:
[wmn@studry ~]$ sudo useradd wmn06 -G ops,devops
2)查看用户是否添加成功:
[wmn@studry ~]$ id wmn06
uid=2003(wmn06) gid=2003(wmn06) groups=2003(wmn06),1002(devops),2002(ops)
  • 创建系统用户,不允许登录:
1)创建系统用户:
[wmn@studry ~]$ sudo useradd wmn07 -r -s /sbin/nologin
2)查看家目录是否创建:
[wmn@studry ~]$ ls /home/wmn07
ls: cannot access '/home/wmn07': No such file or directory
3)查看wmn07用户的信息:
[wmn@studry ~]$ sudo grep "wmn07" /etc/passwd
wmn07:x:994:994::/home/wmn07:/sbin/nologin
  • 创建用户并且指定家目录位置:
1)进行创建用户:
[wmn@studry ~]$ sudo useradd wmn08 -m -d /opt/wmn08
2)查看家目录是否创建:
[wmn@studry ~]$ sudo ls /opt/wmn08 -d 
/opt/wmn08
3)查看wmn08用户信息:
[wmn@studry ~]$ sudo grep "wmn08" /etc/passwd
wmn08:x:2004:2004::/opt/wmn08:/bin/bash

1.0.5.2 修改用户--usermod

常用的参数:

参数 说明
-aG 把用户添加到附加组中
-g 修改用户的主组
-L 锁定用户,不让用户登录
-U 解锁用户,注意事项,没有密码的用户无法解锁,锁定没有密码设置密码后,自动解锁。
-u 修改用户的uid
-s 修改用户的shell
-m 修改用户的家目录时,创建用户的家目录
-d 修改用户的家目录,一般要与-m一起使用
-l 修改用户的名称。使用方式: -l [新的用户名称] [原先的用户名称]

例子:

  • 把用户添加到附加组中:
0)查看用户:
[wmn@studry ~]$ id wmn04
uid=2001(wmn04) gid=2001(wmn04) groups=2001(wmn04)
1)用户wmn04添加ops,devops附加组:
[wmn@studry ~]$ sudo usermod wmn04 -aG ops,devops
2)查看是否添加成功:
[wmn@studry ~]$ id wmn04
uid=2001(wmn04) gid=2001(wmn04) groups=2001(wmn04),1002(devops),2002(ops)
  • 修改shell:
0)查看wmn04用户信息:
[wmn@studry ~]$ sudo grep "wmn04" /etc/passwd
wmn04:x:2001:2001::/home/wmn04:/bin/bash
1)进行修改:
[wmn@studry ~]$ sudo usermod wmn04 -s /bin/sh
2)查看是否修改成功:
[wmn@studry ~]$ sudo grep "wmn04" /etc/passwd
wmn04:x:2001:2001::/home/wmn04:/bin/sh
  • 修改用户的家目录:
0)查看用户wmn05信息:
[wmn@studry ~]$ sudo grep "wmn05" /etc/passwd
wmn05:x:2002:2002::/home/wmn05:/bin/bash
1)把家目录修改成/opt/wmn05
[wmn@studry ~]$ sudo usermod wmn05 -m  -d /opt/wmn05/
2)查看是否修改成功:
[wmn@studry ~]$ sudo su - wmn05
[wmn05@studry ~]$ pwd
/opt/wmn05
`说明:`
原先家目录下有数据,数据一并迁移到新的家目录下。
  • 修改用户:
0)查看用户:
[wmn@studry ~]$ id wmn08
uid=2004(wmn08) gid=2004(wmn08) groups=2004(wmn08)
1)进行修改:
[wmn@studry ~]$ sudo usermod -l wmnnew01 wmn08
2)查看是否修改成功:
[wmn@studry ~]$ id wmn08
id: ‘wmn08’: no such user
[wmn@studry ~]$ id wmnnew01
uid=2004(wmnnew01) gid=2004(wmn08) groups=2004(wmn08)
`说明:`
-l [新的用户名] [旧的用户名]
  • 修改用ID(UID):
0)查看用户ID:
[wmn@studry ~]$ id wmnnew01 
uid=2004(wmnnew01) gid=2004(wmn08) groups=2004(wmn08)
1)修改用户的ID为3001:
[wmn@studry ~]$ sudo usermod wmnnew01 -u 3001
2)查看是否修改成功:
[wmn@studry ~]$ id wmnnew01 
uid=3001(wmnnew01) gid=2004(wmn08) groups=2004(wmn08)
  • 锁定/解锁用户:

注意事项:当锁定用户没有密码,设置密码后,自动解锁用户。

1)锁定用户:
[wmn@studry ~]$ sudo usermod -L wmnnew01
查看锁定用户密码信息:
[wmn@studry ~]$ sudo grep "wmnnew01" /etc/shadow
[sudo] password for wmn: 
wmnnew01:!$y$j9T$rsFkkp7J7Lv/W8usAmTut1$mfSbNFbtBkRz0bWAASFkEhRHXjSJqSWDlhd9L1rGSnB:20729:0:99999:7:::
密码前边有个!
2)解锁有密码用户:
解锁有密码的用户:
[wmn@studry ~]$ sudo usermod wmnnew01   -U 
查看解锁后用户密码信息:
[wmn@studry ~]$ sudo grep "wmnnew01" /etc/shadow
wmnnew01:$y$j9T$rsFkkp7J7Lv/W8usAmTut1$mfSbNFbtBkRz0bWAASFkEhRHXjSJqSWDlhd9L1rGSnB:20729:0:99999:7:::
这时密码文件中密码字段没有!
3)解锁没有密码的用户:
查看锁定密码信息:
[wmn@studry ~]$ sudo grep "wmn06" /etc/shadow
wmn06:!:20729:0:99999:7:::
重新设置密码:
[wmn@studry ~]$ sudo passwd wmn06 
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: password updated successfully
查看密码是否解锁:
[wmn@studry ~]$ sudo grep "wmn06" /etc/shadow
wmn06:$y$j9T$F1DKpOcb078bm05N7VRZW1$EfLCR3/Mef068aDjbS1dT3covsFNcgl9C0QYmElg4K9:20729:0:99999:7:::
  • 修改用户的主组(不建议使用):

修改用户的主组,修改的用户主组必须存在。

0)查看用户信息:
[wmn@studry ~]$ sudo id wmn04
uid=2001(wmn04) gid=2001(wmn04) groups=2001(wmn04),1002(devops),2002(ops)
1)修改用户的主组:
[wmn@studry ~]$ sudo usermod wmn04 -g dev
2)查看是否修改成功:
[wmn@studry ~]$ id wmn04
uid=2001(wmn04) gid=2005(dev) groups=2005(dev),1002(devops),2002(ops)

1.0.5.3 删除用户--userdel

userdel用来删除用户的,注意事项:

  • userdel默认只删除用户,不删除用户的家目录及邮件目录的
  • userdel删除用户默认会把用户的主组也删除掉。

常用参数

参数 说明
-r 删除用户并且把家目录也删除掉
-f 强制删除用户

例子:

  • 默认删除用户:
1)删除用户wmn02:
[wmn@studry ~]$ sudo userdel wmn02
2)查看家目录是否删除:
[wmn@studry ~]$ ls /home/
wmn  wmn02  wmn04  wmn06
3)查看邮件目录是否删除
[wmn@studry ~]$ ls /var/spool/mail/wmn02 -d 
/var/spool/mail/wmn02
`说明:`
使用默认的参数删除用户,不会删除家目录及邮件目录,只会把用户删除掉。
  • 删除用户并且把家目录及邮件目录删除:
0)查看用户信息:
[wmn@studry ~]$ sudo grep "wmn05" /etc/passwd
wmn05:x:2002:2002::/opt/wmn05:/bin/bash
1)删除用户:
[wmn@studry ~]$ sudo userdel wmn05 -r
2)查看用户的家目录是否删除:
[wmn@studry ~]$ ls /opt/
jenkins  wmn03  wmn08
3)查看用户的邮件目录删除:
[wmn@studry ~]$ ls /var/spool/mail/wmn05
ls: cannot access '/var/spool/mail/wmn05': No such file or directory

1.0.5.4 修改用户的密码--passwd

passwd用来修改密码的。

注意事项:

  • 使用passwd修改密码,如果使用root或者在wheel用户组下的用户使用sudo修改密码没有密码现在。
  • 如果普通用户修改密码需要老密码验证,并且新的密码需要满足复杂性要求。
  • 普通用户无法给自己设置密码,只能修改密码。

例子:

  • 使用wheel组下使用sudo设置普通用户的密码:
1)修改密码:
[wmn@studry ~]$ sudo passwd user01
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: password updated successfully
`说明:`
使用sudo修改密码不需要满足密码的复杂性。
  • 普通用户修改自己的密码:
0)切换用户:
[wmn@studry ~]$ sudo su - user01
1)修改自己的密码:
[user01@studry ~]$ passwd
Current password:   #需要输入自己的以前密码
New password: #新的密码需要满足8位复杂度 
BAD PASSWORD: The password is shorter than 8 characters
passwd: Authentication token manipulation error
passwd: password unchanged
  • 非交互式修改密码:
1)方式一:passwd --stdin
[wmn@studry ~]$ echo "123456"  |sudo passwd --stdin user01
BAD PASSWORD: The password is shorter than 8 characters
[wmn@studry ~]$ echo "wo211314"  |sudo passwd --stdin user01
`说明:`
使用这种方式修改密码,需要满足8位复杂度。
这种方式只能rockylinux使用
2)方式二:chpasswd
[wmn@studry ~]$  echo "user01:123456"|sudo chpasswd
[wmn@studry ~]$ 
`注意事项:`
这种方式rockylinux和Ubuntu都可以使用。
rockylinux10使用这种方式不需要满足密码复杂度。
Ubuntu26.04使用这种方式修改密码需要满足密码复杂度。

1.0.5.5 组成员管理--gpasswd

gpasswd是用来把某个用户添加到某个附加组中,也可某个附加组删除某个用户,不让某个用户在这个附加组中。

常用参数:

选项参数 说明
-a 把某个用户添加到某个组中,作为附加用户
-d 把某个用户从某个附加组中删除掉

示例:

  • 把user01用户添加到devops组中:
1)把用户添加到附加组中:
[wmn@studry ~]$ sudo gpasswd -a user01 devops
Adding user user01 to group devops
2)查看用户是否添加成功:
[wmn@studry ~]$ id user01
uid=3002(user01) gid=3002(user01) groups=3002(user01),1002(devops)
`说明:`
-a把用户添加附加组中格式是:[用户名] [附加组名]
  • 把某个用户从某个附加组中删除掉:
1)进行删除:
[wmn@studry ~]$ sudo gpasswd -d user01 devops
Removing user user01 from group devops
2)查看是否删除成功:
[wmn@studry ~]$ id user01
uid=3002(user01) gid=3002(user01) groups=3002(user01)

2. 文件目录权限管理

2.1 修改文件或目录的属组和属主权限--chown

chown是修改文件或目录的属组和属主权限。

常用参数:

参数选项 说明
-R 修改目录本身及递归目录下内容的属主和属组

例子:

  • 创建用户及用户组和文件:
1)创建用户组:
[wmn@studry ~]$ sudo groupadd devops
[wmn@studry ~]$ sudo groupadd  ops 
[wmn@studry ~]$ sudo groupadd dev
[wmn@studry ~]$ sudo groupadd dba
[wmn@studry ~]$ tail -5 /etc/group
dba01:x:3003:
devops:x:3004:
ops:x:3005:
dev:x:3006:
2)创建用户:
[wmn@studry ~]$ sudo useradd  tianyu
[wmn@studry ~]$ sudo useradd  jinghui
[wmn@studry ~]$ sudo useradd  wmn01 -G devops
[wmn@studry ~]$ sudo useradd  wmn02 -G ops
[wmn@studry ~]$ sudo useradd  wmn03 -G dev
3)创建文件:
[wmn@studry ~]$ sudo mkdir -p /opt/{dir01,dir02}
[wmn@studry ~]$ sudo touch /opt/dir0{1,2}/file{0..10}
[wmn@studry ~]$ ls /opt/dir0*
/opt/dir01:
file0  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

/opt/dir02:
file0  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

[wmn@studry ~]$ sudo touch /opt/file{01..03}
[wmn@studry ~]$ ls /opt/file0*
/opt/file01  /opt/file02  /opt/file03
  • 把/opt/file01文件属主修改成tianyun:
[wmn@studry ~]$ sudo chown tianyu /opt/file01 
[wmn@studry ~]$ sudo ls -l /opt/file01
-rw-r--r--. 1 tianyu root 0 Oct  3 17:59 /opt/file01
  • 把/opt/file01文件属组修改成ops:
[wmn@studry ~]$ sudo chown :ops /opt/file01 
[wmn@studry ~]$ sudo ls -l /opt/file01
-rw-r--r--. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
  • 把/opt/file02文件属组修改成devops,属主修改成jinghui
[wmn@studry ~]$ sudo chown jinghui:devops /opt/file02 
[wmn@studry ~]$ ls -l /opt/file02
-rw-r--r--. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
  • 递归修改/opt/dir01目录下的属主位wmn01,属组位dev:
1)进行修改:
[wmn@studry ~]$ sudo chown -R wmn01:dev /opt/dir01
2)查看是否修改成功:
[wmn@studry ~]$ ls -ld /opt/dir01
drwxr-xr-x. 2 wmn01 dev 150 Oct  3 17:58 /opt/dir01
[wmn@studry ~]$ ls -l /opt/dir01
total 0
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file0
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file1
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file10
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file2
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file3
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file4
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file5
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file6
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file7
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file8
-rw-r--r--. 1 wmn01 dev 0 Oct  3 17:58 file9

2.2 修改文件或目录属组--chgrp

chgrp是用来修改文件或目录的属组的,不能修改属主权限。

常用参数:

参数 说明
-R 递归修改目录下的属组和目录本身的属组

例子:

  • 将文件/opt/file03属组修改成dba:
[wmn@studry ~]$ sudo chgrp dba /opt/file03 
[wmn@studry ~]$ ls -l /opt/file03
-rw-r--r--. 1 root dba 0 Oct  3 17:59 /opt/file03
  • 修改/opt/dir02目录的属组,不修改目录下内容的属组:
1)进行修改:
[wmn@studry ~]$ sudo chgrp dba /opt/dir02
2)查看是否修改成功:
[wmn@studry ~]$ ls -ld /opt/dir02/
drwxr-xr-x. 2 root dba 150 Oct  3 17:58 /opt/dir02/
[wmn@studry ~]$ ls -l /opt/dir02/
total 0
-rw-r--r--. 1 root root 0 Oct  3 17:58 file0
-rw-r--r--. 1 root root 0 Oct  3 17:58 file1
-rw-r--r--. 1 root root 0 Oct  3 17:58 file10
-rw-r--r--. 1 root root 0 Oct  3 17:58 file2
-rw-r--r--. 1 root root 0 Oct  3 17:58 file3
-rw-r--r--. 1 root root 0 Oct  3 17:58 file4
-rw-r--r--. 1 root root 0 Oct  3 17:58 file5
-rw-r--r--. 1 root root 0 Oct  3 17:58 file6
-rw-r--r--. 1 root root 0 Oct  3 17:58 file7
-rw-r--r--. 1 root root 0 Oct  3 17:58 file8
-rw-r--r--. 1 root root 0 Oct  3 17:58 file9
  • 修改/opt/dir02目录及目录下内容属组为qa:
1)进行修改:
[wmn@studry ~]$ sudo chgrp  -R  qa /opt/dir02
2)查看是否修改成功:
[wmn@studry ~]$ ls -ld /opt/dir02
drwxr-xr-x. 2 root qa 150 Oct  3 17:58 /opt/dir02
[wmn@studry ~]$ ls -l /opt/dir02
total 0
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file0
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file1
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file10
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file2
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file3
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file4
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file5
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file6
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file7
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file8
-rw-r--r--. 1 root qa 0 Oct  3 17:58 file9

2.3 修改文件目录权限--chmod

chmod是修改文件或目录的权限。

注意事项:

  • 修改文件的权限由文件目录的所属主或超级管理员或使用sudo才能修改。
  • 修改文件或目录的权限由两种模式,一种是带字符修改,另一种是数字模式修改。

字符模式及参数:

  • 字符模式修改权限

操作对象:

操作对象 说明
u 属主
g 属组
o 其他人
a 所有者

操作符:

操作符 说明
+ 添加权限
- 移除权限
= 设置精确权限

权限:

权限 说明 数字
r 只读权限 4
w 读写权限 2
x 执行权限 1
属主s 超级权限,只能在二进制命令文件使用,可以充当文件或目录的属主 4
属组s 超级权限,作用在目录上,如果在该目录下创建文件或目录,它会继承设置属组s目录的属组 2
其他人t 粘滞位,作用目录,如果这个目录设置了t,所有人都可以创建文件或目录,但是只能修改或删除自己创建的文件或目录 1

数字模式

数字对应的权限:

数字 权限
4*** 超级权限,属主超级权限
2*** 属组继承超级权限
1*** 粘滞位
4 只读权限
2 读写权限
1 可执行权限

普通权限例子--字符模式

  • 给/opt/file01属主添加可执行权限:
1)查看文件权限:
[wmn@studry ~]$ ls -l /opt/file01 
-rw-r--r--. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
2)进行添加权限:
[wmn@studry ~]$ sudo chmod u+x /opt/file01
3)查看是否添加成功:
[wmn@studry ~]$ ls -l /opt/file01 
-rwxr--r--. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
  • 给/opt/file01属组移除可读权限:
1)查看权限:
[wmn@studry ~]$ ls -l /opt/file01
-rwxr--r--. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
2)设置权限:
[wmn@studry ~]$ sudo chmod g-r /opt/file01
3)查看是否修改成功:
[wmn@studry ~]$ ls -l /opt/file01
-rwx---r--. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
  • 给/opt/file01其他人设置可读可写权限:
1)查看权限:
[wmn@studry ~]$ ls -l /opt/file01
-rwx---r--. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
2)设置权限:
[wmn@studry ~]$ sudo chmod o+rw /opt/file01 
3)查看是否修改成功:
[wmn@studry ~]$ ls -l /opt/file01
-rwx---rw-. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
  • 给/opt/file01其他人设置可读可写可执行权限:
1)查看权限:
[wmn@studry ~]$ ls -l /opt/file01
-rwx---rw-. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
2)进行设置:
[wmn@studry ~]$ sudo chmod o=rwx /opt/file01 
3)查看是否设置成功:
[wmn@studry ~]$ ls -l /opt/file01
-rwx---rwx. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
  • 给/opt/file01属组和属主设置可读可写可执行权限,其他人设置可读可写权限:
1)查看权限:
[wmn@studry ~]$ ls -l /opt/file01
-rwx---rwx. 1 tianyu ops 0 Oct  3 17:59 /opt/file01
2)修改权限:
[wmn@studry ~]$ sudo chmod ug=rwx,o=rw /opt/file01
3)查看权限是否修改成功:
[wmn@studry ~]$ ls -l /opt/file01
-rwxrwxrw-. 1 tianyu ops 0 Oct  3 17:59 /opt/file01

普通权限例子--数字模式

  • 给/opt/file02设置755权限:
1)查看文件权限:
[wmn@studry ~]$ ls -l /opt/file02
-rw-r--r--. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
2)设置权限:
[wmn@studry ~]$ sudo chmod 0755 /opt/file02 
3)查看权限设置成功
[wmn@studry ~]$ ls -l /opt/file02
-rwxr-xr-x. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
  • 给/opt/file02设置644权限:
1)查看文件权限:
[wmn@studry ~]$ ls -l /opt/file02
-rwxr-xr-x. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
2)设置权限:
[wmn@studry ~]$ sudo chmod 644 /opt/file02
3)查看权限设置成功
[wmn@studry ~]$ ls -l /opt/file02
-rw-r--r--. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
  • 给/opt/file02设置700权限:
1)查看文件权限:
[wmn@studry ~]$ ls -l /opt/file02
-rw-r--r--. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
2)设置权限:
[wmn@studry ~]$ sudo chmod 700 /opt/file02
3)查看权限设置成功:
[wmn@studry ~]$ ls -l /opt/file02
-rwx------. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
  • 给/opt/file02设置600权限:
1)查看文件权限:
[wmn@studry ~]$ ls -l /opt/file02
-rwx------. 1 jinghui devops 0 Oct  3 17:59 /opt/file02
2)设置权限:
[wmn@studry ~]$ sudo chmod 600 /opt/file02
3)查看权限设置成功:
[wmn@studry ~]$ ls -l /opt/file02
-rw-------. 1 jinghui devops 0 Oct  3 17:59 /opt/file02

2.4 高级权限(SUID/SGID/StickyBIT)

文件特殊权限有下面三种:分别是SUID、SGID、StickyBIT.

2.4.1 SUID。

作用属性:

属性 说明
作用对象 可执行的二进制指令文件
表示方法 属主的x位显示了s
数字值 4
shell脚本 不生效,如果脚本中的二进制指令具有SUID权限则能执行成功。
o没有执行权限 普通用户不能执行授权的二进制指令文件

注意事项

  • 注意事项: 当有特殊权限的二进制文件的属主没有执行权,小s变成了S,这时普通用户也可以执行特殊权限的二进制命令。
  • 当其他人没有了x,则不能执行这个特殊权限的二进制命令。

例子:

  • 普通用户创建用户

如果创建用户的二进制命令文件没有授权SUID,普通用户执行不成功,如果授权了二进制指令SUID,并二进制命令文件的其他由执行权限,则普通用户可以执行成功这个二进制命令文件。

没有授权SUID执行创建用户指令:

[wmn@studry ~]$ sudo su - user01
[user01@studry ~]$ useradd wmn10
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.

给创建用户的指令设置成SUID:

1)给useradd指令设置SUID
[wmn@studry ~]$ sudo chmod +s /usr/sbin/useradd 
2)查看是否设置成功:
[wmn@studry ~]$ ls -l /usr/sbin/useradd
-rwsr-sr-x. 1 root root 141384 Feb 23  2026 /usr/sbin/useradd
3)普通用户创建用户:
[user01@studry ~]$ useradd wmn11
4)查看是否创建成功:
[user01@studry ~]$ id wmn11
uid=1007(wmn11) gid=1012(wmn11) groups=1012(wmn11)
`说明:`
给这个指令设置了SUID,不管任何用户执行这个二进制指令,都把执行者当做二进制的命令指令的属主来运行。
  • 案例二:普通用户能查看/etc/shadow文件:

默认普通用户是不能查看/etc/shadiw文件的:

[user01@studry ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

把二进制cat指令文件设置成SUID权限:

1)给cat命令设置SUID权限
[wmn@studry ~]$ sudo chmod u+s /usr/bin/cat
[sudo] password for wmn: 
2)查看是否设置成功:
[wmn@studry ~]$ ls -l /usr/bin/cat
-rwsr-xr-x. 1 root root 40744 Jan 15  2026 /usr/bin/cat
3)普通用户进行查看/etc/shadow文件:
[user01@studry ~]$ cat /etc/shadow
root:$y$j9T$u8iAjWChvZcN5jIa6Biw6UKg$SPEySAj3xbXm.HgtT6aGwQa4/a2yCuyBWpfhNyjiTZ5::0:99999:7:::
bin:*:20186:0:99999:7:::
  • 测试三:普通用户使用rm删除root目录下文件目录

在 /root目录创建目录:

[wmn@studry ~]$ sudo mkdir -p /root/wmn02
[wmn@studry ~]$ sudo ls -ld /root/wmn02
drwxr-xr-x. 2 root root 6 Oct  3 19:07 /root/wmn02

查看普通用户是否能删除/root目录下的权限:

[user01@studry ~]$ rm -rf /root/wmn02
rm: cannot remove '/root/wmn02': Permission denied

设置rm的SUID:

1)设置SUID权限:
[wmn@studry ~]$ sudo chmod u+s /usr/bin/rm
2)查看是否设置成功:
[wmn@studry ~]$ ls -l /usr/bin/rm
-rwsr-xr-x. 1 root root 61848 Jan 15  2026 /usr/bin/rm
3)普通用户进行删除/root目录下目录:
[user01@studry ~]$ rm -rf /root/wmn02
[user01@studry ~]$ 
  • 验证脚本是否能使用SUID:

创建个脚本:

[wmn@studry ~]$ sudo cat >file.sh<<'EOF'
> cat /etc/shadow
> EOF

查看脚本中的指令是否有SUID权限:

[wmn@studry ~]$ ls -l /usr/bin/cat
-rwsr-xr-x. 1 root root 40744 Jan 15  2026 /usr/bin/cat

给脚本设置SUID权限:

[wmn@studry ~]$ chmod u+s file.sh
[wmn@studry ~]$ ls -l file.sh
-rwsr-xr-x. 1 wmn wmn 16 Oct  3 19:12 file.sh

把脚本拷贝到普通用户的家目录下:

[wmn@studry ~]$ sudo cp file.sh /home/user01/

普通用户运行脚本,查看结果:

[user01@studry ~]$ sh /home/user01/file.sh 
root:$y$j9T$u8iAjWChvZcN5jIa6Biw6UKg$SPEySAj3xbXm.HgtT6aGwQa4/a2yCuyBWpfhNyjiTZ5::0:99999:7:::
bin:*:20186:0:99999:7:::
daemon:*:20186:0:99999:7:::

把cat命令的SUID移除掉:

[wmn@studry ~]$ sudo chmod u-s /usr/bin/cat
[wmn@studry ~]$ ls -l /usr/bin/cat
-rwxr-xr-x. 1 root root 40744 Jan 15  2026 /usr/bin/cat

普通用户运行脚本:

[user01@studry ~]$ sh /home/user01/file.sh 
cat: /etc/shadow: Permission denied

说明:

SUID不能作用于shell脚本,当shell脚本中的二进制指令具有SUID权限后,shell脚本才有权限。

2.4.2 SGID

SGID属性:

  • SGID作用于目录,当目录有SGID权限,在目录下创建的文件和目录等内容,继承了上一个目录的属组。

例子:

  • 准备环境:
1)创建目录:
[wmn@studry ~]$ sudo mkdir  /mnt/dir02
[wmn@studry ~]$ ls -ld /mnt/dir02
drwxr-xr-x. 2 root root 6 Oct  3 19:52 /mnt/dir02
2)创建用户组:
[wmn@studry ~]$ sudo groupadd oqps
3)给新创建的目录授权oqps属组:
[wmn@studry ~]$ sudo chown :oqps /mnt/dir02
[wmn@studry ~]$ ls -ld /mnt/dir02
drwxr-xr-x. 2 root oqps 6 Oct  3 19:52 /mnt/dir02
  • 给目录创建SGID:
[wmn@studry ~]$ sudo chmod g+s /mnt/dir02
[wmn@studry ~]$ ls -ld /mnt/dir02
drwxr-sr-x. 2 root oqps 6 Oct  3 19:52 /mnt/dir02
  • 在目录下创建文件和目录是否继承/mnt/dir02属组权限:
[wmn@studry ~]$ sudo mkdir -p /mnt/dir02/dir
[wmn@studry ~]$ sudo touch /mnt/dir02/file{00,04}
[wmn@studry ~]$ ls -l /mnt/dir02/
total 0
drwxr-sr-x. 2 root oqps 6 Oct  3 19:56 dir
-rw-r--r--. 1 root oqps 0 Oct  3 19:56 file00
-rw-r--r--. 1 root oqps 0 Oct  3 19:56 file04
[wmn@studry ~]$ ls -l /mnt/dir02 -d 
drwxr-sr-x. 3 root oqps 45 Oct  3 19:56 /mnt/dir02

2.4.3 Sticky BIT(粘滞位)

属性说明:

  • 粘滞位作用在目录上的,在目录其他人权限的x位上变为t
  • 在这个目录下任何用户都可以创建文件或目录,但是不能修改删除重命名其他用户创建的目录及文件,只能对自己创建的目录或文件有权限修改。

例子:

  • 案例准备
1)创建目录:
[wmn@studry ~]$ sudo mkdir -p /opt/public
2)设置777权限:
[wmn@studry ~]$ sudo chmod 777 /opt/public
3)查看权限:
[wmn@studry ~]$ ls /opt/public -dl
drwxrwxrwx. 2 root root 6 Oct  3 20:05 /opt/public
  • 设置粘滞位:
[wmn@studry ~]$ sudo chmod o+t /opt/public
[wmn@studry ~]$ ls -ld /opt/public
drwxrwxrwt. 2 root root 6 Oct  3 20:05 /opt/public
  • user01用户创建目录:
[user01@studry public]$ mkdir  -p 222
[user01@studry public]$ mkdir  -p 333
[user01@studry public]$ mkdir  -p 444
[user01@studry public]$ ls -l 
total 0
drwxr-xr-x. 2 user01 user01 6 Oct  3 20:06 222
drwxr-xr-x. 2 user01 user01 6 Oct  3 20:06 333
drwxr-xr-x. 2 user01 user01 6 Oct  3 20:06 444
  • user02用户是否能删除:
[user02@studry public]$ ls -l
total 0
drwxr-xr-x. 2 user01 user01 6 Oct  3 20:06 222
drwxr-xr-x. 2 user01 user01 6 Oct  3 20:06 333
drwxr-xr-x. 2 user01 user01 6 Oct  3 20:06 444
[user02@studry public]$ rm -rf 222
rm: cannot remove '222': Operation not permitted
[user02@studry public]$ rm -rf 333
rm: cannot remove '333': Operation not permitted

2.4.4 文件属性扩展--chattr/lsattr

chattr:设置文件属性

chattr是设置文件属性比普通权限更底层,能提供额外的文件保护和控制机制,连root都无法绕过。

权限属性

属性 作用 使用场景
+i 不可以修改,连root用户也不能 保护关键性文件
+a 只能在文件末尾追加 保护日志文件,如果切割,先取消掉,然后在进行切割
+A 不更新访问时间atime 减少磁盘IO

示例:

  • +i

给文件设置属性:

1)查看文件属性:
[wmn@studry ~]$ sudo lsattr /etc/hosts
---------------------- /etc/hosts
2)设置+i属性:
[wmn@studry ~]$ sudo chattr +i /etc/hosts
查看是否添加成功:
[wmn@studry ~]$ sudo lsattr /etc/hosts 
----i----------------- /etc/hosts
3)进行测试:
sudo用户有没有权限修改文件
[wmn@studry ~]$ sudo echo "222" >>/etc/hosts
-bash: /etc/hosts: Operation not permitted
root用户有没有权限修改文件:
[wmn@studry ~]$ sudo su -
Last login: Mon Sep 28 21:49:57 CST 2026 on pts/1
[root@studry ~]# echo 2222 >> /etc/hosts 
-bash: /etc/hosts: Operation not permitted
4)解除保护:
[root@studry ~]# sudo chattr -i /etc/hosts
[root@studry ~]# sudo lsattr /etc/hosts
---------------------- /etc/hosts

给目录设置属性:

1)创建测试目录:
[root@studry ~]# mkdir -p /mnt/dir03
2)设置+i权限属性:
[root@studry ~]# chattr +i /mnt/dir03
3)查看是否添加成功:
[root@studry ~]# lsattr -d  /mnt/dir03
----i----------------- /mnt/dir03
4)验证:
使用root用在目录下创建目录
[root@studry ~]# mkdir -p /mnt/dir03/222
mkdir: cannot create directory ‘/mnt/dir03/222’: Operation not permitted
使用sudo用户创建目录
[wmn@studry ~]$ sudo mkdir -p /mnt/dir03/222
[sudo] password for wmn: 
mkdir: cannot create directory ‘/mnt/dir03/222’: Operation not permitted
  • +a权限属性

+a权限属性只能让用户追加文件内容,不能重定向及修改文件内容。

1)环境准备:
创建目录
[wmn@studry ~]$ touch file01.txt
写入数据:
[wmn@studry ~]$ echo 222 >>file01.txt 
查看文件内容:
[wmn@studry ~]$ cat file01.txt 
222
2)设置+a文件属性:
[wmn@studry ~]$ sudo chattr +a file01.txt
查看是否设置成功:
[wmn@studry ~]$ sudo lsattr file01.txt
-----a---------------- file01.txt
3)进行验证:
进行追加:
[wmn@studry ~]$ echo 2222 >>file01.txt 
查看是否追加成功:
[wmn@studry ~]$ cat file01.txt 
222
2222
重定向是否成功:
[wmn@studry ~]$ echo 222 > file01.txt 
-bash: file01.txt: Operation not permitted
使用root用户进行测试:
[wmn@studry ~]$ sudo su -
Last login: Sat Oct  3 20:16:36 CST 2026 on pts/5
[root@studry ~]# echo 222 > /home/wmn/file01.txt 
-bash: /home/wmn/file01.txt: Operation not permitted
[root@studry ~]# rm -rf /home/wmn/file01.txt
rm: cannot remove '/home/wmn/file01.txt': Operation not permitted
lsattr:查看文件属性

lsattr用来查看文件扩展属性的

参数:

参数: 说明
-d 查看目录扩展属性
-R 查看目录下所有内容的扩展属性

例子:

  • 查看文件扩展属性:
[root@studry ~]# lsattr /etc/shadow
---------------------- /etc/shadow
  • 查看目录扩展属性:
[root@studry ~]# lsattr -d /etc/
---------------------- /etc/
  • 查看目录下所有内容的扩展属性:
[root@studry ~]# lsattr -R /mnt
---------------------- /mnt/dir02

/mnt/dir02:
---------------------- /mnt/dir02/dir

/mnt/dir02/dir:

---------------------- /mnt/dir02/file00
---------------------- /mnt/dir02/file04

----i----------------- /mnt/dir03

/mnt/dir03:

---------------------- /mnt/file01.txt

posted on 2026-10-03 20:40  wangmengnan  阅读(12)  评论(0)    收藏  举报

导航