linux用户管理
用户/用户组
1. 用户的三要素:
1.身份(账号) account
2.授权(权限) author
3.认证(密码证明是用户本人) auth
2. 用户组:
用户组是一个逻辑容器,对用户进行归类和统一授权。
3. 用户及用户组在系统中的存在方式:
电脑对数字敏感,用id来识别用户。
人类对字符串敏感,用名称来识别用户。
id、名称,必须要记录到文件当中用户才能存在。用户就是/etc/passwd文件中的一行字符,用户组存在的方式就是/etc/group 文件中的一行字符。
4. 用户涉及到的系统配置文件
- /etc/passwd ##用户身份信息文件
#用户名称:用户密码:用户id(uid):用户主组id(gid):用户说明:用户家目录:用户默认shell
##用户密码不存在此文件里,无意义但功能还在
##用户说明是什么登录系统显示信息就是什么,图形登陆列表的名称
##默认shell还可以换成/bin/sh,/sbin/nologin是是非交互式的shell不能登录,交互式的才可以
- /etc/group ##组身份信息文件
#组名称:组密码:组id:组的附加成员
- /etc/shadow ##用户认证信息文件
各字段代表意思:
用户名称:用户密码的加密字符:用户密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)
##Linux 计算用户密码最后一次被修改时间一般是从 1970 年 1 月 1 日开始到最后一次修改经历了多少天算的。
##密码最短有效期意思是多长时间内不能改密码,如果为0则随时可以改,此字段是为了针对某些人频繁更改账户密码而设计的。
##密码最长有效期为了强制要求用户变更密码,这个字段可以指定距离最后一次更改密码多长时间内需要再次变更密码,否则该账户密码进行过期阶段。该字段的默认值为 99999,可以理解为永久生效。
##账号非活跃期指在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。比如说,此字段规定的宽限天数是 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。
##账户到期时间使用自1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用。
##用户自定义这个字段目前没有使用,等待新功能的加入。
- /etc/skel/.* ##用户环境配置文件模板
- /home/username ##用户家目录
- /var/spool/mail/username ##用户邮箱文件
5. 用户id范围:
0-65535(2的16次方)
0: ##超级用户ID
1-200: ##系统预留ID
201-999: ##系统用户
1000-65535: ##用户级id
##以上ID设定规则都被记录在/etc/login.defs
用户查看和切换
1. 用户查看
whomai ##单独使用查看当前用户是谁
id:查看用户id信息,有以下参数:
-a ##查看当前用户的用户信息
-u ##查看用户的用户id
-g ##查看用户主组id
-G ##查看用户所有的组的id
-n ##显示组的名称,不能单独使用,可以配合g、G使用
##gid是所在的初始组id(主组),即创建时默认的组,groups是所有的组包括主组和所在的其他组即附加组的id
2. 用户切换
su username
##切换用户
su - username
##加-
切换用户环境,不加的话还是在之前的用户环境里
##如果从root登录到common user(普通用户)不需要后者密码。如果从common user登录到root 需要密码,从common user登录到common user 需要密码。
##注意:
在做用户切换时当使用完毕用户身份及时退出,不要在一个shell中反复执行su命令,在一个shell中反复执行su命令会导致出现多个bash容易致使环境错乱。
用户/用户组的建立及删除
1. 监控用户建立
watch -n 1 -d tail -n 4 /etc/passwd /etc/group
##-n 1表示时隔1秒刷新,-d表示高亮显示动态变化,此命令意为实时监控passwd文件和group文件后4行的变化
watch -n 1 ls -l /home
意为监控/home文件变化
watch -n 1 "tail -n -4 /etc/passwd /etc/group;echo ---------;ls -l /home"
监控相应文件变化,用;
分隔不同的命令,用“”
将命令合起来,用---------当分割线。如下图:
2. useradd / userdel:建立 / 删除用户
-u id username ##建立用户并指定用户uid
-g id username ##主组id
-G id username ##附加组id
-d dir username ##指定用户家目录
-M username ##建立用户时不建立家目录
-c word username ##指定用户说明,如果字符间有空格就用引号引起来
-s shell username ##指定用shell
userdel -r username
##用户删除 -r 删除用户的系统配置文件
2. groupadd / groupdel:组的建立 / 删除
groupadd -g id groupname
##指定组id
groupdel groupname
##组删除
用户/用户组的信息更改
1. usermod
-l #更改用户名称
-u #更改用户id
-g #更改主组id
-G #更改用户附加组身份
##usermod -G更改会把以前的删除掉,加a不会,想删掉就‘’为空
-aG #添加用户附加组身份,也可以不用id直接添加名字
-c #更改用户说明
-d #更改家目录指向,只更改passwd文件中字符
-md #更改家目录指向同时更改家目录名称
-s #更改默认shell
-L #冻结账号
-U #解锁
2. groupmod
groupmod -g id groupname ##更改用户组id
用户密码相关命令
passwd -S lee ##查看密码状态
root用户修改密码
passwd user,或者只有root可以执行的 “echo 密码 | passwd --stdin user”
普通用户修改密码
passwd -l lee ##冻结账号认证
passwd -u lee ##解锁账号认证
passwd -d lee ##删除密码
passwd -e lee ##修改默认使用时间为0
passwd -n 1 lee ##lee在1天内不能改密码
passwd -x 40 lee ##40天内lee用户必须更新密码否则会被冻结
passwd -w 2 lee ##账号过期前警告时间
passwd -i 2 lee ##账号认证最大时间超过后还能用多久
##passwd有些期限不能改
chage -d 0 lee ##账号必须改密码才能登陆系统
chage -m 1 lee ##密码最长有效期
chage -M 30 lee ##密码过期警告
chage -W 1 lee ##认证非活跃天数
chage -I 1 lee ##账号认证到期时间
chage -E “2020-05-11” ##到2020-5-11这天账号会被冻结
##chage不能修改密码
用户下放权力
修改visudo文件授权:
此命令作用是编辑/etc/sudoers并提供语法检测。
##在文件的第100行后进行编辑,格式如下:
username hostname=(newusername) [NOPASSWD:] /command, /command1
举例:
#lee用户 在localhost主机=(用超级用户身份) 执行useradd命令
lee localhost=(root) /usr/sbin/useradd
#lucky用户在localhost主机使用超户免密执行useradd 和 userdel
lucky localhost=(root) NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel
测试是否成功:
给普通用户授权方式 “sudo”:使普通用户使用指定的用户身份运行命令。
##使用权限:在 /etc/sudoers 中有出现的使用者(在上面我们已经将luck用户添加进去了)。