Linux用户管理
用户账户定义
用户帐户用于在可以运行命令的不同入员和程序之间提供安全界限,用户使用用户名标识自己并增加操作的便利性。系统通过分配的唯一标识号(用户ID或UID)来区分不同的用户账户。我们在使用用户时,通常会为其分配一个密码。
用户帐户有三种主要类型:超级用户、系统用户和普通用户。
超级用户帐户:
用于管理系统,超级用户对系统具有完全访问权限。
系统的系统用户:
帐户供提供支持服务进程使用,这些进程(或守护进程)通常不需要以超级用户身份运行;系统会为它们分配非特权帐户,允许它们确保其文件和其他资源不受彼此以及系统上普通用户的影响,用户无法使用系统用户帐户以交互方式登录。
普通用户:
大多数用户都有用于处理日常工作的普通用户帐户,与系统用户一样,普通用户对系统具有限的访问权限。
用户ID区分:
超级用户的名称为root,其帐户UID为0;
系统自动创建的用户UID范围从1-200;
安装第三方应用程序的UID范围从201-999;
我们手动创建的普通用户UID默认从1000开始。
用户账户文件
passwd文化是用于定义系统的用户账号,该文件位于/etc/目录下。记录了每个用户的一些基本属性,并且对所有用户可读,每一行记录对应一个用户;它分为6个以冒号分隔的字段,每行记录通过冒号进行分隔;由于所有用户都对passwd有读权限,所以该文件只定义账号,而不保存口令。
查看passwd文件权限
ll /etc/passwd
查看passwd文件内容帮助说明
man 5 passwd
passwd文件格式说明
格式:
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
name:password:UID:GID:GECOS:directory:shell
- name:用户名,在系统中是唯一的;
- password:当前用户密码,此字段存放加密口令(密码存放在/etc/shadow);
- UID(用户标识码):系统内部用来表示用户;
GID(组标识码):该用户的私有组,系统内部用来标识用户属性; - GECOS(用户的相关信息):备注信息(没有则为空),例如用户全名等等;
- directory:用户的家目录,用户登录系统后所进入的目录;
- shell:用户工作的环境,负责解释用户所输入的命令让系统得以了解用户要做什么事情,默认为/bin/bash(/sbin/nologin不能交互式登录);
存放用户账户密码文件
shadow文件位于”/etc“目录下,用于存放用户口令等重要信息,因为passwd文件对所有用户是可读的,为安全起见把密码从passwd中分离出来放入这个单独的文件,该文件置于root用户拥有读权限,从而保证密码安全性。
查看shadow文件权限
ll /etc/shadow
查看shadow文件内容帮助说明
man 5 shadow
shadow文件格式说明
格式:
root:$6$wBXgRd8S$6z7cT7HX7/I8lAknoIJhPAwdcSAZPbZID35ui5yPllzEhSuZ9blqBcJe8NzCKZ/jDhJyP6GFHRy2xTjy.5ZA3/:19921:0:99
bin:*:19295:0:99999:7:::
用户名:加密密码:最后一次修改时间:密码最小有效期:密码最大有效期:密码到期前的警告天数:密码过期后的宽限天数:账号失效日期:保留字段
- 用户名:在系统中是唯一的;
- 加密密码:对文件进行加密;
- $6:hash散列算法sha512位;
- $wBXgRd8S:表示salt,目的是为了避免多个不同用户采用相同密码散列相处相同的值;
- $6z7cT7HX7/I8lAknoIJhPAwdcSAZPbZID35ui5yPllzEhSuZ9blqBcJe8NzCKZ/jDhJyP6GFHRy2xTjy.5ZA3/:表示密码加密散列值;
- 最后一次修改时间:表示用户最后一次修改密码的时间,以从1970年1月1日开始的秒数表示。
- 密码最小有效期:密码在多少天内不能被更改(0代表随时可以更改密码)。
- 密码最大有效期:密码在多少天后必须更改(99999代表密码不会过期)。
- 密码到期前的警告天数:在密码到期前的多少天开始警告用户。
- 密码过期后的宽限天数:密码过期后,用户还可以登录的天数。
- 账号失效日期:账号在多少天后失效,以从1970年1月1日开始的秒数表示。如果此字段为空,则表示账号永不过期。
- 保留字段:未使用,通常为空
/etc/shadow文件的安全性
- /etc/shadow文件的安全性是其最重要的特性之一。由于它存储了用户的密码信息,因此必须采取严格的安全措施来保护它。在Linux系统中,只有root用户拥有读取/etc/shadow文件的权限,其他用户无法直接查看或修改该文件。这确保了即使系统被攻击,攻击者也无法轻易获取用户的密码信息。
- 此外,Linux系统还采用了其他安全措施来保护/etc/shadow文件。例如,当对/etc/shadow文件进行更改时,系统会创建一个备份文件(通常是/etc/shadow-),以防在修改过程中出现意外。如果修改过程中出现错误,可以通过恢复备份文件来解决问题。
创建用户账号—useradd命令
功能描述:用于添加用户账号。在使用useradd命令添加账号后需要用passwd命令色号在用户口令,才可以使用此账号登陆,否则此账号被禁止登陆;
格式:
useradd [常用参数] <用户名>
常用参数:
-u uid 指定新用户的uid,默认使用当前普通用户最大UID加1;
-g group 指定新用户所在的组,该组必须存在(创建用户时,系统会随手创建一个和用户同名的组,作为私有组);
-G group 指定新用户的附加组;
-d dir 指定新用户的家目录;
-s shell 指定新用户使用的shell,默认为/bin/bash;
-c comment 添加新用户的附加信息;
-e 日期 修改用户的过期时间,格式为"YYYY-MM-DD";
-f 账号失效日期,当值为0时账号被停权(值为-1时则关闭此功能,预设值为-1);
-r 创建系统用户;
注意:在/var/spool/mail目录下有自己的邮件池文件
范例:
创建普通用户test123
useradd test123
创建test456用户,指定uid为1600,非交互式shell,和管理员root同组
useradd -u 1600 -s /bin/nologin -G root test456
创建系统用户sysuser ,非交互式shell
useradd -r sysuser -s /sbin/nologin
查看用户相关ID信息
功能描述:通过命令查看一个用户的UID和GID
格式:
id [常用参数] 用户名
常用参数:
-g #只显示用户的组的GID
-G #只显示用户的附属组的GID
-u #只显示UID
范例:
查看test用户的id信息
id test
设置用户口令
功能描述:用于设置指定用户账号的口令,如该账号口令存在贼覆盖现有口令;只有root用户可以指定用户账号设置口令。
格式:
- 交互式方式:passwd 用户名
- 通过echo命令结合标准输入方式进行设置
范例:
交互式方式设置test普通用户口令
passwd test
标准输入方式设置test普通用户口令
echo "redhat"|passwd --stdin test
切换用户身份
通常会使用 su – 用户名 的方式进行用户身份的不同切换,除root外,需要输入该使用者的密码。
范例:
变更账号为test并改变工作目录至test的家目录
su - test
Password: 输入用户密码
变更账号为test并不改变工作目录
su test
Password: 输入用户密码
修改用户账号—usermod命令
功能描述:添加用户账号后,使用usermod命令添加账号后修改账号相关信息。
格式:
usermod [常用参数] <用户名>
常用参数:
-d 目录绝对路径 #修改用户的主目录;
注意:通常使用usermod命令迁移到家目录时需要配合-m参数一起使用
-m #把源家目录中的文件移动到新的家目录中;
-e 日期 #修改用户的过期时间,格式为“YYYY-MM-DD”;
-g 组名 #修改用户的私有组;
-u UID #修改用户的UID;
-s shell #修改用户的登陆shell;
-G 组名 #修改用户的附加组;
注意:通常使用usermod命令是追加附加组,所有使用-G参数时需要配合-a参数一起使用;
-a #追加操作;
范例:
将test用户家目录更改到/opt/testhome
usermod -d /opt/testhome -m test
更改test用户的uid为1888
usermod -u 1888 test
更改test用户的私有组为root
usermod -g root test
添加test用户的附加组wheel
usermod -aG wheel test
删除用户
功能描述:userdel命令用于删除指定的用户账号
格式:
userdel -r 用户名
常用参数:
-r #同时删除家目录(包括其中的文件)及用户的邮件池文件
范例:
删除用户user1同事删除家目录(包括其中的文件)及用户的邮件池文件
userdel -r user1
搜索不属于任何用户和组的文件并删除
find / -nouser -o -nogroup -exec rm -rf {} \;
配置密码过期时间
chage命令是用来修改账号和密码的有效期限,这个信息有系统用于确定用户合适必须更改其密码
格式:
chage [参数] [用户名]
常用参数:
-l #显示用户密码相关信息
-M #密码保存有效的最大天数
范例:
列出test用户密码过期的设置
chage -l test
设置test用户的密码最大有效期为20天
chage -M 20 test