23.用户管理-useradd+usermod

用户管理

用户分类

Linux用户有三种角色:

超级用户:root,拥有对系统的最高的管理权限,它的ID=0

普通用户:系统用户,它的UID:1-999(centos/Redhat7版本)UID:1-499(centos/Redhat6版本);本地用户,它的UID:1000+(centos/Redhat7版本)UID:500+(centos/Redhat6版本)

虚拟用户:伪用户,一般不会用来登录系统,它主要是用于维持某个服务的正常运行,如ftp、Apache等。

 

用户和组的关系

一对一:一个用户可以存在在一个组中;

一对多:一个用户可以存在在多个组中;

多对一:多个用户可以存在在一个组中;

多对多:多个用户可以存在在多个组中;

 

用户配置文件

用户的配置文件有三种:

名 称

路径及文件

说 明

用户配置文件

/etc/passwd

记录了每个用户的一些基本属性,并且对所有用户可读,每一行记录对应一个用户,每行记录通过冒号进行分隔

用户组文件

/etc/group

用户组的所有信息存放位置,并且组名不能重复

用户对应的密码信息

/etc/shadow

因为passwd文件对所有用户是可读的,为安全起见把密码从passwd中分离出来放入这个单独的文件,该文件只有root用户拥有读权限,从而保证密码安全性

 

 

 

 

 

 

 

用户命令

useradd=adduser

注意:

useradd用法及作用与adduser相同!!!

 

作用:添加用户

语法:useradd -d 用户主目录路径 -u UID –g 初始组 -G 附加组 -s 登录的shell 用户名

参数:

-d:可以指定用户的家目录

-M:不创建用户的主目录

-g:设置用户初始组的名字或数字ID;该组必须是存在的;如果没有设置该选项useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。默认USERGROUPS_ENAB会使用和用户名相同的名字创建群组,GID等于UID。

-G:用户要加入的附件组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。(一个用户只允许有一个主组,可以有多个附加组)

-s:用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已安装,默认是Bash。有时候需要禁止某些用户执行登录操作,例如用来执行系统服务的用户。将shell设置成/sbin/nologin就可以禁止用户登录。

 

useradd 用户名

[root@localhost ~]# useradd wangbin

[root@localhost ~]# tail -1 /etc/passwd

wangbin:x:1001:1001::/home/wangbin:/bin/bash

解释:

此命令会自动创建wangbin组,并成为wangbin用户的默认组,同时默认的登录shell是bash。

 

useradd -u 自定义UID号 用户名

[root@localhost ~]# useradd -u 1111 changmengka

[root@localhost ~]# tail -1 /etc/passwd

changmengka:x:1111:1111::/home/changmengka:/bin/bash

解释:

指定用户的UID

 

useradd -d 用户家目录用户名

[root@localhost ~]# useradd -d ~/Desktop/test_home liuzhiwei

[root@localhost ~]# tail -1 /etc/passwd

liuzhiwei:x:1113:1113::/root/Desktop/test_home:/bin/bash

解释:

指定用户的家目录

 

useradd –g 所属组 用户名

[root@localhost ~]# useradd -g wangbin weifangchao

[root@localhost ~]# id weifangchao

uid=1117(weifangchao) gid=1001(wangbin) groups=1001(wangbin)

解释:

指定用户的所属组,通过“id 用户名”可以看到weifangchao用户在wangbin组中(指定的属组必须存在,否则报错)

 

useradd -G 附加组1,附加组2,…… 用户名

[root@localhost ~]# useradd -G wangbin,changmengka wangquanzizhan

[root@localhost ~]# id wangquanzizhan

uid=1118(wangquanzizhan) gid=1118(wangquanzizhan) groups=1118(wangquanzizhan),1001(wangbin),1111(changmengka)

解释:

指定用户附加组,附属组也可以称为补充组,用户可以有0个或多个附加组

 

userdel

语法:userdel [选项] 用户名

参数:

-r:删除的时候,同时会删除用户的家目录和/var/mail下的目录

举例:

[root@localhost home]# userdel -r wangquanzizhan

 

id 用户名

[root@localhost home]# id wangbin

uid=1001(wangbin) gid=1001(wangbin) groups=1001(wangbin)

解释:

查看用户的UID、GID、GROUPS、属组等信息。

 

passwd 用户名

为用户添加密码。

方法一

交互式为用户添加密码

[root@localhost home]# passwd wangzhibin

Changing password for user wangzhibin.

New password:           #输入密码

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:        #输入密码二次确认

passwd: all authentication tokens updated successfully.

 

方法二

免交互式为用户设置密码

[root@localhost home]# echo wfc123 | passwd --stdin weifangchao

Changing password for user weifangchao.

passwd: all authentication tokens updated successfully.

 

passwd说明

 

 

 

wangbin:用户名

x:密码占位符

1001:用户的UID,用数字表示

1001:用户所属组的GID,用数字表示

/home/wangbin:用户的主目录

/bin/bash:用户登录系统后使用的shell

 

shadow说明

 

 

 

详细解释:

name

登录名称,这个必须是系统中的有效账户名

password

已加密密码,分为三个部分,第一部分是表示使用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密的哈希

哈希算法:$1表示MD5 ; $6 表示SHA-512 ;  $5 SHA-256

查看帮助说明:

man 5 passwd

man 5 shadow

man 5 group

man 3 crypt

lastchange

最近一次更改密码的日期,以距离1970/1/1的天数表示

min-age

不能更改密码的最少天数,最近更改过后几天才可以更改;如果为0表示“最短期限要求”

maxage

密码过期时间,必须更改密码前的最多天数

warning

密码即将到期的警告期,以天数表示,0表示“不提供警告”

inactive

宽限天数,密码到期后

expire

账号过期时间,以距离1970/1/1的天数计算 (千年虫)

blank

预留字段

 

group说明

 

 

 

用户组:用户组名称

密码占位符:密码的占位符

GID:用户的GID号

其他用户:用户组下包括的其他用户

 

控制用户规则

控制添加用户规则的文件有两个:/etc/default/useradd和/etc/login.defs

/etc/default/useradd文件

[root@localhost home]# cat /etc/default/useradd

# useradd defaults file

GROUP=100        #表示创建普通组。users组ID为100 。(如果没有这一条,或者你把users这个组删除了,当你再创建用户时,将提示:useradd: group '100' does not exist)

HOME=/home     #表示设置用户的家目录存放位置。(如果不想让用户家目录存储在/home下,可以修改这个地方)

INACTIVE=-1       #是否启用账号过期。(密码过期后是否会失效的设置,“INACTIVE= ”表示无效;“INACTIVE=-1”表示启用)

EXPIRE=               #设置账号终止日期。(可以直接设定账号在哪个日期后就直接失效)

SHELL=/bin/bash #设置添加用户时默认使用的shell

SKEL=/etc/skel     #设置模板目录

CREATE_MAIL_SPOOL=yes        #是否创建邮箱文件

 

/etc/login.defs文件

使用egrep去除无用数据

[root@localhost home]# egrep -v "^$|^#" /etc/login.defs

MAIL_DIR        /var/spool/mail                  #新建用户的默认邮箱位置

PASS_MAX_DAYS   99999                             #密码的有效期

PASS_MIN_DAYS   0                                     #密码每隔多长时间修改

PASS_MIN_LEN    5                                      #密码最小长度

PASS_WARN_AGE   7                                    #密码到期前几天警告

UID_MIN                  1000                 #用户ID开始的数值

UID_MAX                 60000                #用户ID结束的数值

SYS_UID_MIN               201

SYS_UID_MAX               999

GID_MIN                  1000                 #组ID开始的数值

GID_MAX                 60000                #组ID结束的数值

SYS_GID_MIN               201

SYS_GID_MAX               999

CREATE_HOME     yes                                 #是否为用户创建home目录

UMASK           077                                 #用户家目录默认权限

USERGROUPS_ENAB yes                                 #userdel删除用户时,是否删除用户的初始组

ENCRYPT_METHOD SHA512                           #shadow文件的加密算法,默认是sha512

 

chage修改用户密码信息

chage [参数] 数值/日期 用户名

参数:

-m:密码可更改的最小天数。为0时代表任何时候都可以更改密码

-M:密码保持有效的最大天数

-W:用户密码到期前,提前收到警告信息的天数

-E:帐号到期的日期。过了这天,此帐号将不可用

-d:上一次更改的日期,为0表示强制在下次登录时更新密码

-I(大写i):停滞时期。如果一个密码已过期这么多天,那么这个账号不可用

-l(小写L):列出当前的设置,由非特权用户来确定他们的账号或密码何时过期

 

[root@localhost home]# chage -m 2 caoxiaoming

[root@localhost home]# cat /etc/shadow | grep caoxiaoming

caoxiaoming:!!:18599:2:99999:7:::

 

[root@localhost home]# chage -M 3 caoxiaoming

[root@localhost home]# cat /etc/shadow | grep caoxiaoming

caoxiaoming:!!:18599:2:3:7:::

 

[root@localhost home]# chage -W 4 caoxiaoming

[root@localhost home]# cat /etc/shadow | grep caoxiaoming

caoxiaoming:!!:18599:2:3:4:::

 

[root@localhost home]# chage -E 2020-12-04 caoxiaoming      

[root@localhost home]# cat /etc/shadow | grep caoxiaoming   

caoxiaoming:!!:18599:2:3:4::18600:

 

[root@localhost home]# chage -d 2020-11-04 wangzhibin

[root@localhost home]# cat /etc/shadow | grep caoxiaoming

caoxiaoming:!!:18599:2:3:4::18600:

 

[root@localhost home]# chage -I 10 wangzhibin

[root@localhost home]# cat /etc/shadow | grep caoxiaoming

caoxiaoming:!!:18599:2:3:4::18600:

 

[root@localhost home]# chage -l wangzhibin                

Last password change                                    : Nov 04, 2020

Password expires                                        : Nov 07, 2020

Password inactive                                       : Nov 17, 2020

Account expires                                         : never

Minimum number of days between password change          : 2

Maximum number of days between password change          : 3

Number of days of warning before password expires       : 20

 

查看用户相关命令

id 用户名

查看用户和组的信息

[root@localhost home]# id qiyongkang

uid=1117(qiyongkang) gid=1117(qiyongkang) groups=1117(qiyongkang),1114(wangzhibin),1115(caoxiaoming)

 

whoami

查看当前登录用户

[root@localhost home]# whoami

root

 

who

查看目前登录系统的用户信息

[root@localhost home]# who

root     :0           2020-12-03 14:11 (:0)

root     pts/0        2020-12-03 14:11 (192.168.234.1)

root     pts/1        2020-12-03 15:58 (192.168.234.1)

 

w

查看已经登录的用户列表

[root@localhost home]# w

 17:03:58 up  3:01,  3 users,  load average: 0.00, 0.01, 0.05

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

root     :0       :0               14:11   ?xdm?   2:11   0.84s /usr/libexec/gn

root     pts/0    192.168.234.1    14:11   18:46   1.06s  1.06s -bash

root     pts/1    192.168.234.1    15:58    6.00s  0.28s  0.00s w

 

users

查看当前登录系统的所有用户的用户列表

[root@localhost home]# users

root root root

 

修改用户信息

usermod [参数] 用户名

参数:

-u:UID

-d:家目录

-g:初始组

-G:附加组

-s:登录shell

-L:锁定

 

原始信息

[root@localhost home]# useradd niaoshi

[root@localhost home]# id niaoshi

uid=1118(niaoshi) gid=1118(niaoshi) groups=1118(niaoshi)

 

修改UID

将用户niaoshi的UID改为2000

[root@localhost home]# usermod -u 2000 niaoshi

[root@localhost home]# id niaoshi

uid=2000(niaoshi) gid=1118(niaoshi) groups=1118(niaoshi)

 

修改shell

将用户niaoshi的shell改为/sbin/nologin

[root@localhost home]# usermod -s /sbin/nologin niaoshi

[root@localhost home]# cat /etc/passwd | grep niaoshi

niaoshi:x:2000:1118::/home/niaoshi:/sbin/nologin

 

修改家目录

将用户niaoshi的家目录改为/home/test

-m 选项会自动创建新目录并且移到内容到新目录里

[root@localhost test]# usermod -m -d /home/test niaoshi

[root@localhost home]# cat /etc/passwd | grep niaoshi

niaoshi:x:2000:1118::/home/test:/sbin/nologin

 

添加说明信息

给用户添加ceshi说明信息

[root@localhost home]# usermod -c "ceshi" niaoshi

 

posted @ 2020-12-23 11:02  AI非AI  阅读(343)  评论(0)    收藏  举报