资源分派:
- 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-499 (CentOS 6以前), 1-999 (CentOS 7以后)
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:组密码及其相关属性
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 passwd2.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 -> useradd3.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 | chpasswd3.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, --commandpass 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 directory3.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 : 143.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 apache3.10 修改组
groupmod 组属性修改
格式:
groupmod [OPTION]... group
常见选项:
-n group_name: 新名字 -g GID: 新的GID3.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 admins3.13 练习
- 创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
- 创建下面的用户、组和组成员关系
名字为webs 的组
用户nginx,使用webs 作为附加组
用户varnish,使用webs 作为附加组
用户mysql,不可交互登录系统,且不是webs 的成员,nginx,varnish,mysql密码都是raymond



