1.1 passwd和shadow文件说明
1.passwd
root |
x |
0 |
0 |
root |
/root |
/bin/bash |
账号名称 |
账号密码 |
UID |
GID |
用户说明 |
用户家目录 |
shell解释器 |
2.shadow
字段名称 |
注释说明 |
账号名称 |
|
账号密码 |
加密密码 |
最近更改密码的时间 |
1970.1.1开始算时间戳 |
禁止修改密码的天数 |
|
警告更改密码的期限 |
|
不活动时间 |
|
失效时间 |
|
标志 |
1.2 管理用户命令汇总
命令 |
注释说明 |
useradd |
和addduser一样,添加用户 |
userdel |
删除用户,-r删除家目录(尽量别这这样干) |
passwd |
修改密码 |
chage |
修改用户密码属性 |
usermod |
更改用户信息的命令 |
id |
查看用户 |
su |
切换用户 |
sudo |
执行指定用户的命令(有权限即可) sudo -u aige ls /home/aige 查看aige这个目录 |
visudo |
修改/etc/sudoers文件,修改sudo的配置文件 |
groupadd |
添加用户组 |
1.3 目录
1.3.1 /etc/skel用户环境变量
当用户创建时候,自动复制这里的目录到自己家目录当中。
1.4 命令详解
1.4.1 useradd
参数 |
注释说明 |
-c |
注释账号 |
-d |
指定家目录位置,默认/home |
-e |
账号终止时间。 2017/02/05 这样写。20170205是19700101加上这个时间戳 |
-f |
账号过期后几天后永久停止使用 |
-g |
指定用户起始组 |
-G |
指定用户的附加组 |
-m |
用户目录不存在则自动创建 |
-M |
不添加用户家目录(虚拟用户) |
-s |
指定shell解释器 |
-u |
指定UID |
-g |
指定GID |
1 groupadd lala -g 3333 2 3 [[email protected] cron]# useradd -c "ni_kai_wanxiao_ma" -d /testone -g 3333 -u 3333 -s /bin/bash -e 2017/08/08 ni_KK 4 5 [[email protected] cron]# tail -1 /etc/passwd 6 7 ni_KK:x:3333:3333:ni_kai_wanxiao_ma:/testone:/bin/bash 8 9 [[email protected] cron]# tail -1 /etc/shadow 10 11 ni_KK:!!:17202:0:99999:7::17386: 12
1.4.2 passwd
主要就一个参数--stdin 非交互式更改密码
1 [[email protected] cron]# echo 123456 | passwd --stdin ni_KK 2 3 Changing password for user ni_KK. 4 5 passwd: all authentication tokens updated successfully. 6 7 [[email protected] cron]# 8
要求用户7天内不能修改密码,60天以后必须修改密码,过期10天前通知,过期后30天,禁止登录
1 [[email protected] cron]# passwd -n 7 -x 60 -i 30 -w 10 ni_KK 2 3 Adjusting aging data for user ni_KK. 4 5 passwd: Success 6 7 [[email protected] cron]# tail -1 /etc/shadow 8 9 ni_KK:$6$49JIKCbt$C7peOCBbG3Et.qg8nmT.gyzdm1aQrgR0Cf0EBLiM8t90brX5dxHEPL1i0zLjlGR6ICfwAG0vPpIJxdB7ew9lY0:17202:7:60:10:30:17386: 10
1.5 企业删用户
先注释掉passwd文件的用户,查看几个月之后,没事在把用户给删了。一般不用-r参数
1.6 w,who,uptime,last,lastlog,users命令
1 [[email protected] ~]# w 2 3 19:08:41 up 2 days, 15:18, 2 users, load average: 0.00, 0.01, 0.05 4 5 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT 6 7 root pts/0 192.168.101.1 Wed22 0.00s 0.21s 0.00s w 8 9 root pts/1 192.168.101.1 14:04 5:02m 0.12s 0.12s -bash 10 11 [[email protected] ~]# who 12 13 root pts/0 2017-02-01 22:57 (192.168.101.1) 14 15 root pts/1 2017-02-02 14:04 (192.168.101.1) 16 17 [[email protected] ~]# uptime 18 19 19:08:46 up 2 days, 15:18, 2 users, load average: 0.00, 0.01, 0.05 20 21 [[email protected] ~]# last 22 23 root pts/1 192.168.101.1 Thu Feb 2 14:04 still logged in 24 25 root pts/0 192.168.101.1 Wed Feb 1 22:57 still logged in 26 27 root pts/0 192.168.101.1 Wed Feb 1 17:18 - 22:57 (05:38) 28 29 [[email protected] ~]# lastlog 30 31 Username Port From Latest 32 33 root pts/1 192.168.101.1 Thu Feb 2 14:04:38 +0800 2017 34 35 bin **Never logged in** 36 37 [[email protected] ~]# users 38 39 root root 40 41 [[email protected] ~]# 42 43 [[email protected] ~]# su - aige -c "whoami" 44 45 aige 46 47 [[email protected] ~]# 48
批量生成10个账号(stu01-stu10)和密码
1 echo stu{01..10}|tr " " "\n"|awk ‘{print "useradd",$1,";password=$(date +%N | md5sum |cut -c 1-8);echo $password|passwd --stdin ",$1,";echo ",$1,"$password >> passwd.txt"}‘ | bash
1.7 su和sudo
1.7.1 su命令优缺点
优点:方便系统管理员使用root用户
缺点:必须知道root用户密码,出事了不知道事谁的管理事故。
用sudo代替su来管理命令。
1.7.2 sudo命令执行流程
1. 当sudo执行命令时,系统首先会查找/var/sudo/%home(如果时新用户会先生成此目录)目录中是否有用户时间戳文件,如果时间戳文件过期,则提示用户是否输入自身密码。
2. 当密码验证成功后,系统会查找/etc/sudoers配置文件,判断用户是否有执行相应sudo命令权限。
3. 如果具备执行相应sudo命令权限。就会自动由当前用户切换到root,或其他指定用户,然后使用该用户角色执行该命令。
4. 执行完成后,又会自动的直接退回到当前用户shell
1.7.3 sudoers
配置sudoers时应该注意:
1. echo命令是追加,不是重定向,覆盖整个文件就完蛋了。
2. 修改配置文件后用visudo -c进行语法检查。
3. 确保/etc/sudoers权限是正确的。-r--r----- 440
4. 及时对授权的操作进行测试,验证是否正确
5. 确保知道正确的root用户密码,以便sudo出现问题时可以用su - 切换root来进行恢复
1.8 sudoers详解
命令要用绝对路径
root ALL=(ALL) ALL
用户 机器 切换用户 命令
多条命令,多个用户可以用“,”逗号隔开。
用户或组 |
主机 |
切换角色 |
命令 |
root |
ALL= |
(ALL) |
ALL |
User_Alias ADMINS =aige %组名 |
Host_Alias me = f1 |
Runas_Alias op= |
Cmnd_Alias |
别名可以放置多个用户、主机、角色、命令。
visudo -c 检查语法
欢迎加入QQ群:93324526
讨论技术。
本博客python地址:矮哥_Linux