用户于用户组及文件权限管理命令
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) 收藏 举报
浙公网安备 33010602011771号