Linux系统用户管理
一、理论概念
(一)系统用户
百科定义的系统用户是:那些在通常意义上使用信息系统或者受到信息系统影响的“客户”。通俗讲就是能够使用和管理系统资源,并达到某种特定目标的人或“客户”。
(二)用户分类
系统管理员
普通用户
系统用户
登录用户
(三)用户标识
UID:Linux通过UID来区别和标识用户
根据用户分类UID的取值范围:0-65535
系统管理员:0
普通用户:1-60000
系统用户:1-499,1-999
登录用户:500+,1000+
(四)用户组
具有相同权限或用户属性的用户划分为一类,用组表示
(五)用户组分类
管理员组
普通组
用户基本组
用户附加组
(六)用户组标识
GID:Linux通过GID来区别和标识用户组
管理员组:0
普通组:1-499,1-999
500+,1000+
注解:centos的版本从6升到7后,默认用户创建的新用户ID从500开始改为从1000开始
二、Linux系统用户相关的配置文件
1、/etc/passwd;记录用户基本信息
2、/etc/group:记录用户组基本信息
3、/etc/shadow:记录用户密码及相关信息
4、/etc/gshadow:记录用户组密码及相关信息
(一)各配置文件默认格式:
(1)/etc/passwd;
name:password:UID:GID:GECOS:directory:shell
登录名:x:UID:GID:comment:主目录:用户默认shell
(2)/etc/group:
group_name:password:GID:user_list
组名:x:GID:组用户列表
(3)/etc/gshadow:
group name:encrypted password:administrators:members
组名:加密字符串:组管理:组成员
(4)/etc/shadow:
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
用户名:密码加密字串:密码最后修改日期:密码最小过期期限:密码最大过期期限:密码到期警告期:密码锁定周期:账号过期日期:保留字段
(5)扩展:
root:$6$amdZ6oA3a.Cbr7UG$l1RTCNNacewA5vFA263R9NcFpWZGtjl9x4nq0DnCX25wMqdxWApWI7UwTgVO0/wAu1geXrirVv7WChL8FFhsS0:16673:0:99999:7:::
注解:密码加密字符串由$分隔,分三部分
1、加密算法,6表示sha512加密算法
2、随机字符串
3、密码和随机字符串合并加密后的字符串
加密算法:
md5,sha1, sha224, sha256, sha384, sha512(1,2,3,4,5,6)
md5:用数字1标识,按固定的算法转换设置的密码字符串,如果两个用户设置相同的密码,在shadow文件中两个用户的加密密码字符串也是相同的。这是风险点
sha512:用数字6标识,先将用户设置的密码串按算法添加部分随机的字符串,再按固定的加密算法转换密码为加密的字符串,最大程度的降低md5算法存在的风险
注:两个或多个加密算法可以混合使用
测试显示系统加密算法命令:
[root@localhost ~]# authconfig --test|grep hashing
password hashing algorithm is sha512
密码复杂性策略:
1、使用数字、小写字母、大写字母、特殊字符四类中至少三类;
2、足够长;
3、使用随机密码;
4、定期更换
三、命令
1、useradd:添加用户
useradd [options] LOGIN
-c, --comment COMMENT:用户描述
-d, --home-dir HOME_DIR:指定用户家目录路径
-e, --expiredate EXPIRE_DATE:指定用户使用期限;format YYYY-MM-DD
-g, --gid GROUP:指定用户所属基本组,此组必须事先存在
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指定所属的附加组;
-K, --key KEY=VALUE:指定配置文件/etc/login.defs中参数的值
-m, --create-home:创建用户家目录
-M, --no-create-home:不给用户创建家目录
-p, --password PASSWORD:创建时设置用户密码
-r, --system:创建系统用户
-s, --shell SHELL:设定用户默认的shell;cat /etc/shells查看可设置的shell类型
-u, --uid UID:指定用户UID
练习:创建用户Oracle,所属附加组database和sql,ID号为3000, 家目录为/home/database,密码为1q2w3e,并指定用户的shell为bash;
[root@localhost ~]# groupadd database [root@localhost ~]# groupadd sql [root@localhost ~]# useradd -G database,sql -u 3000 -d /home/database -p 1q2w3e -s /bin/bash Oracle
结果:shadow文件中Oracle的密码是明文密码,而不是加密后的字符串?
[root@localhost ~]# passwd Oracle
重新用passwd命令重置Oracle密码后,shadow文件中Oracle用户密码是加密后的字符串2、groupadd:添加用户组
groupadd [options] group
-g, --gid GID:指定组ID
-r, --system:创建系统组
例子是1、useradd练习中的database和sql,查看两个组信息
3、id:查看用户相关ID信息
id [OPTION]... [USER]
-g, --group:只打印组ID
-a:默认格式
-G, --groups:打印所有GID
-n, --name:打印名字而不是ID,与-ugG一起使用
-u, --user:只打印用户ID
4、su切换用户或以其他用户身份执行命令
su [OPTION]... [-] [USER [ARG]...]
-, -l, --login USERNAME:完全切换,登录式切换;相当于用新用户登录
USERNAME:非完全切换
-c, --command=COMMAND:以新用户身份执行命令‘command’
5、usermod修改用户属性
usermod [options] LOGIN
-d, --home HOME_DIR:修改用户家目录
-g, --gid GROUP:修改用户所属基本组
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户附加组
-L, --lock:锁定用户
-p, --password PASSWORD:修改用户密码
-s, --shell SHELL:修改用户默认shell
-u, --uid UID:修改UID
-U, --unlock:解锁,不能和-p与-L一起使用
6、passwd设置用户密码
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warn-
days] [-i inactivedays] [-S] [--stdin] [username]
-l:lock user
-u:unlock user
--stdin:从标准输出接收用户密码
echo 123456 | passwd --stdin root
7、userdel:删除用户
userdel [-r] USERNAME
-r:删除用户的同时删除其家目录
8、groupmod: 组属性修改
groupmod [OPTION] GROUPNAME
-n GROUP_NAME:修改组名
-g GID:修改用户组GID
9、newgrp:为当前用户临时添加用户组,切换shell后消失
例:
10、gpasswd:设置用户组密码
groupdel:删除用户组
11、chfn:修改用户信息
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u][-v] [username]
chfn USERNAME:交互式同时修改用户所有信息,包括name,phone,office
例:
12、chsh:修改用户默认shell
chsh [-s shell] [-l] [-u] [-v] [username]
-s, --shell shell:修改默认shell
-l, --list-shells:等同于命令:cat /etc/shells
13、finger:显示系统用户信息
finger [-lmsp] [user ...] [user@host ...]
14、whoami:显示系统当前shell登录用户。等同于id -un
15、who:显示登录系统的用户信息
who [OPTION]... [ FILE | ARG1 ARG2 ]
-a, --all:显示所有信息
-b, --boot:系统最后一次启动时间
-q, --count:所有登录的用户名和用户数
-r, --runlevel:显示系统运行级别
-u, --users:显示登录的用户
16、w:显示哪些用户登录以及在作什么
w - [husfiV] [user]
-h:不打印头信息
-u:忽略用户名
-s:简略方式显示
-f:不显示From域
-i:用IP显示