普通用户——是为了让使用者能够使用linux系统资源而建立的---UID:1000-60000
在linux中,用户账号、密码、用户组信息和用户密码均是放在不同的配置文件中的
文件功能 | 文件名称 |
用户账号文件 | /etc/passwd |
用户密码文件 | /etc/shadow |
用户组账号文件 | /etc/group |
用户组密码文件 | /etx/gshadow |
超级用户:root:x:0:0:root:/root:/bin/bash
账户名称:密码占位符:UID:GID:个人资料:主目录:shell
字段说明:
字段 | 含义 |
账号名称 | 用户登录linux系统使用的名称 |
密码占位符 | 此处只是密码占位符“x” 或“*”。若为“x”,说明密码经过了shadow的保护 |
UID | 用户标识,数值,用来区分不同用户 |
GID | 用户所在基本组的标识 |
个人资料 | 记录用户完整姓名、地址等等个人信息 |
主目录 | 用户的主目录(家目录)(普通用户的主目录,在home目录下面,和用户名同名) |
Shell | 定义用户登录后激活的Shell,默认是Bash Shell 不允许登录:/sbin/nlogin;不允许交互:/bin/false |
账号名称:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
字段说明:
字段 | 含义 |
账号名称 | 登录名 |
加密口令 | 使用SHA-512/SHA-256/MD5算法加密后的密码 |
最后一次修改时间 | 以距离1970年1月1日的天数表示 |
最小时间间隔 | 密码多少天内不能修改。默认为0,表示不限制 |
最大时间间隔 | 密码多少天内必须修改。默认99999,表示不进行限制 |
警告时间 | 提前多少天警告密码将过期,默认7天,0为不提供警告 |
不活动时间 | 密码过期多少天禁用用户 |
失效时间 | 以距离1970年1月1日的天数表示,默认为空,表示永久可用 |
标志 | 保留 |
例:计算用户上次修改密码的日期
- [root@server ~]# head -1 /etc/shadow
- root:$6$ySIbEt.2ieNLyZRD$XC4ssD7iMSiGzJ.2wxGrH9tKSbwmetdtE75aKp9WtnH.0HiCC7zzD7DpAPIqT5OVO1rJ9RFA6ycE9KJ9Ht9CK/:19286:0:99999:7:::
- [root@server ~]# date -u -d "1970-01-01 UTC $((19286 * 86400 )) seconds"
- Fri Oct 21 00:00:00 UTC 2022
系统中的每一个组,在/etc/group文件中都有一行记录
字段说明:
字段 | 说明 |
Groupname | 组的名字 |
Passwd | 组的加密口令 |
GID | 是系统区分不同组的 |
Userlist | 用“,”分开的用户名。列出的是附加组的成员 |
选项 | 作用 |
-c(注释信息) | 设定与用户相关的说明信息 |
-d(目录) | 设定用户的家目录 |
-e(YYYY-MM-DD) | 设定用户失效日期,过期不能使用该账号 |
-f(天数) | 指定密码到期后多少天账号被禁用。0--到期立即禁用;-1--过期不被禁用 |
-g(组名或GID号) | 为用户指定所属的基本组,该组在指定时必须已存在 |
-M | 不创建用户家目录 |
-N | 不创建与用户名同名的基本组 |
-p(密码) | 指定用户的登录密码 |
-s(shell) | 指定用户登陆使用的Shell,默认bash |
-u(用户号) | 设定账号UID,默认已有用户的最大UID加1。若有-o选项,则可重复使用其它用户标识号 |
<1> 示例1:创建用户user1
- [root@server ~]# useradd user1
- [root@server ~]# grep user1 /etc/passwd---在passwd中查看含有user1的行
- user1:x:1001:1001::/home/user1:/bin/bash
- [root@server ~]# grep user1 /etc/group---在group中查看含有user1的行
- user1:x:1001:
<2> 示例2:创建用户user2,uid为1111
- [root@server ~]# useradd -u 1111 user2
- [root@server ~]# grep user2 /etc/group
- user2:x:1111:
- [root@server ~]# grep user2 /etc/passwd
- user2:x:1111:1111::/home/user2:/bin/bash
<3> 示例3:创建用户mysql,说明信息‘mysql server’,系统账号,可以登录
- [root@server ~]# useradd -c 'mysql server' -r mysql
- [root@server ~]# grep mysql /etc/passwd
- mysql:x:977:975:mysql server:/home/mysql:/bin/bash
<4> 示例4:创建用户li4,指定用户的家目录为/usr/li4
- [root@server ~]# useradd -d /usr/li4 li4
- [root@server ~]# grep li4 /etc/passwd
- li4:x:1112:1112::/usr/li4:/bin/bash
<5> 示例5:创建用户,为其设置密码
- [root@server ~]# openssl passwd -1 -salt `openssl rand -hex 8 ` '123456'---将123456设置成为随机数
- $1$efe34e21$k.sLYXp7oZ/W7IA2aFNXm1
- [root@server ~]# useradd -p '$1$efe34e21$k.sLYXp7oZ/W7IA2aFNXm1' user4—将设置为的随机数设置为密码
- 可用123456作为密码登录
<6> 示例6:新建用户user5,指定用户附加组是user1
- [root@server ~]# useradd -G user1 user5
- [root@server ~]# grep user1 /etc/group
- user1:x:1001:user5
选项 | 作用 |
-l | 更改账户的名称,必须在该用户未登录的情况下才能使用 |
-L | 锁定账户,令其不能登录使用 |
-U | 解锁用户账户 |
<1> 示例1:修改用户user1的失效时间为2022.11.07
- [root@server ~]# usermod -e '2022-11-27' user1
- [root@server ~]# grep user1 /etc/shadow
<2> 示例2:修改用户li4为lis
[root@server ~]# usermod -l lis li4
<3> 示例3:锁定用户user4
- [root@server ~]# usermod -L user4(锁定当前用户)
- [root@server ~]# passwd -S user4---查看当前user4的状态
- user4 LK 2022-11-06 0 99999 7 -1 (Password locked.)
<4> 示例4:解锁用户user4
- [root@server ~]# usermod -U user4(解锁当前用户)
- [root@server ~]# passwd -S user4
- user4 PS 2022-11-06 0 99999 7 -1 (Password set, MD5 crypt.)
<1> 示例:删除用户user4
[root@server ~]# userdel -r user4---连同用户的家目录以及邮件队列一起删除
选项 | 功能 |
-l | 锁定用户 |
-u | 解锁用户 |
-S | 显示用户当前状态信息 |
-i | 口令过期多少天后停用账户 |
-n | 指定口令最短存活期 |
<1> 示例1:设置密码
- 法1:
- [root@server ~]# passwd user1
- 法2:利用管道实现,将前面命令的标准输出作为后面命令的标准输入
- [root@server ~]# echo 2 | passwd --stdin user1
- 法3:
- [root@server ~]# echo "user1:3" | chpasswd
<2> 强制用户下次登录修改密码
[root@server ~]# chage -d 0 user1---强制user1下次登录修改密码
PS:su 和 su - 命令区别就是加载文件不一样
当用户执行sudo时,会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);若欲切换的身份与执行者身份相同,那也不需要输入密码。若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;若用户具有执行sudo的权限,便开始sudo后续接的命令
sudo -l
|
列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项
|
sudo -u 用户名 命令
|
以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是UID
|
sudo -k
|
清除存活期时间,下次再使用sudo时要再输入密码
|
sudo -b 命令
|
在后台执行指定的命令
|
sudo -p 提示语 <操作选项>
|
可以更改询问密码的提示语,其中%u会代换为使用者账号名称,%h会显示主机名称。
|
- [root@localhost ~]# vim /etc/sudoers或者[root@localhost ~]# visudo
- root ALL=(ALL) ALL
-
- 参数代表含义:
- 1、用户账号:系统哪个账号可以使用sudo这个命令。
- 2、登录者的来源主机名
- 3、可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。
- 4、可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。
-
- 说明:ALL是关键字,代表任何身份、主机或命令
例:为用户student增加添加用户和删除用户的权限
- [root@tianqinwei ~]# visudo --- 在管理员层面修改配置文件
- ## The COMMANDS section may have other options added to it.
- ##
- ## Allow root to run any commands anywhere
- root ALL=(ALL) ALL
- student ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel --- 为student用户增加添加用户和删除用户的权限
- ## Allows members of the 'sys' group to run networking, software,
- ## service management apps and more.
- [student@tianqinwei ~]$ sudo -l --- 查看student用户的权限
-
- We trust you have received the usual lecture from the local System
- Administrator. It usually boils down to these three things:
-
- #1) Respect the privacy of others.
- #2) Think before you type.
- #3) With great power comes great responsibility.
-
- [sudo] password for student:
- Matching Defaults entries for student on tianqinwei:
- !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS
- DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
- LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
- LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
- XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
-
- User student may run the following commands on tianqinwei:
- (ALL) /usr/sbin/useradd, /usr/sbin/userdel --- 其所拥有的权限
-
- [student@tianqinwei ~]$ sudo useradd z3 --- 用sudo命令创建用户z3(由于是分配的权限,所以得用sudo)
- [student@tianqinwei ~]$ sudo userdel -r z3 --- 删除用户z3
选项 | 功能 |
-g GID | 制定新用户组的标识号(GID),默认是已有最大GID值加1 |
-r | 建立一个系统组账号,与-g不同时使用时,分配一个1-999的GID |
<1> 示例1:创建组hr
[root@server ~]# groupadd hr
<2> 示例2:创建组IT,gid为1234
[root@server ~]# groupadd -g 1234 IT
选项 | 功能 |
-g GID | 为用户组指定新的组标识号 |
-n | 将用户组的名字改为新名字,修改用户组的名称和用户组的GID值 |
<1> 示例1:修改用户组hr为HR
[root@server ~]# groupmod -n HR hr
格式: gpasswd [选项] [用户] [组]
选项 | 功能 |
-a | 将用户加入组 |
-d | 将用户移出组 |
-M | 同时添加多个用户 |
-A | 给组指派管理员 |
<1> 示例1:向组内添加成员:将user1添加到HR组
- 法1:
- [root@server ~]# usermod -a user1 -G HR
- [root@server ~]# grep HR /etc/group
- HR:x:1115:user1
- 法2:
- [root@server ~]# gpasswd -d user1 HR---将user1从HR组中移除
- Removing user user1 from group HR
- [root@server ~]# gpasswd -a user1 HR---将user1添加到HR组中
- Adding user user1 to group HR
<2> 示例2:将user2和user1都加入IT组
- [root@server ~]# gpasswd -M user2,user1 IT
- [root@server ~]# grep IT /etc/group
- IT:x:1234:user2,user1
<3> 示例3:设置user2为IT组管理员
[root@server ~]# gpasswd -A user2 IT
<1> 示例:删除用户组IT、HR
- [root@server ~]# groupdel IT
- [root@server ~]# groupdel HR
命令格式 | 作用 |
uesrs | w | who | 显示当前用户信息(三条命令) |
id [用户名] | 显示当前用户或指定用户的ID,以及所属组ID |
groups [用户名] | 显示当前用户或指定用户所属组账号的信息 |
- [root@localhost ~]# id root --- 显示出某个用户的详细信息
- uid=0(root) gid=0(root) groups=0(root)
- [root@localhost ~]# id student
- uid=1000(student) gid=1000(student) groups=1000(student)
-
- [root@localhost ~]# groups root --- 显示出用户的所属组信息
- root : root
- [root@localhost ~]# groups student
- student : student
- [root@localhost ~]# users
- root root
- [root@localhost ~]# last -2 --- 显示出最近登录的两条用户信息
- root pts/0 192.168.174.1 Fri Mar 3 13:56 still logged in
- root tty2 tty2 Fri Mar 3 13:56 still logged in
-
- wtmp begins Fri Oct 21 08:54:34 2022
-
- [root@localhost ~]# last -f /var/log/wtmp -n 2 --- 显示/var/log/wtmp文件中的最近两条登录信息
- root pts/0 192.168.174.1 Fri Mar 3 13:56 still logged in
- root tty2 tty2 Fri Mar 3 13:56 still logged in
-
- wtmp begins Fri Oct 21 08:54:34 2022
- [root@localhost ~]# who
- root tty2 2023-03-03 13:56 (tty2)
- root pts/0 2023-03-03 13:56 (192.168.174.1)
- [root@localhost ~]# who -s --- 仅显示名称、终端、时间字段信息和主机名,默认输出
- root tty2 2023-03-03 13:56 (tty2)
- root pts/0 2023-03-03 13:56 (192.168.174.1)
- [root@localhost ~]# who am i --- 列出关于当前终端的信息
- root pts/0 2023-03-03 13:56 (192.168.174.1)