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命令帮助手册。
相关文章推荐
- Linux用户管理:设置用户口令的使用期限
- linux用户口令的管理
- Linux用户口令管理(读书笔记)
- linux用户管理,linux用户口令管理,linux用户组管理,linux用户权限管理详解
- [转]Linux用户口令的管理
- Windows搭建ngrok服务器、Linux搭建ngrok服务器、支持用户管理
- linux用户管理命令
- Linux系统管理——用户管理
- Linux用户管理
- linux用户(user)和用户组(group)管理概述
- linux用户管理
- Linux中的用户管理
- linux笔记四-------用户和组的管理
- Linux故障分析、用户管理
- linux用户和组管理命令
- linux用户&用户组管理
- 如何在 Linux 系统中通过用户组来管理用户
- Linux学习笔记:用户管理和权限控制
- Linux系统管理——用户权限管理
- Linux 用户和用户组管理