Linux用户和群组管理
基本概念
Linux安全系统的核心是用户账户。每个人能进入Linux系统的用户都会被分配一个唯一的账户,用户对系统中各种对象的访问权限取决于他们登录系统时的账户
- /etc/passwd
Linux系统使用一个专门的文件将用户的登录名匹配到对应的UID值,这个文件就是/etc/passwd文件,它包含了一些与用户有关的关键信息
~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...
root用户账户是Linux系统的管理员,固定分配给他的UID是0。Linux系统会为各种功能创建不同的账户,而这些账户并不是真的用户,叫做系统账户
/etc/passwd文件文件中的密码字段都被设置成了x,这并不是说所有用户账户都用相同的密码,而密码都被保存在另一个叫/etc/shadow的文件中,这需要特殊的程序才能访问
/etc/passwd是一个标准的文本文件,但是不建议用编辑器直接修改其内容
- /etc/shadow
/etc/shadow文件对Linux系统密码提供了更多的控制,只有root用户才能访问/etc/shadow文件,这让它比/etc/passwd安全许多
他一共有九个字段
1、与/etc/passwd文件中登录名对应字段的登录名
2、加密后的密码
3、上次修改密码后过去多少天
4、多少天后才能修改密码
5、多少天后必须修改密码
6、密码过期提前多少天通知用户
7、密码过期后多少天禁用用户账户
8、用户账户被禁用的日期
9、预留字段
- /etc/group
/etc/group文件包含了系统上用到的每个组的信息和UID一样,GID也使用相同的格式,并从500开始分配
用户与组管理
主目录:用户的起始工作目录,用户登录后有操作权限的访问目录
注释性描述:这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
登陆shell:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
- useradd
参数 | 描述 |
---|---|
-c commit | 给新用户添加备注 |
-d home_dir | 为主目录指定一个名字 |
-e expire_date | 用YYYY-MM-DD格式指定一个过期账户的日期 |
-f inactive_days | 指定这个账户密码过期后多少天这个账户被禁用 |
-g initial_geoup | 指定用户登录组的GID或组名 |
-G group | 指定用户除登陆组之外所属的一个或多个附加组 |
-k | 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录下 |
-m | 创建用户的HOME目录 |
-M | 不创建用户的HOME目录 |
-n | 创建一个与用户登录名同名的新组 |
-r | 创建系统账户 |
-p passed | 为用户账户指定默认密码 |
-s shell | 指定默认登录的shell |
-u did | 为用户指定唯一的UID |
- userdel
~$ userdel -r testuser
- 修改用户
命令 | 描述 |
---|---|
usermod | 修改用户账户的字段 |
passwd | 修改已有用户的密码 |
chpasswd | 从文件读取登录名密码对,并更新密码 |
chage | 修改密码的过期日期 |
chfn | 修改用户账户的备注信息 |
Cash | 修改用户的默认登录shell |
- 添加组
~$ groupadd 选项 用户组
- 删除组
~$ groupdel 组名
# 注意,不能使用 groupdel 命令随意删除群组。此命令仅适用于删除那些 "不是任何用户初始组" 的群组,换句话说,如果有群组还是某用户的初始群组,则无法使用 groupdel 命令成功删除。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
- 修改用户组属性
~$ groupmod 选项 用户组
选项 | 描述 |
---|---|
-g GID | 修改组 ID |
-n 新组名 | 修改组名 |
-o | 重复使用群组识别码 |
- 切换用户组
~$ newgrp 目标用户组
newgrp 指令类似 login 指令,当它是以相同的帐号,另一个群组名称,再次登入系统。newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组。欲使用 newgrp 指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则 newgrp 指令会登入该用户名称的预设群组。