首页 > 代码库 > 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-用户管理