- 用户的管理(增加、删除、修改和切换)
- 用户组的管理
- 用户和组的配置文件
/etc/shadow
、/etc/passwd
、/etc/group
- 记录用户历史操作命令
history
如要下载笔记和代码请到我的github。
- Linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求;
- 系统管理员的非常重要的工作之一是管理用户,包括:
- 添加和删除用户;
- 分配用户主目录;
- 限制用户权限。
用户与用户组基础
- Linux识别多用户的流程:
- 用户提供用户和密码,经过验证后登录到系统;
- Linux为每一个用户启动一个进程,然后由这个进程接受用户的各种请求;
- 建立用户时,需要限定其权限(root用户拥有所有权限
sudo -s
),如不能修改配置文件,不能查看其他用户目录等;
- 被划分为一个用户组的用户默认拥有用户组权限。
用户和组的添加useradd
、groupadd
useradd
:创建新用户;
- 默认情况下,不带
-m
参数的useradd
命令不为新用户建立主目录,此时用户可以登录到系统Shell,但不能登录到图形界面;
-g
:参数用于指定用户所属的组,不带-g
参数时默认为新用户创建同名用户组,然后将新用户归入该组;
-s
:指定用户登录后使用的Shell(目录),否则默认使用sh
;
- 创建流程:(1)先创建用户名
useradd username
;(2)创建密码passwd username
。
groupadd
:增加用户组,groupadd groupname
。记录用户操作history
- Shell会记录用户的每一条命令。
history
:列出所有使用过的命令并加以编号;
history
命令只在bash中适用;
- 历史命令记录被存在用户主目录下的
.bash_history
中,该文件默认可以存储1000条命令记录;
history <num>
:列出最近次输入的命令;
history
列出当前用户的命令历史,查看其他用户命令应到其主目录的.bash_history
查看。passwd和shadow文件
- Linux中做的一切基本配置最终都会反映到配置文件,包括用户管理。
/etc/passwd
:登记所有用户信息;
/etc/shadow
:保存用户的登录密码(加密);
- 直接修改配置文件也可以实现用户管理。
删除用户userdel
userdel
:用于删除用户帐号;
- 默认情况下,不删除用户主目录;
-r
:删除用户帐号,同时删除用户主目录;管理用户帐号usermod
usermod
常用选项及含义:
选 项 |
含 义 |
-d |
修改用户主目录 |
-e |
修改帐号的有效期限(MM/DD/YY) |
-g |
修改用户所属的组 |
-l |
修改用户帐号名称 |
-s |
修改用户登录后所使用的shell |
- 同样可以通过修改配置文件
/etc/passwd
、/etc/shadow
和/etc/group
来修改用户信息。查看用户信息id
id
:查看用户信息;
- 以用户名作参数,查看用户的UID、GID及所属组;
- 不带参数,则显示当前登录用户的信息。
用户间切换su
- ubuntu使用
sudo -s
或/bin/su
(绝对路径更为安全)来获得root权限。
su username
:用于切换用户。受限的特权sudo
- root权限是不可分隔的,其他用户要获取某个特权时采用
sudo
命令;
- 使用流程:
sudo
会首先要求用户输入用户自己的口令;
- 用户在在一段时间内(5分钟)没有再次使用
sudo
,就必须再次输入口令。
/etc/sudoers
指定用户可以执行的特权命令;
root ALL=(ALL) ALL
指定root用户可以使用sudo
在任何机器上(1st ALL)以任何用户身份(2nd ALL)执行任何命令(3rd),无括号时以root身份执行;
%admin
:替代所有属于admin组的用户,Ubuntu安装时创建的用户自动加入admin
组。
sudoer
的每行包含下面内容:
- 该权限适合的用户;
- 这一行配置在哪些主机上适用;
- 该用户可以运行的命令;
- 该命令以那个用户身份执行。
sudo -u
可以以其他用户身份执行命令。
visudo
:修改sudoers文件时使用的命令。/etc/passwd文件
- 早期所有信息都在
/etc/passwd
中,后来出于安全考虑,加密口令转移到/etc/shadow
。
/etc/passwd
中每一行代表一个用户,每一行由7个字段组成,使用冒号分隔;
- 登录名;
- 口令占位符;
- 用户ID(UID);
- 默认组ID号(GID);
- 用户私人信息;
- 用户主目录;
- 登录shell。
- 口令占位符代表算法加密,且口令放置在
/etc/shadow
中。
- Linux上使用最广泛的算法是MD5,MD5加密后长度是一个固定值(34个字符)。加密过程中,MD5算法会随机加入称作”salt”的数据,使一个口令可以对应多个不同的加密后形式。
- 常用加密算法通过前缀识别;
- MD5算法以”$1$”开头;
- Blowfish算法以“$2a$”开头。
- UID号:用于唯一标识系统中的用户。
- 是一个32位无符号整数;
- root用户的UID为0。
- 虚拟用户(bin/daemon)被分配到比较小的UID号,通常安排在
passwd
文件的开头;
- 真实用户的UID号一般从比较大的数开始,这样可以为虚拟用户提供足够的余地(本机从1000开始)。
- GID号:指定用户登录时默认所在的组;
- 一个32位整数;
- root组的GID号为0;
- 在
/etc/group
中定义。/etc/shadow文件
/etc/shadow
存放加密后的用户口令。
/etc/shadow
文件的每一行代表一个用户,并以冒号分隔每一个字段,每个字段的含义如下;
- 登录名;
- 加密后口令;
- 上次修改口令日期;
- 两次修改口令之间的天数(最少);
- 两次修改口令之间的天数(最多);
- 提前多少天提醒用户修改口令;
- 在口令过期多少天后禁用该用户;
- 帐号过期的日期(
usermod
);
- 保留,为空。
- 绝对日期是从1970.1.1至今的天数。
/etc/group
文件
/etc/group
文件中保存系统所有组的名称,及每个组的成员列表;
- 文件每一行表示一个组,由4个冒号分隔的字段组成,含义分别是:
- 组名;
- 组口令占位符(如果口令字段是一个
x
,表示还有一个/etc/gshadow
文件用于存放口令);
- GID号;
- 成员列表,逗号分开,不能有空格。
- 应该保证GID的唯一性。
- 实际上用户所属组是
/etc/group
和/etc/passwd
中相应组的并集。参考文献
Linux从入门到精通 刘忆智 著