您的位置:首页 > 运维架构 > Linux

Linux中用户与口令的管理

2017-07-29 20:14 337 查看

Linux中用户与口令的管理

由于Linux系统中root用户具有最高的权限,可以对系统中所有配置和数据进行操作,包括大名鼎鼎的“删根”,因此,不可能每一个需要访问linux系统的用户都能够使用root账户登录。针对不同的用户,我们需要创建并管理不同的账户,以达到安全操作linux和满足用户需求的目的。

Linux账户的属性主要包括账户名、口令、账户所属的群组,因此对账户的管理也主要包括以下三个方面:

* 账户的管理

* 口令的管理

* 群组的管理

本篇只对前两点做简单讨论。

1 账户的管理

Linux系统的账户分为系统账户和普通用户账户,每个账户都有一个用户编号(UID:User ID)与之对应。因此一般而言,用户编号具有唯一性。通常系统用户对守护进程获取资源进行权限分配,在CentOS 7中,系统用户的UID范围为0-999;普通用户则用于提供交互式登录,在CentOS 7中,普通用户的UID范围为1000以上(含1000)

1.1 新建账户

useradd
命令用于创建账户,其一般格式为:
useradd [option] AcconutName


option
是运行
useradd
命令时为实现特定功能所采用的选项。如果不使用,新建的账户将采用系统默认配置,包括UID、bash、home等。以新建账户zhangsir为例:

# 代码 1-1 #
[root@Centos7T ~]#useradd zhangsir
[root@Centos7T ~]#egrep zhangsir /etc/passwd
zhangsir:x:1001:1001::/home/zhangsir:/bin/bash
[root@Centos7T ~]#cd /home/
[root@Centos7T home]#ls
geoffrey  zhangsir


使用
useradd zhangsir
新建账户之后,新账户基本信息就会存储在
/etc/passwd
文件中,我们使用
egrep
命令查看相应条目。在
/etc/passwd
中存储账户基本信息的格式如下:

账户名:密码:UID:GID:账户描述:家目录:Shell。其中由于密码另有文件存储,现在都用x替代。

从上述代码可以看出,新建账户zhangsir时,系统默认给账户分给了1001的UID,指定并创建了家目录
/home/zhangsir
,指定了账户登录时使用的默认shell:
/bin/bash
。另外,系统也创建了一个与账户同名私有组zhangsir。

我们可以使用不同的
option
来创建满足不同需求的账户。常用
option
的用法如下:

-c  账户说明
-d  指定家目录路径,需使用绝对路径
-e  后接日期,格式YYYY-MM-DD,指定账户失效日期
-g  设定新账户的主组为已存在的GID/组名(GID:Group ID)
-G  设定新账户的附加组为已存在的GID/组名
-M  强制!不创建家目录(默认家目录路径信息还是会写入`/etc/passwd`)
-r  创建系统账户,CentOS 7会自动分配小于1000的UID,默认不创建家目录
-S  指定Shell
-u  指定UID,需唯一,配合-o不检查单一性


下面以两个例子对部分选项具体用法作出说明:

# 代码1-2 #
# 创建系统账户mage,指定shell为/sbin/nologin,指定主组为root,指定UID为500 #
[root@Centos7T ~]#useradd -r -s /sbin/nologin -u 500 -g root mage
[root@Centos7T ~]#egrep mage /etc/passwd
mage:x:500:0::/home/mage:/sbin/nologin
[root@Centos7T ~]#ls /home/
geoffrey  zhangsir


# 代码1-3 #
# 创建普通用户账户zhangsir1,指定shell为/bin/tcsh,用户组为users,家目录为 #
# /home/users/zhangsir1,附加组为zhangsir #
[root@Centos7T home]#useradd -d /home/users/zhangsir1 -g users -G zhangsir -s /bin/tcsh zhangsir1
[root@Centos7T home]#egrep zhangsir1 /etc/passwd /etc/group
/etc/passwd:zhangsir1:x:1002:100::/home/users/zhangsir1:/bin/tcsh
/etc/group:zhangsir:x:1001:zhangsir1
[root@Centos7T home]#ls users/
zhangsir1


1.2 管理账户

管理账户是指针对已存在的账户修改相应的属性信息,例如shell、家目录、主组、附加组等。

usermod
命令用于修改账户属性,其一般格式为:
usermod [option] AcconutName


常用
option
包括-c、 -d、 -m、 -g、 -G,、-s、-u等,其具体用法可参考与
useradd [option] AcconutName
option
的用法。另外还有以下选项需要注意:

-l 修改账户名
-L 锁定账户
-U 解锁账户
-d 指定新的家目录。新家目录不会自动创建,若要创建并移动原家目录数据,同时使用-m选项


下面以两个例子对部分选项具体用法作出说明:

# 代码1-4 #
# 修改账户zhangsir1的用户名为zhang,并修改shell为/bin/bash,修改家目录为/home/zhang #
[root@Centos7T home]#egrep zhangsir1 /etc/passwd /etc/group
/etc/passwd:zhangsir1:x:1002:100::/home/users/zhangsir1:/bin/tcsh
/etc/group:zhangsir:x:1001:zhangsir1
[root@Centos7T home]#usermod -l zhang -s /bin/bash -d /home/zhang -m zhangsir1
[root@Centos7T home]#egrep zhang /etc/passwd /etc/group
/etc/passwd:zhang:x:1002:100::/home/zhang:/bin/bash
/etc/group:zhangsir:x:1001:zhang
[root@Centos7T home]#ls -a /home/zhang/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla


# 代码1-5 #
# 修改账户zhang的主组为zhangsir,附加组为users #
[root@Centos7T home]#egrep zhang /etc/passwd /etc/group
/etc/passwd:zhang:x:1002:100::/home/zhang:/bin/bash
/etc/group:zhangsir:x:1001:zhang
[root@Centos7T home]#usermod -g zhangsir -G users zhang
[root@Centos7T home]#egrep zhang /etc/passwd /etc/group
/etc/passwd:zhang:x:1002:1001::/home/zhang:/bin/bash
/etc/group:users:x:100:zhang
/etc/group:zhangsir:x:1001:


1.3 删除账户

为了节省系统资源以及安全性,针对不再使用的账户我们需要将其删除。
userdel
命令用于修改账户属性,其一般格式为:
userdel [option] AcconutName
userdel
常用选项如下:

-f 强制删除正在登陆的账户
-r 删除用户家目录及邮件池


# 代码1-6 #
# 删除账户zhang和zhangsir,删除zhangsir使用-r选项,同时观察两个账户家目录和账户配置文件的变化 #
[root@Centos7T users]#ls -a /home/zhang /home/zhangsir
/home/zhang:
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
/home/zhangsir:
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
[root@Centos7T users]#egrep zhang /etc/passwd /etc/group
/etc/passwd:zhangsir:x:1001:1001::/home/zhangsir:/bin/bash
/etc/passwd:zhang:x:1002:1001::/home/zhang:/bin/bash
/etc/group:users:x:100:zhang
/etc/group:zhangsir:x:1001:
[root@Centos7T users]#userdel zhang
[root@Centos7T users]#ls -a /home/zhang
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
[root@Centos7T users]#egrep zhang /etc/passwd /etc/group
/etc/passwd:zhangsir:x:1001:1001::/home/zhangsir:/bin/bash
/etc/group:zhangsir:x:1001:
[root@Centos7T users]#userdel -r zhangsir
[root@Centos7T users]#ls -a /home/zhangsir
ls: cannot access /home/zhangsir: No such file or directory
[root@Centos7T users]#egrep zhangsir /etc/passwd /etc/group


由此可见在,删除账户不使用-r选项时,用户的家目录会保留。由于账户家目录里面可能存在重要文件,因此不使用-r选项也相对来说更加安全。

2 口令管理

2.1
/etc/shadow
文件

账户的口令信息保存在
/etc/shadow
文件中。以root账户为例,查看其在采用
/etc/shadow
文件中的信息

# 代码2-1 #
[root@Centos7T users]#egrep root /etc/shadow
root:$6$RMbH0dFS$x5.xVGoN…………i8lHF/mVVlQ5s7WW2u0:17368:0:99999:7:::


root账户存储在
/etc/shadow
中的条目被“:”分隔成9位信息栏,格式如下:

namp:pwdp:lstchg:min:max:warn:inact:expire:flag


每个栏位代表的含义如下:

namp    用户登录名
pwdp    加密密码
lstchg  上次修改密码日期
min 允许修改密码最短时间(天)
max 必须修改密码最长时间(天)
warn    密码过期前提醒用户修改密码的时间
inact   密码过期后账户锁定的时间
expire  直接指定账户有效期
flag    预留


使用
useradd
命令新建账户,该账户的口令将默认为空且处于锁定状态而无法登录。观察此时账户zhang在系统配置文件中的信息:

# 代码2-2 #
[root@Centos7T users]#useradd zhang
root@Centos7T users]#egrep zhang /etc/passwd /etc/shadow
/etc/passwd:zhang:x:1001:1001::/home/zhang:/bin/bash
/etc/shadow:zhang:!!:17376:0:99999:7:::


账户zhang的加密密码栏是!!,表示密码为空,且账户被锁定,用户无法使用该账户登录系统。

2.2 passwd命令用法

新建的账户zhang处于无密码锁定状态,我们可以使用管理账户密码的命令
passwd
解决这一问题,该命令的一般格式为
passwd [option] AccountName
passwd
常用选项如下:

-l  锁定账户密码
-u  解锁账户密码
-e  强制账户下次登录时修改密码
-f  强制操作
-x  必须修改密码最长时间(数据将会写入/etc/shadow第5栏)
-n  允许修改密码最短时间(数据将会写入/etc/shadow第4栏)
-w  密码过期前提醒用户修改密码的时间(数据将会写入/etc/shadow第6栏)
-i  密码过期后账户锁定的时间(数据将会写入/etc/shadow第7栏)
-S  显示账户密码状态
--stdin 从标准输入中读取密码并写入账户


下面以两个例子对部分选项具体用法作出说明:

修改密码
passwd AccountName


使用
passwd
修改指定账户的密码不需要使用
option
,后面直接跟需要修改密码的账户名

# 代码2-3 #
# 对前面创建的账户`zhang`用设置密码#
[root@Centos7T home]#passwd zhang
Changing password for user zhang.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@Centos7T home]#egrep zhang /etc/passwd /etc/shadow
/etc/passwd:zhang:x:1001:1001::/home/zhang:/bin/bash
/etc/shadow:zhang:$6$/wz5lvLk$7MxGB/4PWEQLqk……jLHh7T1:17376:0:99999:7:::


若果设置的密码少于8位或者太过简单,还会有相应提示
BAD PASSWORD: The password is shorter than 8 characters


另外,我们可以使用命令
passwd -e AccountName
设置让用户下次登录时必须修改账户密码。

强制用户更改密码
passwd -e AccountName


# 代码2-4 #
# 强制用户下次登录账户zhang时必须修改密码 #
[root@Centos7T home]#passwd -e zhang
Expiring password for user zhang.
passwd: Success


此时用户zhang的登录界面将会变成如下图所示:



设定密码时间策略
passwd [-n -x -w -i] AccountName


# 代码2-5 #
# 设定账户zhang的密码每次更改密码7天内禁止修改密码,90天内必须修改密码 #
# 并提前10天给出通知,密码过期5天后禁止登录系统 #
[root@Centos7T home]#egrep zhang /etc/shadow
zhang:$6$DDe0zkMx$$6$DDe0zkMx$……cURW2nkeCHgUaqlsAc1:17376:0:99999:7:::
[root@Centos7T home]#passwd -n 7 -x 90 -w 10 -i 5 zhang
Adjusting aging data for user zhang.
passwd: Success
[root@Centos7T home]#egrep zhang /etc/shadow
zhang:$6$DDe0zkMx$$6$DDe0zkMx$……cURW2nkeCHgUaqlsAc1:17376:7:90:10:5::


锁定/解锁账户及查看账户密码状态

对于暂时不使用的账户可以使用锁定,该账户将无法登录系统,后续也可以使用解锁该账户。另外可以使用命令查看账户密码当前的处于什么状态,是否是空密码,锁定、解锁以及基本策略。

# 代码2-6 #
[root@Centos7T home]#passwd -S zhang                       #查看账户当前状态#
zhang PS 2017-07-29 7 90 10 5 (Password set, SHA512 crypt.)
[root@Centos7T home]#passwd -l zhang                       #锁定账户密码#
Locking password for user zhang.
passwd: Success
[root@Centos7T home]#passwd -S zhang
zhang LK 2017-07-29 7 90 10 5 (Password locked.)
[root@Centos7T home]#passwd -u zhang                       #解锁账户密码#
Unlocking password for user zhang.
passwd: Success
[root@Centos7T home]#passwd -S zhang
zhang PS 2017-07-29 7 90 10 5 (Password set, SHA512 crypt.)
[root@Centos7T home]#passwd -d zhang                       #移除账户密码#
Removing password for user zhang.
passwd: Success
[root@Centos7T home]#passwd -S zhang
zhang NP 2017-07-29 7 90 10 5 (Empty password.)            #账户密码为空#
[root@Centos7T home]#egrep zhang /etc/shadow
zhang::17376:7:90:10:5::


关于账户口令管理及
passwd
命令的使用就简单介绍到这里,更加详细的资料可以参考
man passwd
命令帮助手册。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息