用户与组管理
- 什么是用户,用户是人吗?
 - 用户是干啥的?
 
用户账号
- 超级管理员: root
 - 普通用户: ruochen
 - 系统/程序用户: 系统中为某个程序而产生的用户,这类用户一般不允许登录操作系统
 
组账号
- 定义: 用户的集合
 - 基本组: 与用户同名的一个组
 - 附加组: 将其他用户增加到某个组中,那么这个组称为其他用户的附加组
 
用户作用
- Linux 基于用户身份对资源进行访问控制
 
UID 和 GID 号
- uid(user identity) : 用户标识号
 - gid(group identity): 组标识号
 - root用户uid号: 0
 - 普通用户uid号:1000-60000(rhel7) 500+(rhel6)
 - 系统用户uid号: 1-999(rhel7) 1-499(rhel6)
 
用户相关文件
/etc/passwd 保存用户的账号信息
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ruochen:x:1000:1000:ruochen:/home/ruochen:/bin/bash- 字段1: 用户账号名称
 - 字段2: 'x' 代表密码占位符 /etc/shadow
 - 字段3: 用户账号的uid号
 - 字段4: 用户基本组账号的gid号
 - 字段5: 用户的全名
 - 字段6: 宿主目录(用户的家目录)
 - 字段7: 用户登录shell信息
- /bin/bash(默认登录shell)
 - /sbin/nologin(不允许用户登录系统)
 
 
/etc/shadow 保存用户的密码信息
root: 用户账号名称 $6$3rb.lU2l/JOMd/T5$dwR0X/HIgpbHZtIqtWQbTYyB268B80nJAnXgQ8foZsOm8eRx7wynqTdZG485k8jKu5fnbEpHJOCChpWGndXHL1: 用户密码信息,采用哈希算法加密 18050: 上次修改密码的时间(1970.1.1) 0: 密码的最短有效天数 99999: 密码的最长有效天数 7: 密码过期警告时间 : 密码过期后是否还允许登录 0 不允许 10 允许十天 -1 长期 : 密码过期时间 : 保留字段(未使用)
组账号相关文件
- /etc/group 保存组账号基本信息
 - /etc/gshadow 保存组账号密码信息
 
用户和组管理软件:
- yum install system-config-users -y
 - [root@localhost ~]# system-config-users
 - 查看用户信息
- [root@localhost ~]# id ruochen # id username
 
 
基于命令行的用户和组管理
创建用户
- useradd [选项] username
-u: 为账号指定 uid
-g: 指定用户 gid
-s: 为账号指定默认的登录shell
-G: 将用户添加到指定的附属组里面
-c: 为用户添加文本描述
-d: 为主目录指定不同于登录名的名称
-m: 创建用户的家目录(默认创建)
-M: 不创建用户的家目录
-p passwd: 为用户指定一个默认密码
-r: 创建一个系统账号
-e: 指定用户账号的逾期时间 YYYY-MM-DD
[root[@localhost](https://my.oschina.net/u/570656) ~]# useradd susa [root[@localhost](https://my.oschina.net/u/570656) ~]# useradd -u 3000 -s /sbin/nologin user
 
查看用户信息
id username
[root[@localhost](https://my.oschina.net/u/570656) ~]# id user uid=3000(user) gid=3000(user) groups=3000(user)
删除用户
userdel -r username
[root@localhost ~]# userdel -r susa [root@localhost ~]# id susa id: susa: no such user [root@localhost ~]# userdel -r user [root@localhost ~]# id user id: user: no such user [root@localhost ~]#
修改用户信息
- usermod [选项] username
-u: 重新指定用户的 uid 号
-s: 重新指定用户的登录shell
-G: 将用户添加到附加组内
-L: 用于锁定账号,使用户无法登录
-U: 用于解除账号锁定,使用户能够登录
[root@localhost ~]# usermod -u 2000 -s /sbin/nologin harry [root@localhost ~]# usermod -u 2000 -s /bin/bash harry [root@localhost ~]# id harry uid=2000(harry) gid=1001(harry) groups=1001(harry)
 
为用户创建密码
passwd username
echo 'passwd' | passwd --stdin username
[root@localhost ~]# passwd harry Changing password for user harry. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@localhost ~]# su - harry [harry@localhost ~]$ [root@localhost ~]# usermod -L harry [root@localhost ~]# su - harry Last login: Sat May 16 22:17:41 EDT 2020 on pts/1 [harry@localhost ~]$
此处已经锁定用户了,为何还能登录?
[root@localhost ~]# usermod -U harry
[root@localhost ~]# su - harry
Last login: Sat May 16 22:18:29 EDT 2020 on pts/1
[harry@localhost ~]$ 
更改用户密码信息
- chage -m 0 -M 90 -W 7 -I -1 username
 - -d 0: 强制用户下此登录修改密码
 - -E YYYY-MM-DD: 指定密码的过期时间
 - -l username: 列出用户当前密码设置
 

创建组
- groupadd [选项] groupname
 - -g: 指定组的 gid 号
 
删除组
groupdel groupname
[root@localhost ~]# groupdel manager
创建下列用户、组和组的成员关系:
- 一个名为 manager 的组
 - 一个名为harry 的用户,其属于 manager 组,这个组是该用户的从属组
 - 一个名为natasha 的用户,其属于 manager 组,这个组是该用户的从属组
 - 一个名为strlt 的用户,其在系统中没有可交互的shell,并且该用户不是 manager 组的成员
 - 用户natasha、harry和strlt 的密码都要设置为 default
 
[root@localhost ~]# groupadd manager
[root@localhost ~]# useradd -G manager harry
[root@localhost ~]# useradd natasha
[root@localhost ~]# usermod -G manager natasha
[root@localhost ~]# useradd -s /sbin/nologin strlt
[root@localhost ~]# echo 'default' | passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo 'default' | passwd --stdin natasha
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo 'default' | passwd --stdin strlt
Changing password for user strlt.
passwd: all authentication tokens updated successfully.
查看当前登录到系统的用户
users, w, who
[root@localhost ~]# w
23:16:53 up
2:23,
3 users,
load average: 0.19, 0.17, 0.14
登录时间
运行时间
用户总数
负载程度(1/5/15)
USER
TTY
LOGIN@
IDLE
JCPU
PCPU
WHAT
登录用户
登录所用终端
登录时间(LOGIN@ == LOGIN AT)
用户空闲时间
消耗CPU时间
任务执行后消耗时间
任务是谁
root     :0        20:55   ?xdm?   7:03   0.16s gdm-session-worker [pam/gdm-pas
root     pts/0     21:09    1:18m  0.32s  0.32s -bash
root     pts/1     21:33    5.00s  0.22s  0.00s w
- whoami
- 显示当前用户下的用户名
 
 - who am i
- 显示登录时用的用户名
 
 - who
显示当前真正登录系统的用户(不会显示su切换的用户)
[root@localhost ~]# who root :0 2020-05-16 20:55 (:0) root pts/0 2020-05-16 21:09 (192.168.37.1) root pts/1 2020-05-16 21:33 (:0) [root@localhost ~]# whoami root [root@localhost ~]# who am i root pts/0 2020-05-16 21:09 (192.168.37.1) [root@localhost ~]# su - ruochen [ruochen@localhost ~]$ who am i root pts/0 2020-05-16 21:09 (192.168.37.1) [ruochen@localhost ~]$ whoami ruochen
 
 
 
 
 
 
 
 