用户管理是日常工作中不可缺少的工作之一。
**用户管理
- 用户账密文件管理**
- /etc/passwd
/etc/passwd文件,以:分隔,共计7段
用户名 密码 uid gid 说明文字 家目录 shell
tmpuser110x:3022:3022::/home/tmpuser110:/bin/bash
- /etc/shadow
/etc/shadow 文件,以:分隔,共计9段
用户名 加密密码 密码更动日期 密码可更改日期 密码过期提醒时间 密码过期警告时间 密码失效天数 失效日 保留未使用
test:$6$9BW0o9Sm$3uqDuhr84SjW6AsolWK3sFdZvqxwj1ahpN2F5/:16942:0:99999:7:::
定义如下:
(1) 登录账号
(2) 加密口令,“*”或其他符号表示不能用来登录。
(3) 口令上次更改时间与1970年1月1日相隔的天数
(4) 口令更改后不可以再次更改的天数,0表示可以随时更改
(5) 口令的有效期,即口令更改后必须再次更改的天数,99999表示未设有效期
(6) 口令失效前警告用户的天数
(7) 口令失效后距账号被查封的天数,默认值-1
(8) 账号被封时距1970年1月1日的天数,默认值-1
(9) 保留未用
2. 用户的增删改查 增:
useradd -d 主目录 -g 主组 -G 副组 -s /bin/nologin 指定shell (-M 不建家目录)
-d 指定家目录
-g 指定主组
-G 指定副组
-s 指定shell
改:
usermod 参数 用户名 (更改用户属性)
usermod -a -G testgroup1 testgroup2 test (增加附属组) 修改副组,增加多个副组要加-a,如不加则修改副组
-c 跟账号说明
-d 跟自定义家目录
-e 跟密码创建日期 YYYY-MM-DD
-f 后跟密码过期警告天数
-g 主组
-G 副组
-a 与-G一起增加多个副组
-l 修改账户名
-s 修改shell(不能登录等shell如/sbin/nologin)
-u 更改uid
-L 账户锁定(即在shadow密码项标记为!)
-U 账户解锁
# 修改账密
chage 修改用户的密码
chage -d 1 username 第一次登录需要更改密码
# 更新用户账密
echo“username:newpassword”|chpasswd -m (更改并通过md5加密放入shadow文件中)
# 修改密码
passwd 用户名
删:
userdel -r username (连同用户家目录一起删除)
查:
id username (查看用户id情况)
3. 用户的切换
su - username 切换用户
sudo command 可使用root进行作业 [ 需修改/etc/sudoers]
1.普通用户,不需知道root账密,可通过sudo来切换root,此时切换时只需验证普通用户自己账密
a.如系统没有visudo命令,可通过yum -y install visudo安装
b.通过visudo命令编辑/etc/sudoers
在root ALL=(ALL)ALL下加入test ALL=(ALL)ALL 从而让test用户拥有sudo权利
^ ^ ^ ^
| | | |
账号 账号登入的来源主机名 (可切换的身份) 可下达的指令
或
去掉注释#wheel ALL=(ALL) ALL 一行,
然后通过groupmod -G wheel username 将对应用户加入whell组即可用sudo权利
2.只能普通用户登录,无需输入密码即可切换root(通过sudo su -命令切换)
visudo编辑配置文件/etc/sudoers,加入
User_Alias USER_SU = test,test1,test2
Cmnd_Alias SU = /bin/su
USER_SU ALL=(ALL) NOPASSWD: SU
完成后可测试:
[test@localhost]$ sudo su -
-----------------------
su 切换root ,需要输入root的账密
不加“-“时,目录还是在使用者用户下
加“-” 时即su- 目录转到root下了
sudo切换root ,需要使用者自己的账密
------------------------
3.指定test1用户,只能以root账号改其他账号的密码
test1 ALL=(root) !/usr/bin/passwd ,!/usr/bin/passwd root,/usr/bin/passwd [a-zA-Z]*,---------> 命令的绝对路径(通过which command 可获得)
2.当/etc/nologin.txt文件被创建时,普通用户都无法登陆,只有root可以!!!
4. 扩展:批量创建账号
大量建立账号scrip
#!/bin/bash
#功能有:
#1.检查account1.txt是否存在,并将该档案内的账号取出
#2.建立上述账号
#3.将上述账号的密码修订为【第一次登陆必须修改账密】
#2021-03-01
path=/bin:$PATH
export path
#检查是否存在account1.txt档案
if [ ! -f account1.txt ] ;then
echo "所有需要的账号档案不存在,请建立account1.txt,每行账号名称“
exit1
elif [ -f account1.txt ]; then
echo "存在需要删除其内容:$(echo ‘’> account1.txt)"
fi
usernames=$(cat account1.txt)
for username in $usernames
do
useradd $username
echo $username |passwd --stdin $username
chage -d 0 $username <==强制登入修改密码
done