首页 > 代码库 > 10-用户管理
10-用户管理
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 [root@AIGE cron]# useradd -c "ni_kai_wanxiao_ma" -d /testone -g 3333 -u 3333 -s /bin/bash -e 2017/08/08 ni_KK 4 5 [root@AIGE cron]# tail -1 /etc/passwd 6 7 ni_KK:x:3333:3333:ni_kai_wanxiao_ma:/testone:/bin/bash 8 9 [root@AIGE cron]# tail -1 /etc/shadow 10 11 ni_KK:!!:17202:0:99999:7::17386: 12
1.4.2 passwd
主要就一个参数--stdin 非交互式更改密码
1 [root@AIGE 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 [root@AIGE cron]# 8
要求用户7天内不能修改密码,60天以后必须修改密码,过期10天前通知,过期后30天,禁止登录
1 [root@AIGE 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 [root@AIGE 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 [root@AIGE ~]# 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 LOGIN@ 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 [root@AIGE ~]# 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 [root@AIGE ~]# uptime 18 19 19:08:46 up 2 days, 15:18, 2 users, load average: 0.00, 0.01, 0.05 20 21 [root@AIGE ~]# 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 [root@AIGE ~]# 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 [root@AIGE ~]# users 38 39 root root 40 41 [root@AIGE ~]# 42 43 [root@AIGE ~]# su - aige -c "whoami" 44 45 aige 46 47 [root@AIGE ~]# 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
10-用户管理