SECTION 7 用户和用户组的相关命令及配置文件

1.linux用户及用户组相关命令

命令描述
useradd建立用户帐号
usermod修改用户账号
userdel删除用户帐号
passwd更改用户密码
groupadd创建用户组
groupmod修改用户组
groupdel删除用户组
gpasswd更改用户组成员和密码
id显示用户与用户组信息
w显示当前登录到系统中的所有用户及其进程的信息
who显示服务器系统中的当前使用者信息
last显示用户最近登录信息
lastb列出登入系统失败的用户相关信息
uptime显示系统运行时间系统负载等信息
1.1.useradd命令

解释

命令用于建立用户帐号,账号会保存在/etc/passwd文件中,密码会保存在/etc/shadow文件中,组账号会保存在/etc/group文件中

选项

-c <备注>:创建备注信息,会保存在passwd文件中(第五列)
-d <登录目录>:创建用户每次登录使用起始目录,会保存在passwd文件中(第六列)
-D:变更预设值
-e <有效期限>:创建帐号的有效期限,会保存在shadow文件中(第四列)
-f <缓冲天数>:创建密码过期后多少天即关闭该帐号,会保存在shadow文件中(第八列)
-g :创建用户初始组ID或GID号,会保存在passwd文件中(第四列)
-G <附组>:创建用户附加组群组,会保存在group文件中(第四列)
-m:用户目录不存在自动创建登录目录,会保存在passwd文件中(第六列)
-M:不创建用户的登录目录,优先于etc/login.defs文件设定
-n:取消创建以用户名称为名的群组
-r:创建系统用户
-s :创建用户的登录Shell类型,默认不填写,系统会使用配置文件/etc/default/useradd中的预设值,会保存在passwd文件中(第七列)
-u :创建用户ID或UID号,会保存在passwd文件中(第三列)

用法

useradd testuser  #创建用户部件任何参数,会生成如下相关信息
useradd -u 2222 -g xxx -G root -d /root/test/ -s /bin/bash -c "test user"  -e "2060-1-1" -f "10" testuser #创建用户,用户是testuser,UID号是2222,GID是2222,附加组是xxx,初始登录用户目录是/root/test/,允许登录系统/bin/bash,备注是test user,账号有效期32872,账号缓存期限是10天后永久失效

实例

[root@node1 dir]# useradd testuser
[root@node1 dir]# id testuser
uid=1112(testuser) gid=1112(testuser) groups=1112(testuser)
[root@node1 dir]# find / -name testuser
/home/testuser
/var/spool/mail/testuser
[root@node1 dir]# tail -n 1 /etc/passwd /etc/shadow /etc/group
==> /etc/passwd <==
testuser:x:1112:1112::/home/testuser:/bin/bash

==> /etc/shadow <==
testuser:!!:19708:0:99999:7:::

==> /etc/group <==
testuser:x:1112:
[root@node1 dir]# groupadd -g 2222 xxx
[root@node1 dir]# useradd -u 2222 -g 2222 -G xxx -d /root/test/ -s /bin/bash -c "test user"  -e "2060-1-1" -f "10" testuser
[root@node1 dir]# id testuser
uid=2222(testuser) gid=2222(xxx) groups=2222(xxx)
[root@node1 dir]# passwd testuser
Changing password for user testuser.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
[root@node1 dir]# tail -n 1 /etc/passwd /etc/shadow /etc/group
==> /etc/passwd <==
testuser:x:2222:2222:test user:/root/test/:/bin/bash

==> /etc/shadow <==
testuser:$6$jhQks6QQ$4MXt7O6I3uqzG76uNSvyEINf3I2V86aZDS2qbWKa3O7FW2lJ//wyd8HZyR0xWGQaXccbLkrvX6nldrfhfXA7H1:19708:0:99999:7:10:32872:

==> /etc/group <==
xxx:x:2222:testuser
1.2.usermod命令

解释

命令用于修改用户帐号,账号会保存在/etc/passwd文件中,密码会保存在/etc/shadow文件中,组账号会保存在/etc/group文件中

选项

-c <备注>:修改备注信息,会保存在passwd文件中(第五列)
-d <登录目录>:修改用户每次登录使用起始目录,会保存在passwd文件中(第六列)
-e <有效期限>:修改帐号的有效期限,会保存在shadow文件中(第四列)
-f <缓冲天数>:修改密码过期后多少天即关闭该帐号,会保存在shadow文件中(第八列)
-g :修改用户初始组ID或GID号,会保存在passwd文件中(第四列)
-G <附组>:修改用户附加组群组,会保存在group文件中(第四列)
-m:用户目录不存在自动创建登录目录,会保存在passwd文件中(第六列)
-s :修改用户的登录Shell类型,会保存在passwd文件中(第七列)
-u :修改用户ID或UID号,会保存在passwd文件中(第三列)
-a:追加修改用户到用户组,仅与-G参数连用
-l <帐号名称>:修改用户帐号名称
-L:锁定用户密码,使密码无效
-U:解锁用户密码

用法

usermod -u 3333 -g 2222 -a -G xxx,root -d /root/test/dir -s /bin/bash -c "testmod user"  -e "2030-1-1" -f "30" -l test999 testuser #修改用户,用户是testuser变成test999,UID号是2222变成3333,GID是2222不变,附加组是xxx和追加root,初始登录用户目录是/root/test/dir,允许登录系统/bin/bash不变,备注是test user变成testmod user,账号有效期32872变成21915,账号缓存期限是10天后永久失效变成30天

实例

[root@node1 ~]# usermod -u 3333 -g 2222 -a -G xxx,root -d /root/test/dir -s /bin/bash -c "testmod user"  -e "2030-1-1" -f "30" -l test999 testuser
[root@node1 ~]# id test999
uid=3333(test999) gid=2222(xxx) groups=2222(xxx),0(root)
[root@node1 ~]# tail -n 1 /etc/passwd /etc/shadow /etc/group
==> /etc/passwd <==
test999:x:3333:2222:testmod user:/root/test/dir:/bin/bash

==> /etc/shadow <==
test999:$6$jhQks6QQ$4MXt7O6I3uqzG76uNSvyEINf3I2V86aZDS2qbWKa3O7FW2lJ//wyd8HZyR0xWGQaXccbLkrvX6nldrfhfXA7H1:19708:0:99999:7:30:21915:

==> /etc/group <==
xxx:x:2222:test999
1.3.userdel命令

解释

命令用于删除用户帐号

选项

-r:删除用户的家目录和相关文件
-f:强制删除用户,即使用户当前已登录或有运行的进程
-Z:删除用户的SELinux安全上下文

用法

userdel -rf test999 #强制删除用户信息和用户相关文件

实例

[root@node1 test]# useradd test999
[root@node1 test]# find / -name test999
/home/test999
/var/spool/mail/test999
[root@node1 ~]# id test999
uid=3333(test999) gid=2222(xxx) groups=2222(xxx),0(root)
[root@node1 test]# userdel -rf test999
[root@node1 test]# find / -name test999
[root@node1 test]# id test999
id: test999: no such user
1.4.passwd命令

解释

命令用来更改用户密码

选项

-k:为密码已经过期的用户更新有效期
-d:清空用户密码,无需密码即可登录
-l:锁定用户密码,使密码无效
-u:解锁用户密码
-e:用户密码立即过期,将用户下次登录时强制要求用户修改密码
-f:强迫用户下次登录时必须修改口令
-x:设置修改密码的最长天数
-n:设置修改该密码的最短天数
-w:设置用户在密码过期前收到警告信息的天数
-i:设置密码过期多少天后禁用账户
-S:显示用户密码相关的简单描述,如锁定密码
–stdin:从标准输入读取密码字符串

用法

passwd test777 #用户创建和修改密码,需要输入2次相同密码即创建成功
echo "123456"|passwd --stdin test777 #用户修改密码
passwd -l test777  #用户密码锁定
passwd -S test777  #查看用户密码简单描述
passwd -u test777  #用户密码解锁
passwd -d test777  #清空用户密码,登录无需密码

实例

[root@node1 test]# passwd test777
Changing password for user test777.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
[root@node1 test]# tail -vn 1 /etc/shadow
==> /etc/shadow <==
test777:$6$qp3mNG1q$lf7nT7h1N2srYKsjmN4t.U1.a0UeOxs.rVw20B1hgFCGutvWsWZe0IL1Xs8aPte6aiueT3EPRN5MJ7MbPwUGO1:19708:0:99999:7:::
[root@node1 test]# echo "123456"|passwd --stdin test777
Changing password for user test777.
passwd: all authentication tokens updated successfully.
[root@node1 test]# passwd -l test777
Locking password for user test777.
passwd: Success
[root@node1 test]# passwd -S test777
test777 LK 2023-12-17 0 99999 7 -1 (Password locked.)
[root@node1 test]# passwd -u test777
Unlocking password for user test777.
passwd: Success
[root@node1 test]# passwd -S test777
test777 PS 2023-12-17 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@node1 test]# passwd -d test777
Removing password for user test777.
passwd: Success
[root@node1 test]# passwd -S test777
test777 NP 2023-12-17 0 99999 7 -1 (Empty password.)
1.5.groupadd命令

解释

命令用于创建用户组,组账号会保存在/etc/group文件中,密码会保存在/etc/gshadow文件中,实际工作中一般也不用,因为useradd命令在创建用户的时候也会创建一个同名的用户组

选项

-f:强制创建已经存在的组,如果存在则返回成功
-g:创建用户组的GID,GID必须唯一
-o:创建GID相同的组,必须使用此参数
-K:创建用户组多键值,覆盖配置文件/etc/login.defs
-r:创建系统用户组,系统用户组的ID范围201-999
-p <密码>:创建用户组密码

用法

groupadd -p 123456 -g 2222 test999 #创建用户组,设置密码是123456
groupadd -o -g 2222 test888 #创建GID相同的组

实例

[root@node1 ~]# groupadd -p "123456" -g 2222 test999
[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test999:x:2222:

==> /etc/gshadow <==
test999:123456::
[root@node1 ~]# groupadd -o -g 2222 test888
[root@node1 ~]# tail -n 2 /etc/group /etc/gshadow
==> /etc/group <==
test999:x:2222:
test888:x:2222:

==> /etc/gshadow <==
test999:123456::
test888:!::
1.6.groupmod命令

解释

命令用于修改用户组,组账号会保存在/etc/group文件中,密码会保存在/etc/gshadow文件中

选项

-g:修改用户组的GID,GID必须唯一
-o:修改GID相同的组,必须使用此参数
-n <组名>:修改用户组名称
-p <密码>:修改用户组密码

用法

groupmod -n testmod -g 3333 -p "123456" test888 #修改用户组名称test888变成testmod,修改GID号2222变成3333,填写密码123456
groupmod -o -g 3333 test999 #修改GID相同的组

实例

[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test888:x:2222:

==> /etc/gshadow <==
test888:!::
[root@node1 ~]# groupmod -n testmod -g 3333 -p "123456" test888
[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
testmod:x:3333:

==> /etc/gshadow <==
testmod:123456::
[root@node1 ~]# tail -n 2 /etc/group /etc/gshadow
==> /etc/group <==
test999:x:2222:
testmod:x:3333:

==> /etc/gshadow <==
test999:123456::
testmod:123456::
[root@node1 ~]# groupmod -o -g 3333 test999
[root@node1 ~]# tail -n 2 /etc/group /etc/gshadow
==> /etc/group <==
test999:x:3333:
testmod:x:3333:

==> /etc/gshadow <==
test999:123456::
testmod:123456::
1.7.groupdel命令

解释

命令用于删除用户组,组账号会保存在/etc/group文件中,密码会保存在/etc/gshadow文件中

选项

-f:强制删除用户组,即使它是用户的主要组

用法

groupdel testmod    #删除用户组
groupdel -f test999 #强制删除用户组

实例

[root@node1 ~]# tail -n 2 /etc/group /etc/gshadow
==> /etc/group <==
test999:x:3333:
testmod:x:3333:

==> /etc/gshadow <==
test999:123456::
testmod:123456::
[root@node1 ~]# groupdel testmod
[root@node1 ~]# groupdel -f test999
[root@node1 ~]# cat /etc/group /etc/gshadow | grep -E "test999|testmod"
1.8.gpasswd命令

解释

命令用于增删改用户组成员和清空密码,组账号会保存在/etc/group文件中,密码会保存在/etc/gshadow文件中

选项

-a <用户>:添加用户到用户组
-d <用户>:删除用户组中用户
-A <用户>:添加用户组管理员
-M <用户列表>:添加用户到用户组成员列表,可以和-A组合使用
-r:清空用户组密码
-R:限制用户登入组,只有组中的成员才可以用

用法

gpasswd -r test777     #清空用户组密码
gpasswd -a xwq test777 #添加xwq用户到用户组
gpasswd -d xwq test777 #删除用户组中xwq用户
gpasswd -A xwq test777 #添加xwq为用户组管理员
gpasswd -M xwq test777 #添加xwq用户到用户组成员列表

实例

[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test777:x:2000:

==> /etc/gshadow <==
test777:123456::
[root@node1 ~]# gpasswd -r test777
[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test777:x:2000:

==> /etc/gshadow <==
test777:::
[root@node1 ~]# gpasswd -a xwq test777
Adding user xwq to group test777
[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test777:x:2000:xwq

==> /etc/gshadow <==
test777:::xwq
[root@node1 ~]# gpasswd -d xwq test777
Removing user xwq from group test777
[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test777:x:2000:

==> /etc/gshadow <==
test777:::
[root@node1 ~]# gpasswd -A xwq test777
[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test777:x:2000:

==> /etc/gshadow <==
test777::xwq:
[root@node1 ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
test777:x:2000:xwq

==> /etc/gshadow <==
test777:::xwq
1.9.id命令

解释

命令用于显示用户的ID,以及所属群组的ID

选项

-a:忽略,与其他版本兼容
-g或–group:显示用户组ID或GID号
-G或–groups:显示用户附加群组ID
-n或–name:显示用户名称,必须连用如-un、-gn、-Gn
-r或–real:显示用户实际ID
-u或–user:显示用户ID或UID号

用法

id         #显示当前登录用户的ID,以及所属群组的ID
id test999 #显示test999用户的ID,以及所属群组的ID
id -un test999 #显示UID名
id -gn test999 #显示GID名
id -Gn test999 #显示附加组名
id -u test999  #显示UID号
id -g test999  #显示GID号
id -G test999  #显示附加组号

实例

[root@node1 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@node1 ~]# id test999
uid=3333(test999) gid=2222(test111) groups=2222(test111)
[root@node1 ~]# id -un test999
test999
[root@node1 ~]# id -gn test999
test111
[root@node1 ~]# id -Gn test999
test111
[root@node1 ~]# id -u test999
3333
[root@node1 ~]# id -g test999
2222
[root@node1 ~]# id -G test999
2222
1.10.w命令

解释

命令用于显示当前登录到系统中的所有用户及其进程的信息。显示谁已登录,以及他们正在做什么活动

选项

-f或–from:关闭显示用户从何处登入系统
-h或–no-header:不显示标题栏的信息列
-s或–short:简介模式,不显示用户登入时间,不显示终端机阶段作业和程序所耗费的CPU时间
-u或–no-current:忽略执行程序的名称,以及该程序耗费CPU时间的信息
-o或–old-style:旧版输出格式
-i或–ip-addr:显示IP地址而不是主机名(如果可能)

结果说明

第一行依次显示当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载

列名含义
USER登录系统的用户
TTY用户使用的TTY名称
FROM用户从哪里登录进来,一般显示远程登录主机的IP地址或主机名
LOGIN@用户登录的日期和时间
IDLE显示终端空闲的时间
JCPU和该终端连接的所有进程的时间
PCPU当前进程占用时间
WHAT当前正在运行的命令行

用法

w    #显示当前登入系统的用户信息
w -h #不显示各栏位的标题信息列,只显示内容

实例

[root@node1 ~]# w
 21:40:41 up 5 days,  5:26,  1 user,  load average: 0.08, 0.14, 0.13
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.100.10  21:12    1.00s  0.14s  0.14s -bash
root     pts/1    192.168.100.99  22:05   29.00s  0.02s  0.02s -bash
[root@node1 test]# w -h
root     pts/0    192.168.100.10  21:12    5.00s  0.18s  0.00s w -h
root     pts/1    192.168.100.99  22:05    2:12   0.02s  0.02s -bash
1.11.who命令

解释

命令用于显示服务器系统中的当前使用者信息,包括用户ID、终端、上线时间、IP等

选项

-a或–all:等于-b -d --login -p -r -t -T -u 选项的组合
-b或–boot:上次系统启动时间
-d或–dead:显示已死的进程
-H或–heading:输出头部的标题列
-l或–login:显示系统登录进程
–lookup:尝试通过DNS查验主机名
-m:只面对和标准输入有直接交互的主机和用户
-p或–process:显示由init进程衍生的活动进程
-q或–count:列出所有已登录用户的登录名与用户数量
-r或–runlevel:显示当前的运行级别
-s或–short:只显示名称、线路和时间(默认)
-T或-w或–mesg:用+,- 或 ? 标注用户消息状态
-u或–users:列出已登录的用户

用法

who -H  #显示所有用户登录来源,显示标题栏,显示使用者,使用终端,上线时间,从哪连接上的(IP地址)
who -lH #显示所有用户登录来源,显示标题栏,使用者,使用终端,上线时间,PID号,说明来源
who -mH #只显示当前用户,显示标题栏,使用者,使用终端,上线时间,从哪连接上的(IP地址)
who -q  #精简模式显示,显示有2个用户登录

实例

[root@node1 test]# who -H
NAME     LINE         TIME             COMMENT
root     pts/0        2023-12-17 21:12 (192.168.100.10)
root     pts/1        2023-12-17 22:05 (192.168.100.99)
[root@node1 test]# who -lH
NAME     LINE         TIME             IDLE          PID COMMENT
LOGIN    ttyS0        2023-12-12 16:14              1022 id=tyS0
LOGIN    tty1         2023-12-12 16:14              1021 id=tty1
[root@node1 ~]# who -mH
NAME     LINE         TIME             COMMENT
root     pts/0        2023-12-18 13:40 (192.168.100.10)
[root@node1 ~]# who -q
root root
# users=2
1.12.last命令

解释

命令用于显示用户最近登录信息,读取位于/var/log/目录下,名称为wtmp的文件,并把该文件记录登录的用户名,全部显示出来

选项

-a:把从何处登陆系统的主机名或IP地址显示在最后一行
-d:将显示的IP地址转换成主机名称
-f <记录文件>:指定记录文件
-n <显示行数>或-<显示行数>:显示名单的行数
-R:不显示登入系统的主机名称或IP地址
-x:显示系统关机,重新开机以及执行等级的改变等信息
-i:显示特定IP登录的情况
-F:可以查看完整的登录和登出时间和日期
-t:显示YYYYMMDDHHMMSS之前的信息

用法

last -F #完整的登录和登出时间和日期
last -d #将显示的IP地址转换成主机名称
last -2 #显示最近2行内容

实例

[root@node1 ~]# last -F
reboot   system boot  3.10.0-1160.99.1 Mon Dec 18 14:36:31 2023 - Mon Dec 18 14:59:01 2023  (00:22)
root     pts/0        192.168.100.10    Mon Dec 18 14:24:31 2023 - crash                     (00:12)
root     pts/1        192.168.100.99    Mon Dec 18 14:24:15 2023 - crash                     (00:12)
root     pts/1        192.168.100.99    Mon Dec 18 14:23:41 2023 - Mon Dec 18 14:24:14 2023  (00:00)
root     pts/0        192.168.100.10    Mon Dec 18 14:23:08 2023 - Mon Dec 18 14:24:28 2023  (00:01)

wtmp begins Mon Dec 18 14:23:05 2023
[root@node1 ~]# last -d
reboot   system boot  0.0.0.0          Mon Dec 18 14:36 - 15:04  (00:28)
root     pts/0        k8s-node1        Mon Dec 18 14:24 - crash  (00:12)
root     pts/1        k8s-master1      Mon Dec 18 14:24 - crash  (00:12)
root     pts/1        k8s-master1      Mon Dec 18 14:23 - 14:24  (00:00)
root     pts/0        k8s-node1        Mon Dec 18 14:23 - 14:24  (00:01)

wtmp begins Mon Dec 18 14:23:05 2023
[root@node1 ~]# last -2
root     pts/1        192.168.100.99    Mon Dec 18 14:46   still logged in
root     pts/0        192.168.100.10   Mon Dec 18 14:46   still logged in

wtmp begins Mon Dec 18 14:23:05 2023
1.13.lastb命令

解释

命令用于列出登入系统失败的用户相关信息,读取位于/var/log目录下,名称为btmp的文件,并把该文件记录登入失败的用户名,全部显示出来

选项

-a:把从何处登陆系统的主机名或IP地址显示在最后一行
-d:将显示的IP地址转换成主机名称
-f <记录文件>:指定记录文件
-n <显示行数>或-<显示行数>:显示名单的行数
-R:不显示登入系统的主机名称或IP地址
-x:显示系统关机,重新开机以及执行等级的改变等信息
-i:显示特定IP登录的情况
-F:可以查看完整的登录和登出时间和日期
-t:显示YYYYMMDDHHMMSS之前的信息

用法

lastb -F #完整的登录和登出时间和日期
lastb -d #将显示的IP地址转换成主机名称
lastb -2 #显示最近2行内容

实例

[root@node1 ~]# lastb -F
test999  ssh:notty    192.168.100.10    Mon Dec 18 14:58:19 2023 - Mon Dec 18 14:58:19 2023  (00:00)
test999  ssh:notty    192.168.100.10    Mon Dec 18 14:58:15 2023 - Mon Dec 18 14:58:15 2023  (00:00)
test999  ssh:notty    192.168.100.10    Mon Dec 18 14:57:31 2023 - Mon Dec 18 14:57:31 2023  (00:00)
test999  ssh:notty    192.168.100.10    Mon Dec 18 14:57:28 2023 - Mon Dec 18 14:57:28 2023  (00:00)

btmp begins Mon Dec 18 14:52:37 2023
[root@node1 ~]# lastb -d
test999  ssh:notty    k8s-node1        Mon Dec 18 14:58 - 14:58  (00:00)
test999  ssh:notty    k8s-node1        Mon Dec 18 14:58 - 14:58  (00:00)
test999  ssh:notty    k8s-node1        Mon Dec 18 14:57 - 14:57  (00:00)
test999  ssh:notty    k8s-node1        Mon Dec 18 14:57 - 14:57  (00:00)

btmp begins Mon Dec 18 14:52:37 2023
[root@node1 ~]# lastb -2
test999  ssh:notty    192.168.100.10    Mon Dec 18 14:58 - 14:58  (00:00)
test999  ssh:notty    192.168.100.10    Mon Dec 18 14:58 - 14:58  (00:00)

btmp begins Mon Dec 18 14:52:37 2023
1.14.uptime命令

解释

命令主要用于显示系统运行时间系统负载等信息

选项

-p或–pretty:以人类可识别的方式输出系统从开机到到当前的运行时长
-s或–since:以yyyy-mm-dd HH:MM:SS格式输出系统的启动时间
-V或–version:显示uptime版本信息

用法

uptime    #显示当前系统时间,系统已运行时间,当前登录用户数,系统负载平均负载值,分别是1分钟、5分钟、15分钟
uptime -p #系统已开机运行的时间
uptime -s #系统的启动时间

实例

[root@node1 ~]# uptime
 15:19:55 up 43 min,  2 users,  load average: 0.01, 0.06, 0.10
[root@node1 ~]# uptime -p
up 45 minutes
[root@node1 ~]# uptime -s
2023-12-18 14:36:26

2.linux用户和用户组配置文件

Linux是一个多任务多用户的系统:
在系统各种会存在这多个用户,我们的使用者靠用户名来区分各自登陆的账号,如果我们的用户想要使用系统资源,就必须在系统中拥有合法的账号

2.1.用户概述

用户的理解

用户:一个户口本中的一个成员
用户组:户口本中的所有成员组成的组
每个用户可以拥有多个用户组,只能有一个主组,可以有多个附属组
每个用户组可以容纳多个用户

用户种类和UID

linux的用户类型分为3类:超级用户、系统用户和普通用户,而每个用户都有一个默认的UID,相当于身份证号码
超级用户(root)UID=0,超级用户是系统的最高权限用户,拥有对系统的完全控制权,超级用户可以执行任何操作,包括修改系统配置、安装软件、创建和管理其他用户等
系统用户UID=1-999,系统用户是由操作系统本身使用的用户账户,用于运行系统服务和进程,这些用户通常用于执行特定的系统任务,并具有受限的权限
普通用户UID=1000-65535,普通用户是系统中的一般用户,用于执行一般的日常任务,普通用户通常没有系统级别的特权,不能对系统进行重要的更改

用户相关配置文件

用户信息文件 /etc/passwd
用户密码文件 /etc/shadow
用户通用设置文件 /etc/login.defs
用户组信息文件 /etc/group
用户组密码文件 /etc/gshadow
useradd默认配置 /etc/default/useradd

2.2./etc/passwd详细介绍
rootx00root/root/bin/bash
用户名称用户密码UIDGID用户描述信息用户家目录shell解释器

解释

用户名称:指一串代表用户身份的字符串
用户密码:“x”是密码占位符,代表改用户设有密码,密码存放在/etc/shadow文件中
UID:也称用户ID,每个用户都有唯一的一个UID,Linux系统通过UID来识别不同的用户,用户ID范围(1000-65535)
GID:也称用户组ID,表示用户初始组的用户组ID,每个用户只能有一个初始组,通常建立用户同时也会建立用户初始组
用户描述信息:通常用来解释这个用户的意义而已,用处不大
用户家目录:超级用户家目录在/root,普通用户家目录在/home/普通用户名/,改位置存放用户的个人数据和配置文件
shell解释器:登录shell信息,Shell就是Linux的命令解释器,是用户和Linux内核之间沟通的桥梁,/bin/bash是能登录系统,可以使用系统资源,/sbin/nologin是不能登陆系统,可以使用系统资源

实例

[root@node1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
xwq:x:1111:1111::/home/xwq:/sbin/nologin
2.3./etc/shadow详细介绍
root 6 6 6CkbZ…196820999997
用户名称用户密码加密上次改密时间修改密码间隔密码有效期密码过期警告密码过期禁用用户账号失效时间保留字段(未使用)

解释

用户名称:指一串代表用户身份的字符串,同/etc/passwd文件中用户名对应
用户密码加密:经过加密编码的密码, 6 6 6CkbZ开头表明使用SHA-512加密,“!!”或“”代表没有密码,且不能登录
上次改密时间:上次更改密码的时间,日期是由1970年1月1日作为标准时间来计算的,转换root的方法chage -l root或date -d “1970-01-01 19682 days” +%F,结果2023-11-21
修改密码间隔:密码最小修改间隔时间设置,默认是0代表随时可以修改密码,如果设置30代表需要经过30天之后才能更改密码
密码有效期:密码最大有效时间设置,默认是99999(273年)代表密码有效期限,如果设置30代表密码有效是30天,30天后过期下次登录用户就会被要求更改密码
密码过期警告:密码到期前的告警天数,当账号的密码快到过期的时候,系统会依据这个天数发出“警告”,提醒它过多少天后过期,如果设置空或0代表密码没有警告期限,过期后立即失效,如果设置-1代表密码永远不会失效
密码过期禁用用户:密码过期后的宽限天数,过期后就不能登录,如果设置-1代表密码永远不会失效
账号失效时间:密码失效的绝对天数,如果设置相应的天数过期后,该账号不在是合法的账号,也就是不能用来登录
保留字段(未使用):一般不使用,这串密码产生的乱码不能手工修改,如果手工修改,系统将无法识别密码,导致密码失效。很多软件透过这个功能,在密码串前加上 “!”、“
” 或 “x” 使密码暂时失效

实例

[root@node1 ~]# cat /etc/shadow
root:$6$CkbZm7gYKb/KUd$eMcfFMSGT/Az1FRQAh3cPQmPjL2bKxgVHgnrEU/jr77RqMz.vvThb0VhnBmgMxyC87AICKbgA8ES.eBuCgQT0/:19682:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
xwq:!!:19684:0:99999:7:::
2.4./etc/login.defs详细介绍

解释

MAIL_DIR:/var/spool/mail #当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件
PASS_MAX_DAYS:9999 #密码保持有效的最大天数
PASS_MIN_DAYS:0 #自从上次密码修改以来多少天后用户才被允许修改口令
PASS_MIN_LEN:5 #密码设置的最小长度
PASS_WARN_AGE:7 #密码到期前多少天系统开始通知用户口令即将到期
UID_MIN:1000 #指定用户最小UID为1000,也就是说添加用户时,用户的UID从1000开始
UID_MAX:60000 #指定用户最大UID为60000
SYS_UID_MIN:201 #指定创建系统用户最小UID为201,也就是说添加系统用户时,用户的UID从201开始
SYS_UID_MAX:999 #指定系统用户最大UID为999
GID_MIN:1000 #指定用户组最小GID为1000,也就是说添加用户组时,组的GID从1000开始
GID_MAX:60000 #指定用户组最打GID为60000
SYS_GID_MIN:201 #指定创建系统用户组最小GID为201,也就是说添加系统用户组时,用户组的GID从201开始
SYS_GID_MAX:999 #指定系统用户组最大GID为999
CREATE_HOME:yes #指定是否创建用户主目录,yes为创建,no为不创建
UMASK:077 #权限掩码设置为077
USERGROUPS_ENAB:yes #使用命令userdel删除用户时,是否删除用户的初始组,yes默认为删除,no为删除
ENCRYPT_METHOD:SHA512 #用户密码的加密方式为SHA512(即:散列模式加密)

实例

[root@node1 ~]# grep -Ev "^#|^$" /etc/login.defs
MAIL_DIR        /var/spool/mail
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME     yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
2.5./etc/group详细介绍
xwqx1111xwq
用户组名称用户组密码GID用户组附加用户

解释

用户组名称:指一串代表用户组身份的字符串
用户组密码:“x”是密码占位符,代表改用户组设有密码,密码存放在/etc/gshadow文件中
GID:也称用户组ID,表示用户初始组的用户组ID,每个用户只能有一个初始组,通常建立用户同时也会建立用户初始组,同/etc/passwd文件中使用GID对应
用户组附加用户:列出用户组附加的所有用户,每个用户都可以加入多个附加组,但是只能属于一个初始组

实例

[root@node1 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
ssh_keys:x:997:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
chrony:x:996:
nscd:x:28:
tcpdump:x:72:
rpc:x:32:
rpcuser:x:29:
nfsnobody:x:65534:
xwq:x:1111:xwq
nginx:x:995:
ntp:x:38:
cgred:x:994:
docker:x:993:
slocate:x:21:
2.6./etc/gshadow详细介绍
xwqxwq
用户组名称用户密码加密用户组管理员用户组附加用户

解释

用户组名称:指一串代表用户组身份的字符串,同/etc/group文件中用户组名对应
用户密码加密:通常不设置用户组密码,如果设置“!”或空代表未设置密码,如果设置组密码代表是加密后一段特殊符号组成的密文
用户组管理员:组管理员的用户名(由于目前有 sudo 之类的工具,因此群组管理员的这个功能已经很少使用了)
用户组附加用户:列出用户组附加的所有用户,同/etc/group文件中用户组附加用户相同

实例

[root@node1 ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
ssh_keys:!::
sshd:!::
postdrop:!::
postfix:!::
chrony:!::
nscd:!::
tcpdump:!::
rpc:!::
rpcuser:!::
nfsnobody:!::
xwq:!::xwq
nginx:!::
ntp:!::
cgred:!::
docker:!::
slocate:!::
2.7./etc/default/useradd详细介绍

解释

GROUP=100 #用户默认GID,若是在添加新用户的时候没有指定GID,那么Linux系统有两种做法:一是把它添加到统一的组里面,就是这里的这个组,二是添加到和用户UID同名的GID中,即创建一个新的组且GID=HID,但是这些都不是可取的,最好的方法是每添加一个用户都应该想好,这个用户是属于那个部门(组)的,不应该出现一个不知道该放哪一个组的用户
HOME=/home #指定缺省宿主目录存放的目录
INACTIVE=-1 #账户是否被禁用,-1:不禁用,0:禁用
EXPIRE= #账号失效时间,比如临时加入该项目的成员,添加临时账户,那么项目完成后就让这些临时账户失效;不设置表示永久有效
SHELL=/bin/bash #缺省使用的shell
SKEL=/etc/skel #新用户宿主目录下的文件存放路径
CREATE_MAIL_SPOOL=yes #新用户是否要创建一个和用户同名的保存邮件信息的文件

实例

[root@node1 dir]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

  • 36
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维日常学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值