栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

7.第四章 Linux用户和组(一)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

7.第四章 Linux用户和组(一)

1.Linux 安全模型

资源分派:

  • Authentication:认证,验证用户身份
  • Authorization:授权,不同的用户设置不同权限
  • Accouting|Audition:审计

当用户登录成功时,系统会自动分配令牌token,包括:用户标识和组成员等信息

1.1 用户

Linux中每个用户是通过User Id (UID)来唯一标识的

  • 管理员:root, 0
  • 普通用户:1-60000 自动分配
    • 系统用户:1-499 (CentOS 6以前), 1-999 (CentOS 7以后)
      • 对守护进程获取资源进行权限分配
    • 登录用户:500+ (CentOS6以前), 1000+(CentOS7以后)
      • 给用户进行交互式登录使用
1.2 用户组

Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID(GID) 来唯一标识的。

  • 管理员组:root, 0
  • 普通组:
    • 系统组:1-499(CentOS 6以前), 1-999(CentOS7以后), 对守护进程获取资源进行权限分配
    • 普通组:500+(CentOS 6以前), 1000+(CentOS7以后), 给用户使用

范例:

[root@rocky8 ~]# id raymond
id: ‘raymond’: no such user
[root@rocky8 ~]# useradd raymond;echo 123456 | passwd --stdin raymond
Changing password for user raymond.
passwd: all authentication tokens updated successfully.
[root@rocky8 ~]# id raymond
uid=1000(raymond) gid=1000(raymond) groups=1000(raymond)
[root@rocky8 ~]# id root
uid=0(root) gid=0(root) groups=0(root)
1.3 用户和组的关系
  • 用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组
  • 用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组

范例:

[root@rocky8 ~]# id postfix
uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)
1.4 安全上下文

Linux安全上下文Context:运行中的程序,即进程 (process),以进程发起者的身份运行,进程所能够访问资源的权限取决于进程的运行者的身份

比如:分别以root 和raymond 的身份运行/bin/cat /etc/shadow ,得到的结果是不同的,资源能否能被访问,是由运行者的身份决定,非程序本身

范例:

[root@rocky8 ~]# cat /etc/shadow
root:$6$U/LuWNVHLX6clXpP$BxhDbz7cPwm7gEkDmpwihdC/FpCPkeJ6iiM/Dvp96b.d0O0pN6oawZFpIE62JT3KNwz68sy2Lgjhhj7GYsFtG1::0:99999:7:::
bin:*:18700:0:99999:7:::
daemon:*:18700:0:99999:7:::
adm:*:18700:0:99999:7:::
lp:*:18700:0:99999:7:::
sync:*:18700:0:99999:7:::
shutdown:*:18700:0:99999:7:::
halt:*:18700:0:99999:7:::
mail:*:18700:0:99999:7:::
operator:*:18700:0:99999:7:::
games:*:18700:0:99999:7:::
ftp:*:18700:0:99999:7:::
nobody:*:18700:0:99999:7:::
dbus:!!:18898::::::
systemd-coredump:!!:18898::::::
systemd-resolve:!!:18898::::::
tss:!!:18898::::::
polkitd:!!:18898::::::
sssd:!!:18898::::::
sshd:!!:18898::::::
postfix:!!:18900::::::
raymond:$6$vrjGOXHemHh7iLRM$MWPT.XZC7yEfkrhBXovPVPxowO4T6h7yO7Ve/iBljliSAnVbrMvIRZQoCUYvodt3nJWrifd2n1PHZQMHSZay5.:18905:0:99999:7:::
2.用户和组的配置文件 2.1 用户和组的主要配置文件
  • /etc/passwd:用户及其属性信息(名称、UID、主组ID等)
  • /etc/shadow:用户密码及其相关属性
  • /etc/group:组及其属性信息
  • /etc/gshadow:组密码及其相关属性
2.2 passwd文件格式

login name:登录用名(raymond)

passwd:密码 (x)

UID:用户身份编号 (1000)

GID:登录默认所在组编号 (1000)

GECOS:用户全名或注释

home directory:用户主目录 (/home/raymond)

shell:用户默认使用shell (/bin/bash)

范例:

[root@rocky8 ~]# 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
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
sssd:x:997:994:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
raymond:x:1000:1000::/home/raymond:/bin/bash

[root@rocky8 ~]# yum -y install man-pages

[root@rocky8 ~]# whatis passwd
openssl-passwd (1ssl) - compute password hashes
passwd (1)           - update user's authentication tokens
passwd (5)           - password file

[root@rocky8 ~]# man 5 passwd
2.3 shadow文件格式

登录用名

用户密码:一般用sha512加密

从1970年1月1日起到密码最近一次被更改的时间

密码再过几天可以被变更(0表示随时可被变更)

密码再过几天必须被变更(99999表示永不过期)

密码过期前几天系统提醒用户(默认为一周)

密码过期几天后帐号会被锁定

从1970年1月1日算起,多少天后帐号失效

密码的安全策略

  • 足够长
  • 使用数字、大写字母、小写字母及特殊字符中至少3种
  • 使用随机密码
  • 定期更换,不要使用最近曾经使用过的密码

范例:

[root@rocky8 ~]# ll /etc/shadow
---------- 1 root root 768 Oct  5 20:09 /etc/shadow
[root@rocky8 ~]# cat /etc/shadow
root:$6$U/LuWNVHLX6clXpP$BxhDbz7cPwm7gEkDmpwihdC/FpCPkeJ6iiM/Dvp96b.d0O0pN6oawZFpIE62JT3KNwz68sy2Lgjhhj7GYsFtG1::0:99999:7:::
bin:*:18700:0:99999:7:::
daemon:*:18700:0:99999:7:::
adm:*:18700:0:99999:7:::
lp:*:18700:0:99999:7:::
sync:*:18700:0:99999:7:::
shutdown:*:18700:0:99999:7:::
halt:*:18700:0:99999:7:::
mail:*:18700:0:99999:7:::
operator:*:18700:0:99999:7:::
games:*:18700:0:99999:7:::
ftp:*:18700:0:99999:7:::
nobody:*:18700:0:99999:7:::
dbus:!!:18898::::::
systemd-coredump:!!:18898::::::
systemd-resolve:!!:18898::::::
tss:!!:18898::::::
polkitd:!!:18898::::::
sssd:!!:18898::::::
sshd:!!:18898::::::
postfix:!!:18900::::::
raymond:$6$vrjGOXHemHh7iLRM$MWPT.XZC7yEfkrhBXovPVPxowO4T6h7yO7Ve/iBljliSAnVbrMvIRZQoCUYvodt3nJWrifd2n1PHZQMHSZay5.:18905:0:99999:7:::
#$6 表示加密算法是sha512

[root@rocky8 ~]#  echo `date +%s`
1633436307
[root@rocky8 ~]# echo `date +%s`/18584|bc
87894

[root@rocky8 ~]# passwd raymond
Changing password for user raymond.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

[root@rocky8 ~]# passwd raymond < 123456
> 123456
> EOF
Changing password for user raymond.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
#可以用多行重定向修改密码

[root@rocky8 ~]# echo 123456 | passwd --stdin raymond
Changing password for user raymond.
passwd: all authentication tokens updated successfully.
#passwd --stdin raymond  非交互式修改密码,这个方法只有centos有,ubuntu不能用这种方法

[root@rocky8 ~]# echo 123456 | passwd --stdin neteagle &> /dev/null

raymond@ubuntu1804:~$ sudo -i
[sudo] password for raymond: 
root@ubuntu1804:~# echo -e '123456n123456' |passwd raymond
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
root@ubuntu1804:~# echo -e '123456n123456' |passwd raymond &> /dev/null
root@ubuntu1804:~# exit
logout
#ubuntu 用这种方法非交互式修改密码

[root@rocky8 ~]# whatis shadow
shadow (3)           - encrypted password file routines
shadow (5)           - shadowed password file
[root@rocky8 ~]# man 5 shadow

范例:生成随机密码

[root@rocky8 ~]# tr -dc '[:alnum:]' < /dev/urandom | head -c 12
4XQZg4DXlKxQ[root@rocky8 ~]# openssl rand -base64 9
rL/ARTdsvLDX

参考链接: 生成随机密码 https://suijimimashengcheng.51240.com/

2.4 group文件格式

群组名称:就是群组名称

群组密码:通常不需要设定,密码是被记录在 /etc/gshadow

GID:就是群组的 ID

以当前组为附加组的用户列表(分隔符为逗号)

2.5 gshdow文件格式

群组名称:就是群的名称

群组密码:

组管理员列表:组管理员的列表,更改组密码和成员

以当前组为附加组的用户列表:多个用户间用逗号分隔

范例:

[root@rocky8 ~]# ll /etc/group /etc/gshadow
-rw-r--r-- 1 root root 524 Oct  5 20:09 /etc/group
---------- 1 root root 414 Oct  5 20:09 /etc/gshadow

[root@rocky8 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:
utempter:x:35:
input:x:999:
kvm:x:36:
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
tss:x:59:
polkitd:x:996:
ssh_keys:x:995:
sssd:x:994:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
raymond:x:1000:
3.用户和组管理命令

用户管理命令

  • useradd
  • usermod
  • userdel

组帐号维护命令

  • groupadd
  • groupmod
  • groupdel

范例:

[root@rocky8 ~]# ll `which adduser`
lrwxrwxrwx. 1 root root 7 May 19 11:02 /usr/sbin/adduser -> useradd
3.1 用户创建

useradd 命令可以创建新的Linux用户

格式:

useradd [options] LOGIN

常见选项:

-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6之前: ID<500,CentOS 7以后: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户

范例:

useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache

范例:

root@ubuntu1804:~# ll /bin/false
-rwxr-xr-x 1 root root 30904 Jan 18  2018 /bin/false*

[root@rocky8 ~]# useradd boss
[root@rocky8 ~]# grep "boss" /etc/passwd
boss:x:1001:1001::/home/boss:/bin/bash #用户被创建
[root@rocky8 ~]# grep "boss" /etc/shadow
boss:!!:18905:0:99999:7::: #!! 表示没设置密码,不运行登录

[root@rocky8 ~]# usermod -s /sbin/nologin boss #usermod -s 设置用户shell类型
[root@rocky8 ~]# grep "boss" /etc/passwd
boss:x:1001:1001::/home/boss:/sbin/nologin #这里shell类型已经被修改

[root@rocky8 ~]# userdel boss #删除用户
[root@rocky8 ~]# grep "boss" /etc/passwd
#用户被删除
[root@rocky8 ~]# ls /home
boss  raymond ##家目录还在
[root@rocky8 ~]# ls /var/spool/mail/
boss  raymond #邮箱也在

[root@rocky8 ~]# useradd boss2
[root@rocky8 ~]# userdel -r boss2 #userdel -r  删除用户,删除家目录和邮箱
[root@rocky8 ~]# ls /home
boss  raymond
[root@rocky8 ~]# ls /var/spool/mail/
boss  raymond

[root@rocky8 ~]# groupadd g1
[root@rocky8 ~]# grep "g1" /etc/group
g1:x:1001:
[root@rocky8 ~]# useradd -G g1 boss3 #useradd -G 设置附加组
[root@rocky8 ~]# id boss3
uid=1001(boss3) gid=1002(boss3) groups=1002(boss3),1001(g1)

[root@rocky8 ~]# usermod -aG g1 raymond #usermod -aG  追加附加组
[root@rocky8 ~]# id raymond
uid=1000(raymond) gid=1000(raymond) groups=1000(raymond),1001(g1)

[root@rocky8 ~]# usermod -G "" raymond ##删除附加组
[root@rocky8 ~]# id raymond
uid=1000(raymond) gid=1000(raymond) groups=1000(raymond)

[root@rocky8 ~]# groupdel g1 
[root@rocky8 ~]# groupdel raymond
groupdel: cannot remove the primary group of user 'raymond' #要想删组,这个组不能有人把这个组作为主组

[root@rocky8 ~]# su - raymond
[root@rocky8 ~]# userdel raymond
userdel: user raymond is currently used by process 14264 #这个用户不能删除
[root@rocky8 ~]# ps aux |grep raymond
root       14263  0.0  0.8 336996  6776 pts/1    S    20:43   0:00 su - raymond
raymond    14264  0.0  0.4 233912  3848 pts/1    S+   20:43   0:00 -bash
root       14295  0.0  0.1 221928  1148 pts/0    R+   20:44   0:00 grep --color=auto raymond
#因为用户正在登录,正在登录的用户不能删除

useradd 命令默认值设定由/etc/default/useradd定义

[root@rocky8 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
#控制用户默认创建的用户的行为

新建用户的相关文件

  • /etc/default/useradd
  • /etc/skel/*
  • /etc/login.defs

范例:

[root@rocky8 ~]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc
#新建用户的模板文件夹

[root@rocky8 ~]# useradd -N boss4
[root@rocky8 ~]# id boss4
uid=1002(boss4) gid=100(users) groups=100(users)
#创建用户不用默认的主组,使用-N 让它成为gid为100的组,users

[root@rocky8 ~]# cat /etc/login.defs 
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR	Maildir
MAIL_DIR	/var/spool/mail
#MAIL_FILE	.mail

# Default initial "umask" value used by login(1) on non-PAM enabled systems.
# Default "umask" value for pam_umask(8) on PAM enabled systems.
# UMASK is also used by useradd(8) and newusers(8) to set the mode for new
# home directories if HOME_MODE is not set.
# 022 is the default value, but 027, or even 077, could be considered
# for increased privacy. There is no One True Answer here: each sysadmin
# must make up their mind.
UMASK		022

# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
# home directories.
# If HOME_MODE is not set, the value of UMASK is used to create the mode.
HOME_MODE	0700

# Password aging controls:
#
#	PASS_MAX_DAYS	Maximum number of days a password may be used.
#	PASS_MIN_DAYS	Minimum number of days allowed between password changes.
#	PASS_MIN_LEN	Minimum acceptable password length.
#	PASS_WARN_AGE	Number of days warning given before a password expires.
#
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD	/usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME	yes

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512

批量修改用户口令

echo username:passwd | chpasswd
3.2 用户属性修改

usermod 命令可以修改用户属性

格式:

usermod [OPTION] login

常见选项:

-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限,即宽限期
3.3 删除用户

userdel 可删除Linux 用户

格式:

userdel [OPTION]... Login

常见选项:

-f, --force 强制
-r, --remove 删除用户家目录和邮箱
3.4 查看用户相关的ID信息

id 命令可以查看用户的UID,GID等信息

id [OPTION]... [USER]

常见选项:

-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
3.5 切换用户或以其他用户身份执行命令

su: 即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

格式:

su [options...] [-] [user [args...]]

常见选项:

-l --login su -l UserName 相当于 su - UserName
-c, --command  pass a single command to the shell with -c

切换用户的方式:

  • su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
  • su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

说明:root su至其他用户无须密码;非root用户切换时需要密码

注意:su 切换新用户后,使用 exit 退回至旧的用户,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

换个身份执行命令:

su [-] UserName -c 'COMMAND'

范例:

[root@rocky8 ~]# pwd
/root
[root@rocky8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@rocky8 ~]# su raymond
[raymond@rocky8 root]$ echo $PATH
/home/raymond/.local/bin:/home/raymond/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[raymond@rocky8 root]$ id
uid=1000(raymond) gid=1000(raymond) groups=1000(raymond)

[raymond@rocky8 root]$ whoami
raymond
[raymond@rocky8 root]$ who am i
root     pts/0        2021-10-05 16:55 (172.31.0.1)
[raymond@rocky8 root]$ ls
ls: cannot open directory '.': Permission denied
[raymond@rocky8 root]$ su boss4
Password: #普通用户切换别的用户要输入密码,root用户切换别的用户不需要密码
su: Authentication failure
[raymond@rocky8 root]$ exit
exit
[root@rocky8 ~]# echo 123456 |passwd --stdin boss4
Changing password for user boss4.
passwd: all authentication tokens updated successfully.
[root@rocky8 ~]# su raymond
[raymond@rocky8 root]$ su boss4
Password: 
[boss4@rocky8 root]$ echo $PATH
/home/boss4/.local/bin:/home/boss4/bin:/home/raymond/.local/bin:/home/raymond/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[boss4@rocky8 root]$ exit
exit
[raymond@rocky8 root]$ exit
exit

[root@rocky8 ~]# su - raymond
Last login: Tue Oct  5 20:54:36 CST 2021 on pts/0
[raymond@rocky8 ~]$ pwd
/home/raymond
[raymond@rocky8 ~]$ echo $PATH
/home/raymond/.local/bin:/home/raymond/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[raymond@rocky8 ~]$ whoami
raymond
[raymond@rocky8 ~]$ who am i
root     pts/0        2021-10-05 16:55 (172.31.0.1)

[raymond@rocky8 ~]$ su root -c "cat /etc/shadow" #-c 换个身份执行命令
Password: 
root:$6$U/LuWNVHLX6clXpP$BxhDbz7cPwm7gEkDmpwihdC/FpCPkeJ6iiM/Dvp96b.d0O0pN6oawZFpIE62JT3KNwz68sy2Lgjhhj7GYsFtG1::0:99999:7:::
bin:*:18700:0:99999:7:::
daemon:*:18700:0:99999:7:::
adm:*:18700:0:99999:7:::
lp:*:18700:0:99999:7:::
sync:*:18700:0:99999:7:::
shutdown:*:18700:0:99999:7:::
halt:*:18700:0:99999:7:::
mail:*:18700:0:99999:7:::
operator:*:18700:0:99999:7:::
games:*:18700:0:99999:7:::
ftp:*:18700:0:99999:7:::
nobody:*:18700:0:99999:7:::
dbus:!!:18898::::::
systemd-coredump:!!:18898::::::
systemd-resolve:!!:18898::::::
tss:!!:18898::::::
polkitd:!!:18898::::::
sssd:!!:18898::::::
sshd:!!:18898::::::
postfix:!!:18900::::::
raymond:$6$3Xnp/ePoeBr9LGsS$t5.nRfAlu48h5jUT8K3HVyx5EPInGdvZ.0HWBclN2NUo1LoJ/aM5o9ZlGrZ2GRurj6R4wKxgzWqjslVTlTW31.:18905:0:99999:7:::
boss3:!!:18905:0:99999:7:::
boss4:$6$RSftvDLVPblj5qnr$hKUfGm3fVVwC1pyRK5KwwdiAFMBJequr0.aLjnkvNYsFsIZuUdUDb3Hs.AYmOvDfBEFKTOP0kGQkGO3RJo/QZ.:18905:0:99999:7:::
[raymond@rocky8 ~]$ exit
logout

范例:

[root@centos8 ~]#getent passwd mage
mage:x:1001:1001::/home/mage:/bin/bash
[root@centos8 ~]#usermod -s /bin/false mage
[root@centos8 ~]#getent passwd mage
mage:x:1001:1001::/home/mage:/bin/false
[root@centos8 ~]#su - mage
Last login: Fri Mar 27 09:18:57 CST 2020 on pts/0
[root@centos8 ~]#whomai
-bash: whomai: command not found
[root@centos8 ~]#whoami
root

范例:

[root@rocky8 ~]# su -s /sbin/nologin raymond
This account is currently not available.
[root@rocky8 ~]# whoami
root

[root@rocky8 ~]# su -s /bin/false raymond
[root@rocky8 ~]# whoami
root

范例:

[root@rocky8 ~]# su - raymond
Last login: Tue Oct  5 20:59:43 CST 2021 on pts/0
[raymond@rocky8 ~]$ su - root -c "getent shadow"
Password: 
root:$6$U/LuWNVHLX6clXpP$BxhDbz7cPwm7gEkDmpwihdC/FpCPkeJ6iiM/Dvp96b.d0O0pN6oawZFpIE62JT3KNwz68sy2Lgjhhj7GYsFtG1::0:99999:7:::
bin:*:18700:0:99999:7:::
daemon:*:18700:0:99999:7:::
adm:*:18700:0:99999:7:::
lp:*:18700:0:99999:7:::
sync:*:18700:0:99999:7:::
shutdown:*:18700:0:99999:7:::
halt:*:18700:0:99999:7:::
mail:*:18700:0:99999:7:::
operator:*:18700:0:99999:7:::
games:*:18700:0:99999:7:::
ftp:*:18700:0:99999:7:::
nobody:*:18700:0:99999:7:::
dbus:!!:18898::::::
systemd-coredump:!!:18898::::::
systemd-resolve:!!:18898::::::
tss:!!:18898::::::
polkitd:!!:18898::::::
sssd:!!:18898::::::
sshd:!!:18898::::::
postfix:!!:18900::::::
raymond:$6$3Xnp/ePoeBr9LGsS$t5.nRfAlu48h5jUT8K3HVyx5EPInGdvZ.0HWBclN2NUo1LoJ/aM5o9ZlGrZ2GRurj6R4wKxgzWqjslVTlTW31.:18905:0:99999:7:::
boss3:!!:18905:0:99999:7:::
boss4:$6$RSftvDLVPblj5qnr$hKUfGm3fVVwC1pyRK5KwwdiAFMBJequr0.aLjnkvNYsFsIZuUdUDb3Hs.AYmOvDfBEFKTOP0kGQkGO3RJo/QZ.:18905:0:99999:7:::
[raymond@rocky8 ~]$ exit
logout

范例:

[root@rocky8 ~]# su - raymond -c 'touch raymond.txt'
[root@rocky8 ~]# ll ~raymond
total 0
-rw-rw-r-- 1 raymond raymond 0 Oct  5 21:01 raymond.txt

范例:

[root@rocky8 ~]# su -s /bin/bash bin
bash-4.4$ whoami
bin
bash-4.4$ exit
exit

[root@rocky8 ~]# getent passwd tss
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin

[root@rocky8 ~]# su - -s /bin/bash tss
su: warning: cannot change directory to /dev/null: Not a directory
-bash: /dev/null/.bash_profile: Not a directory
[tss@rocky8 root]$ pwd
/root
[tss@rocky8 root]$ whoami
tss
[tss@rocky8 root]$ exit
logout
-bash: /dev/null/.bash_logout: Not a directory
3.6 设置密码

passwd 可以修改用户密码

格式:

passwd [OPTIONS] UserName

常用选项:

-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码,Ubuntu无此选项

范例:非交互式修改用户密码

#此方式更通用,适用于各种Linux版本,如:ubuntu、centos
[root@rocky8 ~]# echo -e '123456n123456' | passwd raymond
Changing password for user raymond.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.

#适用于红帽系列的Linux版本
[root@rocky8 ~]# echo '123456' | passwd --stdin raymond
Changing password for user raymond.
passwd: all authentication tokens updated successfully.

范例:设置用户下次必须更改密码

[root@rocky8 ~]# useradd tom
[root@rocky8 ~]# echo 123456 | passwd --stdin tom
Changing password for user tom.
passwd: all authentication tokens updated successfully.
[root@rocky8 ~]# getent shadow tom
tom:$6$T1oH2FdR91eSb8F1$ibihs464PYrNxbfwDZ19cGfHMQM6l6Eql9kJGLFBehmq3Wk0sBThxVT.smSyXxqlLX4GaEx0VRokE6WJRZFwi0:18905:0:99999:7:::
[root@rocky8 ~]# passwd -e tom
Expiring password for user tom.
passwd: Success
[root@rocky8 ~]# getent shadow tom
tom:$6$T1oH2FdR91eSb8F1$ibihs464PYrNxbfwDZ19cGfHMQM6l6Eql9kJGLFBehmq3Wk0sBThxVT.smSyXxqlLX4GaEx0VRokE6WJRZFwi0:0:0:99999:7:::

[root@rocky8 ~]# su - raymond
Last login: Tue Oct  5 21:01:13 CST 2021 on pts/0
[raymond@rocky8 ~]$ su - tom
Password: 
You are required to change your password immediately (administrator enforced)
Current password: 
New password: 
Retype new password: 
Last failed login: Tue Oct  5 21:13:02 CST 2021 on pts/0
There were 2 failed login attempts since the last successful login.
[tom@rocky8 ~]$ exit
logout
[raymond@rocky8 ~]$ exit
logout
[root@rocky8 ~]# getent shadow tom
tom:$6$RL3M.RG6.yoL7a3/$0x7mVapHsu7P3bFEh4uT1gNm01vRfmpM7Qk7TpG1PIILp463u1GoMF2S.sX1WajK0Z0AywUFLR/2qC9Ve7tnz/:18905:0:99999:7:::
3.7 修改用户密码策略

chage 可以修改用户密码策略

格式:

chage [OPTION]... LOGIN

常见选项:

-d LAST_DAY #更改密码的时间
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-I --inactive INACTIVE #密码过期后的宽限期
-E --expiredate EXPIRE_DATE #用户的有效期
-l #显示密码策略

范例:

[root@rocky8 ~]# getent shadow boss4
boss4:$6$RSftvDLVPblj5qnr$hKUfGm3fVVwC1pyRK5KwwdiAFMBJequr0.aLjnkvNYsFsIZuUdUDb3Hs.AYmOvDfBEFKTOP0kGQkGO3RJo/QZ.:18905:0:99999:7:::
@rocky8 ~]# chage -d 0 boss4 #用户下次登录必须修改密码
[root@rocky8 ~]# getent shadow boss4
boss4:$6$RSftvDLVPblj5qnr$hKUfGm3fVVwC1pyRK5KwwdiAFMBJequr0.aLjnkvNYsFsIZuUdUDb3Hs.AYmOvDfBEFKTOP0kGQkGO3RJo/QZ.:0:0:99999:7:::


登录时提示密码已过期,提示修改密码

[root@rocky8 ~]# useradd boss5 ;echo 123456 |passwd --stdin boss5;chage -d 0 boss5
Changing password for user boss5.
passwd: all authentication tokens updated successfully.

[root@rocky8 ~]# getent shadow boss4
boss4:$6$RSftvDLVPblj5qnr$hKUfGm3fVVwC1pyRK5KwwdiAFMBJequr0.aLjnkvNYsFsIZuUdUDb3Hs.AYmOvDfBEFKTOP0kGQkGO3RJo/QZ.:0:0:99999:7:::
[root@rocky8 ~]# passwd boss4
Changing password for user boss4.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

[root@rocky8 ~]# getent shadow boss4
boss4:$6$XBIumyDG.k/SUIfc$5CUSqPI2j6OHZM0.k8Ip2NKxP4eWRxh4/d1vbkYnDRbas4Bdlni.tZh7jN0LOF0FuwYZvlvfkOk5ArdeP1bke0:18905:0:99999:7:::

[root@rocky8 ~]# passwd -e boss4 #passwd -e  密钥立即失效,下次登录修改密码
Expiring password for user boss4.
passwd: Success
[root@rocky8 ~]# getent shadow boss4
boss4:$6$XBIumyDG.k/SUIfc$5CUSqPI2j6OHZM0.k8Ip2NKxP4eWRxh4/d1vbkYnDRbas4Bdlni.tZh7jN0LOF0FuwYZvlvfkOk5ArdeP1bke0:0:0:99999:7:::

范例:

[root@rocky8 ~]# chage -m 3 -M 42 -W 14 -I 7 -E 2022-10-10 boss4
[root@rocky8 ~]# chage -l boss4
Last password change					: password must be changed
Password expires					: password must be changed
Password inactive					: password must be changed
Account expires						: Oct 10, 2022
Minimum number of days between password change		: 3
Maximum number of days between password change		: 42
Number of days of warning before password expires	: 14

[root@rocky8 ~]# getent shadow boss4
boss4:$6$XBIumyDG.k/SUIfc$5CUSqPI2j6OHZM0.k8Ip2NKxP4eWRxh4/d1vbkYnDRbas4Bdlni.tZh7jN0LOF0FuwYZvlvfkOk5ArdeP1bke0:0:3:42:14:7:19275:

#下一次登录强制重设密码
[root@rocky8 ~]# chage -d 0 boss4
[root@rocky8 ~]# getent shadow boss4
boss4:$6$XBIumyDG.k/SUIfc$5CUSqPI2j6OHZM0.k8Ip2NKxP4eWRxh4/d1vbkYnDRbas4Bdlni.tZh7jN0LOF0FuwYZvlvfkOk5ArdeP1bke0:0:3:42:14:7:19275:
[root@rocky8 ~]# chage -l boss4
Last password change					: password must be changed
Password expires					: password must be changed
Password inactive					: password must be changed
Account expires						: Oct 10, 2022
Minimum number of days between password change		: 3
Maximum number of days between password change		: 42
Number of days of warning before password expires	: 14
3.9 创建组

groupadd实现创建组

格式

groupadd [OPTION]... group_name

常见选项:

-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000

范例:

groupadd -g 48 -r apache
3.10 修改组

groupmod 组属性修改

格式:

groupmod [OPTION]... group

常见选项:

-n group_name: 新名字
-g GID: 新的GID
3.11 组删除

groupdel 可以删除组

格式

groupdel [options] GROUP

常见选项:

-f, --force 强制删除,即使是用户的主组也强制删除组
3.12 更改和查看组成员

groupmems 可以管理附加组的成员关系

格式

groupmems [options] [action]

常见选项:

-g, --group groupname #更改为指定组 (只有root)
-a, --add username #指定用户加入组
-d, --delete username #从组中删除用户
-p, --purge #从组中清除所有成员
-l, --list #显示组成员列表

groups 可查看用户组关系

格式

#查看用户所属组列表
groups [OPTION].[USERNAME]...

范例:

[root@rocky8 ~]# groupmems -l -g raymond #查看组里边有那些用户
[root@rocky8 ~]# groupmems -a boss4 -g raymond #添加附加组
[root@rocky8 ~]# id boss4
uid=1002(boss4) gid=100(users) groups=100(users),1000(raymond)
[root@rocky8 ~]# groupmems -d boss4 -g raymond #删除附加组
[root@rocky8 ~]# id boss4
uid=1002(boss4) gid=100(users) groups=100(users)

[root@rocky8 ~]# usermod -aG bin boss4 #-a 追加组
[root@rocky8 ~]# id boss4
uid=1002(boss4) gid=100(users) groups=100(users),1(bin)

[root@rocky8 ~]# usermod -G boss5 boss4  #不加-a 覆盖组
[root@rocky8 ~]# id boss4
uid=1002(boss4) gid=100(users) groups=100(users),1004(boss5)

[root@rocky8 ~]# usermod -aG root boss4 #要保留原来的组加-a
[root@rocky8 ~]# id boss4
uid=1002(boss4) gid=100(users) groups=100(users),1004(boss5),0(root)

[root@rocky8 ~]# usermod -G "" boss4 #删除附加组
[root@rocky8 ~]# id boss4
uid=1002(boss4) gid=100(users) groups=100(users)

范例:

[root@rocky8 ~]# useradd admins
[root@rocky8 ~]# groupmems -l -g admins
[root@rocky8 ~]# groupmems -a raymond -g admins
[root@rocky8 ~]# id raymond
uid=1000(raymond) gid=1000(raymond) groups=1000(raymond),1005(admins)
[root@rocky8 ~]# groupmems -l -g admins
raymond
[root@rocky8 ~]# groupmems -a tom -g admins
[root@rocky8 ~]# groupmems -l -g admins
raymond  tom
[root@rocky8 ~]# groupmems -d tom -g admins
[root@rocky8 ~]# groups tom
tom : tom
[root@rocky8 ~]# groupmems -l -g admins
raymond 
[root@rocky8 ~]# groupmems -p -g admins
[root@rocky8 ~]# groupmems -l -g admins
3.13 练习
  1. 创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
  2. 创建下面的用户、组和组成员关系
    名字为webs 的组
    用户nginx,使用webs 作为附加组
    用户varnish,使用webs 作为附加组
    用户mysql,不可交互登录系统,且不是webs 的成员,nginx,varnish,mysql密码都是raymond
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312502.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号