第四章、账号和权限管理
一、管理用户账号和组账号
1、用户账号和组账号
1.1用户账号
1.1.1超级用户——root,拥有最高权限且是唯一的
1.1.2普通用户——个人用户,登录时可以看到用户名,由root用户或其他管理员用户创建,拥有权限会受到限制,一般在用户自己宿主目录中拥有完整权限
1.1.3程序用户——管理程序,安装Linux操作系统及部分应用程序会添加一些特定的低权限用户账号,这些账号一般不会登录到系统,仅仅用于维持系统或某个程序正常运行(例如bin、daemon、ftp、mail)
1.2su命令——切换用户
只是切换了身份,但是shell环境、环境变量、工作目录等不变
[root@xiaowang ~]# useradd WL ###创建用户
[root@xiaowang ~]# su ###刷新
[root@xiaowang ~]# su WL ###切换用户
[WL@xiaowang root]$ id WL ###查看用户信息
uid=1003(WL) gid=1003(WL) groups=1003(WL)
[WL@xiaowang root]$ su root ###切回root用户
Password:Abc123 ###需要输入密码
[root@xiaowang ~]#
[root@xiaowang ~]# echo $PATH ###查看当前系统环境变量路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin ###表示系统会在这些路径中查找可执行文件
1.3组账号
1.3.1基本组(私有组)——基本组账号只有一个,一般为创建用户时指定的组,在/etc/passwd文件中第四字段记录的为该用户的基本组GID号
1.3.2附加组(公共组)——用户除了基本组以外额外添加指定的组,可有可无,可以有多个
1.3.3UID和GID
UID(User IDentity,用户标识号)——root超级用户(0)、程序用户(1~999)普通用户(1000+)
GID(Group IDentify,组标识号)——root超级用户(0)、程序用户(1~999)普通用户(1000+)
id +用户名 ###查看用户UID、GID、组
[root@xiaowang ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@xiaowang ~]# id wl
uid=1000(wl) gid=1000(wl) groups=1000(wl)
[root@xiaowang ~]# id WL
uid=1003(WL) gid=1003(WL) groups=1003(WL)
二、管理目录和文件的属性
1、用户账号管理文件/etc/passwd/
[root@xiaowang ~]# cat /etc/passwd | grep wl ###查看用户账号信息
wl:x:1000:1000::/home/wl:/bin/bash
或
[root@xiaowang ~]# tail -3 /etc/passwd ###查看用户账号信息
wl:x:1000:1000:wl:/home/wl:/bin/bash
test:x:1002:1001:test:/opt/test:/bin/bash
WL:x:1003:1003:WL:/home/WL:/bin/bash
字段一:用户账号的名称
字段二:用户密码占位符
字段三:用户账号的UID号
字段四:所属基本组账号的GID号
字段五:用户全名
字段六:宿主目录
字段七:登录shell信息(/bin/bash——可登录系统,/sbin/nologin和/bin/false——禁止用户登录系统)
shell有哪些环境:
①/bin/bash——允许登录
②/sbin/nologin——禁止登录
③/bin/sh
④/sbin/sync
2、用户密码管理文件/etc/shadow/
[root@xiaowang ~]# tail -3 /etc/shadow ###查看用户密码账号有效期登信息
wl:$6$TCvFgxOB$O9xUg5NZg4K7XiCliS54R7AcV6CWyJs7mi.J8WcFtP0aqLHou3RreTQutKV0NZ3hf4XUJRDpIWapPDwM6ooqW1:19937:0:99999:7:::
test:$6$6RPk7yQv$XElu.zZbboyo4UIri7GMAkoqBvxO1Kdc9GcfT91xBXxfRINMBT1.T2bBkUW7bIB3yVRvZOtSddEOloVWYag1q1:19937:0:99999:7:::
WL:!!:19937:0:99999:7:::
字段一:用户账号的名称
字段二:使用(MD5:加密工具)加密的密码子串信息,当为“*”或“!!”时表示此用户不能登录到系统,若该字段内容为空,则该用户无需密码即可登录系统
字段三:上次修改密码的时间,表示从1970年1月1日算起到最近一次修改密码所隔的天数
字段四:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码,默认值为0表示不进行限制
字段五:密码的最长有效天数,自本次修改密码后,经过该天数后必须再次修改密码,默认值为99999表示不进行限制
字段六:提前多少天告警用户密码将过期,默认值为7
字段七:在密码过期之后多少天禁用此用户
字段八:账号失效时间,默认值为空,表示账号永久可用
字段九:保留字段(未使用)
3、创建用户useradd +用户名
若未指定用户的宿主目录,则在/home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件
3.1主要的用户初始配置文件:
①~/.bash_profile
②~/.bashrc
③~/.bash_logout
若未明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息保存到/etc/group/和/etc/gshsdow/文件中
3.2常用选项:
选项 | 说明 |
---|---|
useradd -u | 指定用户的UID号,要求该UID号未被其他用户使用 |
useradd -d | 指定用户的宿主目录位置(当与-M一起使用时不生效) |
useradd -e | 指定用户的账户失效时间,可使用YYYY-MMM-DD的日期格式) |
useradd -g | 指定用户的基本组名(或使用GID号)对应的组名必须已存在 |
useradd --G | 指定用户的附加组名(或使用GID号)对应的组名必须已存在 |
useradd -s | 指定用户的登录shell环境(例如/bin/bash为可登录系统,/sbin/nologin和/bin/false——禁止用户登录系统) |
3.3示例:
[root@xiaowang ~]# id xiaolei ###查看用户是否存在
id: xiaolei: no such user ###查询结果该用户不存在
[root@xiaowang ~]# useradd xiaolei -u 1004 -d /opt/xiaolei -g 1004 -s /bin/bash ###创建用户
useradd: group '1004' does not exist ###报错1004该组名不存在
[root@xiaowang ~]# groupadd xiaolie ###先创建组名——groupadd +组名
[root@xiaowang ~]# useradd xiaolei -u 1004 -d /opt/xiaolei -g 1004 -s /bin/bash ###创建用户
[root@xiaowang ~]# tail -1 /etc/passwd ###查看用户信息
xiaolei:x:1004:1004:xiaolei:/opt/xiaolei:/bin/bash ###创建成功
4、判断用户是否存在——id+用户名
4.1示例:
[root@xiaowang ~]# id Wl ###查看用户是否存在
id: Wl: no such user ###查询结果该用户不存在
5、用户账号设置密码——passwd +选项 +用户名(仅root用户可以操作)
root用户可以指定用户名作为参数,对指定账号的密码进行管理
普通用户只能执行单独的“passwd”命令修改自己的密码
5.1常用选项:
选项 | 说明 |
---|---|
passwd -d | 清空指定用户的密码,仅使用用户名即可登录系统 |
passwd -l | 锁定用户账户(图形化界面可以登录,文字界面无法登录) |
passwd -S | 查看用户账户的状态(是否被锁定) |
passwd -u | 解锁用户账户 |
5.2示例:
[root@xiaowang ~]# passwd xiaolei ###设置密码
Changing password for user xiaolei.
New password:Abc123 ###输入密码
passwd: all authentication tokens updated successfully. ###设置成功
[root@xiaowang ~]# su xiaolei ###root用户切普通用户可以直接切换
[xiaolei@xiaowang root]$ su wl ###普通用户之间切换需要输入密码
Password:Abc132
[wl@xiaowang root]$ su xiaolei ###普通用户之间切换需要输入密码
Password:Abc123
[xiaolei@xiaowang root]$ su root ##普通用户切root用户需要输入密码
Password:Abc123
[root@xiaowang ~]#
[root@xiaowang ~]# passwd -d xiaolei ###passwd -d +用户名
Removing password for user xiaolei. ###删除xiaolei用户的密码
passwd: Success ###成功
5.3 root用户下使用echo +密码 | passwd --stdin +用户名,为指定用户设置密码
5.4示例:
[root@xiaowang ~]# echo Abc123 | passwd --stdin xiaolei
Changing password for user xiaolei.
passwd: all authentication tokens updated successfully.
备注:--stdin表示免交互,直接设置密码,不需要再次确认
--stdin:标准输入
--stout:标准输出
6、修改用户账号属性——usermod +选项 +用户名(仅root用户可以操作)
6.1常用选项:
选项 | 说明 |
---|---|
usermod -u | 修改用户的UID号 |
usermod -d | 修改用户宿主目录位置 |
usermod -e | 修改用户的账户失效时间,可使用YYYY-MMM-DD的日期格式 |
usermod -g | 修改用户的基本组名(或使用UID号) |
usermod -G | 修改用户的附加组名(或使用GID号) |
usermod -s | 指定用户的登录shell |
usermod -L | 锁定用户账户 |
usermod -U | 解锁用户账户 |
6.2示例:
[root@xiaowang ~]# cat /etc/passwd | grep xiaolei ###查看xiaolei的账号信息
xiaolei:x:1004:1004::/opt/xiaolei:/bin/bash ###UID号为1004
[root@xiaowang ~]# usermod -u 1005 xiaolei ###修改xiaolei的UID号为1005
usermod: user xiaolei is currently used by process 1983 ###表示修改的当前用户xiaolei正在被系统中的一个进程(进程ID为1983)使用,在修改用户信息时,需要确保该用户没有登录或没有正在运行的进程
[xiaolei@xiaowang root]$ exit ###使用Ctrl+D命令,表示退出当前xiaolei用户的回话并回到root用户的会话
[root@xiaowang ~]# usermod -u 1005 xiaolei ###修改xiaolei的UID号为1005
[root@xiaowang ~]# cat /etc/passwd | grep xiaolei ###查看xiaolei的账号信息
xiaolei:x:1005:1004::/opt/xiaolei:/bin/bash ###查看xiaolei的账号信息,UID号由1004变成1005,修改成功
[root@xiaowang ~]# usermod -L xiaolei ###锁定用户账户
[root@xiaowang ~]# passwd -S xiaolei ###查看用户状态
xiaolei LK 2024-08-04 0 99999 7 -1 (Password locked.) ###用户被锁定
[root@xiaowang ~]# passwd -u xiaolei ###解锁用户账户
Unlocking password for user xiaolei.
passwd: Success ###解锁成功
7、删除用户账号——userdel
7.1基本格式:
userdel 【-r】 +用户名
添加【-r】选项时可以将该用户的宿主目录一并删除
7.2示例:
[root@xiaowang ~]# userdel xiaolei ###删除用户账号
userdel: user xiaolei is currently used by process 2194 ###表示修改的当前用户xiaolei正在被系统中的一个进程(进程ID为2194)使用,在修改用户信息时,需要确保该用户没有登录或没有正在运行的进程
[xiaolei@xiaowang root]$ exit ###使用Ctrl+D命令,表示退出当前xiaolei用户的回话并回到root用户的会话
[root@xiaowang ~]# userdel xiaolei ###删除用户账号
[root@xiaowang ~]# id xiaolei ###查看用户是否存在
id: xiaolei: no such user ###查询结果该用户不存在
[root@xiaowang ~]# ls /opt/ ###查看宿主目录已被删除
1.txt test
7.3 cat /etc/profile
8、查询用户属于哪一个组——grep +“用户名” /etc/group
8.1示例:
[root@xiaowang ~]# grep "postfix" /etc/group
mail:x:12:postfix
[root@xiaowang ~]# grep "wl" /etc/group
wl:x:1000:
字段一:组账号的名称
字段二:占位符x
字段三:组账号的GID号
字段四:组账号包含的用户成员(一般不包括基本组对应的用户账号),多个成员之间用“,”分隔
/etc/group/——保存组账号文件
/etc/gshadow——保存组密码文件
9、添加组账号——groupadd
9.1示例:
[root@xiaowang ~]# groupadd -g 1005 wang ###创建组组账号名为wang,GID号为1005的组账号
[root@xiaowang ~]# tail -1 /etc/group ###查看组账号文件
wang:x:1005:
10、删除组账号——groupdel +组账号名
10.1示例:
[root@xiaowang ~]# groupdel wang ###删除组账号wang
[root@xiaowang ~]# grep "wang" /etc/group ###查看组账号文件中没有组账号wang
11、添加删除组成员——gpasswd +选项+组账号名
11.1常用选项:
选项 | 说明 |
---|---|
gpasswd -a | 向组内添加一个用户 |
gpasswd -d | 从组内删除一个用户 |
gpasswd -M | 定义组成员列表,以“,”逗号分隔 |
12、查询用户账号详细信息——finger
先安装finger软件包——yum install -y finger
12.1基本格式:
finger +用户名
12.2示例:
[root@xiaowang ~]# finger wl
Login: wl Name:
Directory: /home/wl Shell: /bin/bash
Last login Sun Aug 4 08:42 (CST) on pts/0
No mail.
No Plan.
Login: WL Name:
Directory: /home/WL Shell: /bin/bash
Last login Fri Aug 2 16:52 (CST) on pts/1
No mail.
No Plan.
13、查询已登录到主机的用户信息
w、who、users
13.1示例:
[root@xiaowang ~]# w
01:23:16 up 1:40, 2 users, load average: 0.00, 0.01, 0.04
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 23:43 1:39m 0.01s 0.01s -bash
root pts/0 20.0.0.1 23:43 4.00s 0.16s 0.01s w
14、设置目录和文件权限——chmod
14.1基本格式:
chmod +[ugoa…] [±=] [rwx]
"ugoa"表示该权限设置所针对的用户类别
u——代表文件属主
g——代表文件属组内的用户
o——代表其他任何用户
a——代表所有用户
+、-、=——表示设置权限的操作动作,+ 代表增加相应权限,- 代表减少相应权限,= 代表仅设置对应的权限
r、w、x是权限的字符组合形式,也可以拆分使用,如r、rx等
14.2示例:
chmod u+x 1.txt:将文件的用户(owner)权限设置为可执行
[root@xiaowang ~]# cd AA
[root@xiaowang AA]# ls
1.txt
[root@xiaowang AA]# ll 1.txt
-rwxr----x. 1 root root 115 Aug 5 08:55 1.txt
[root@xiaowang AA]# chmod g+w 1.txt
[root@xiaowang AA]# ll 1.txt
-rwxrw---x. 1 root root 115 Aug 5 08:55 1.txt
[root@xiaowang AA]# chmod o+r 1.txt
[root@xiaowang AA]# ll 1.txt
-rwxrw-r-x. 1 root root 115 Aug 5 08:55 1.txt
[root@xiaowang AA]#
14.3 chmod -R
递归修改指定目录下所有子目录及文件的权限
chmod -R 777 +文件或目录
15、设置文件和目录的归属——chown
15.1 基本格式:
chown+ [选项]+ 用户名+[:组名] +文件或目录
chown 属主 :文件或目录
chown属主 :属组 文件或目录
chgrp 属组:文件或目录
15.2常用选项:
-R :递归修改指定目录下所有子目录及文件的归属
16、设置目录和文件的默认权限——umask
指定目前用户在新建文件夹或目录时的权限默认值
新建的文件夹或目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的默认最大权限为7)
文件的权限的奇数会往前加1,目录不影响
17、补充——修改主机名
hostnamectl set-hostname +名字——永久修改
su/bash——刷新
od -R
递归修改指定目录下所有子目录及文件的权限
chmod -R 777 +文件或目录
15、设置文件和目录的归属——chown
15.1 基本格式:
chown+ [选项]+ 用户名+[:组名] +文件或目录
chown 属主 :文件或目录
chown属主 :属组 文件或目录
chgrp 属组:文件或目录
15.2常用选项:
-R :递归修改指定目录下所有子目录及文件的归属
16、设置目录和文件的默认权限——umask
指定目前用户在新建文件夹或目录时的权限默认值
新建的文件夹或目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的默认最大权限为7)
文件的权限的奇数会往前加1,目录不影响
17、补充——修改主机名
hostnamectl set-hostname +名字——永久修改
su/bash——刷新