用户管理主要是通过修改用户配置文件完成的

使用用户管理控制工具的最终目的也是为了修改用户配置文件

每一位用户的UID值都是唯一的

 

一、用户分类

用户的角色是通过UID来识别的,而不是用户名

Linux系统三大类用户:root用户、系统用户、普通用户

1)root用户

root用户UID为0,权限最高的

2)系统用户

又成虚拟用户、伪用户或假用户,不具有登录Linux系统的能力,但却是系统运行不可缺少的用户

CentOS6:1~499

CentOS7:1~999

3)普通用户

能登录Linux系统,使用的权限有限,由管理员创建

CentOS6:500~60000

CentOS7:1000~60000

 

假设用户以zhangsan登录系统时,系统首先会检查/etc/passwd文件,看是否有zhangsan这个账户,然后确定用户zhangsan的UID,通过UID来确认用户的身边,如果存在则读取/etc/shadow文件中所对应的密码。如果密码核实无误则登录系统,读取用户的配置文件。

 

二、用户相关配置文件

1、/etc/passwd文件

Linux系统中所有的用户都会记录在该文件中

任何用户都可以查看,但只有root用户可以修改

[root@localhost home]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin


   各字段的含义:

用户名:密码:UID:GID:用户描述:用户家目录:用户登录shell类型

 


2、/etc/shadow文件

这个文件只有root可以查看和操作

[root@localhost ~]# cat /etc/shadow

root:$6$w/WqR.C7Cduh.vVn$40kMrg9DVS1mrkcYHysMS9x6.RQ3JKLulL4e4VTzKsqpw9Ie8x.O15FGDejIo9SLMSaXfaNqE/vmg9JElQhHl/:17012:0:99999:7:::

bin:*:17012:0:99999:7:::

daemon:*:17012:0:99999:7:::

adm:*:17012:0:99999:7:::

… …

 

各字段的含义:

用户名:加密密码:用户最后一次更改密码的日期:密码允许更换前的天数:密码需要更换的天数:密码更换前警告的天数:账户被取消激活前的天数:用户账户过期日期:保留字段

 

3、其他配置文件

   [root@localhost~]# cat /etc/default/useradd  新建用户默认值设定

   GROUP=100                #用户默认组

   HOME=/home               #用户家目录

   INACTIVE=-1              #密码过期宽限天数(shadow文件7字段)

   EXPIRE=                  #密码失效时间(8

   SHELL=/bin/bash          #默认shell

   SKEL=/etc/skel           #模板目录

   CREATE_MAIL_SPOOL=yes    #是否建立邮箱

 

   [root@localhost~]# cat /etc/login.defs

   MAIL_DIR         /var/spool/mail   #创建用户时,要在目录/var/spool/mail中创建一个用户邮箱文件

   PASS_MAX_DAYS    99999   #密码有效期(5

   PASS_MIN_DAYS    0       #密码修改间隔(4

   PASS_MIN_LEN     5       #密码最小5位(PAM)

   PASS_WARN_AGE    7       #密码到期警告(6

   UID_MIN          1000    #最小UID范围

   UID_MAX          60000   #最大UID范围

   SYS_UID_MIN      201     #最小系统UID范围

   SYS_UID_MAX      999     #最大系统UID范围

   GID_MIN          1000    #最小GID范围

   GID_MAX          60000   #最大GID范围

   SYS_GID_MIN      201     #最小系统GID范围

   SYS_GID_MAX      999     #最大系统GID范围

   UMASK            077     #umask的默认值

   ENCRYPT_METHOD SHA512    #加密模式

 

   [root@localhost~]# ls -la /etc/skel/     #用户主目录模板

   total24

   drwxr-xr-x.   3 root root  74 Jul 21 11:24 .

   drwxr-xr-x. 129 root root 8192 Aug  5 17:15 ..

   -rw-r--r--.   1 root root  18 Nov 20  2015 .bash_logout

   -rw-r--r--.   1 root root 193 Nov 20  2015 .bash_profile

   -rw-r--r--.   1 root root 231 Nov 20  2015 .bashrc

   drwxr-xr-x.   4 root root  37 Jul 21 11:24 .mozilla


三、用户账户管理工具

在Linux系统中,可以使用图形的管理工具和字符命令进行管理。

[root@localhost ~]# rpm -ivh/media/Packages/system-config-users-1.3.5-2.el7.noarch.rpm --nodeps

warning:/media/Packages/system-config-users-1.3.5-2.el7.noarch.rpm: Header V3RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

Preparing...                       #################################[100%]

Updating / installing...

  1:system-config-users-1.3.5-2.el7 ################################# [100%]

system-config-users是一款图形下的用户管理工具,可以可视化环境对用户和组进行管理。


1、创建用户账户

当创建一个新账户时,为新账户分配用户UID、组群、主目录和登录Shell等资源。

新创建的用户默认被锁定,无法使用,需使用passwd设置密码后才能使用。

创建新用户就是向/etc/passwd中增加一条用户记录,同时更新/etc/shadow和/etc/grouop文件。

adduser是useradd的软链接文件,两者具有一样的功能,都可以创建新账号。


命令语法:

    useradd [选项] [用户名]


选项:

    -d:指定用户的主目录

    -e:设置账户的有效期限

    -f:设置在密码过期后多少天即关闭该账户

    -c:设置用户账户的描述信息

    -g:指定用户的基本组

    -G:指定用户的附加组

    -m:创建家目录

    -M:不建立家目录

    -r:指定创建系统用户

    -s:用户登录Shell类型

    -u:指定用户UID

 

示例:

创建zhangsan用户,UID为1010,主目录/testdir/zhangsan,所属组为root,登录Shell为/bin/csh

[root@localhost ~]# useradd -u 1010 -d/testdir/zhangsan -g root -s /bin/csh zhangsan

 

创建完成后,使用getent命令进行查看

[root@localhost ~]# getent passwd zhangsan

zhangsan:x:1010:0::/testdir/zhangsan:/bin/csh

[root@localhost ~]# getent shadow zhangsan

zhangsan:!!:17015:0:99999:7:::

 

zhangsan用户没有创建密码,密码显示”!!”,表示不可登录系统

[root@localhost ~]# echo centos | passwd--stdin zhangsan

Changing password for user zhangsan.

passwd: all authentication tokens updatedsuccessfully.

[root@localhost ~]# getent shadow zhangsan

zhangsan:$6$7WWjhBJh$U49xRBtBL3njImeriHeOp2HaBtyjuviZ.OqimtGHgjjWa0NYQxeG2hFXMxWNbzE6dt1RPsvlqgfMfCk3.D3PM.:17015:0:99999:7:::

 

2、修改用户账户

usermod可以更改用户的Shell类型、所属的组群、密码有限期,还能更改用户的登录名


命令语法:

    usermod [选项] [用户名]


选项:

    -G:修改用户的附加组

    -l:修改用户账户的名称

    -L:锁定用户密码,使密码失效

    -s:修改用户登录Shell

    -U:解除密码锁定

    -u:修改用户UID

    -c:修改用户描述信息

    -d:修改用户主目录

    -e:修改账户有效期限

    -f:修改在密码过期后多少天即关闭账户

    -g:修改用户基本组

    -o:允许使用重复的UID

    -m:移动主目录的内容到新的位置

 

示例:

将zhangsan用户的主目录由之前的/home/zhangsan改为/home/wang,并将登录名称改为wang。

[root@localhost ~]# ls /home/

centos cyh  xiaoming  zhangsan

[root@localhost ~]# cat /etc/passwd | grepzhangsan

zhangsan:x:1003:1003::/home/zhangsan:/bin/bash

 

[root@localhost ~]# usermod -d /home/wang-m -l wang zhangsan

[root@localhost ~]# getent passwd wang

wang:x:1003:1003::/home/wang:/bin/bash

[root@localhost ~]# ls /home/

centos cyh  wang  xiaoming

 

修改用户wang账户的过期日期是2017年12月30日,在密码过期后15天就禁用该账户。

[root@localhost ~]# getent shadow wang

wang:!!:17015:0:99999:7:::

[root@localhost ~]# usermod -e 12/30/2017-f 15 wang

[root@localhost ~]# getent shadow wang

wang:!!:17015:0:99999:7:15:17530:

 

3、删除用户账户

删除Linux系统中的用户账户

在实际工作中,当删除用户时,因为需要很可能要保留某个用户的主目录及其下面重要的数据(当要连同主目录一同删除时,需要对用户目录下的重要内容进行备份,以避免不必要的损失)


命令语法

    userdel [选项] [用户名]


选项:

    -r:在删除用户时,把用户的主目录和本地邮件存储的目录或文件一起删除

    -f:强制删除用户账户

     

示例:

删除wang的用户账户,并保留wang用户主目录及其内容

[root@localhost ~]# userdel wang        #删除用户,不删除用户家目录

[root@localhost ~]# cat /etc/passwd | grep wang  

[root@localhost ~]# ls /home/

centos cyh  wang  xiaoming


   [root@localhost ~]# userdel -r hh        #删除用户,并删除用户家目录

   [root@localhost ~]# getent passwd hh

   [root@localhost ~]# ls /home/hh

   ls: cannot access /home/hh: No such file or directory

    

4、用户账号默认值设定

 

   显示或更改默认设置:

useradd -D    

useradd -D -s SHELL

useradd -D -b BASE_DIR

useradd -D -g GROUP


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

    # useradd defaults file

    GROUP=100

    HOME=/home

    INACTIVE=-1

    EXPIRE=

    SHELL=/bin/bash

    SKEL=/etc/skel

    CREATE_MAIL_SPOOL=yes

 

    [root@localhost ~]# useradd -D -s /bin/csh        #修改用户默认登录shell

    [root@localhost ~]# useradd -D -b /testdir        #修改用户的主目录

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

    # useradd defaults file

    GROUP=100

    HOME=/testdir

    INACTIVE=-1

    EXPIRE=

    SHELL=/bin/csh

    SKEL=/etc/skel

    CREATE_MAIL_SPOOL=yes


    [root@localhost ~]# useradd -D        #显示修改的默认值

    GROUP=100

    HOME=/testdir

    INACTIVE=-1

    EXPIRE=

    SHELL=/bin/csh

    SKEL=/etc/skel

    CREATE_MAIL_SPOOL=yes