【注】文章中的所有截图均为centos下实验结果,亲测命令正确= ̄ω ̄=
【参考资料】《Linux从入门到精通(第2版)》刘忆智 等编著
1、添加用户
默认情况下,不带 -m 参数的 useradd 命令不会为新用户建立主目录,会影响图形界面的使用,因为需要主目录中的一些配置文件。-g 参数用于指定用户的组,但可能不小心赋予用户某些权限。不带 -g 参数命令的默认行为就是为用户单独创建一个同名组,然后将用户添加到这个组中。 -s 参数指定用户登录所用的 Shell,如bash。默认为 sh(大多数系统都是指向BASH的符号链接)。
$ sudo groupadd workgroup ##新建用户组命名为workgroup
$ sudo useradd -g workgroup lucy ##新建用户lucy并归入workgroup组
$ sudo passwd lucy ##为lucy设置密码
$ sudo useradd -s /bin/bash mike ##新建用户mike并指定使用bash作为Shell
2、记录用户操作
history命令可以查看当前用户执行过的命令,仅在BASH中适用。这些信息被存储在用户主目录的 .bash_history 文件中,默认可以存放1000条命令,一次列出比较冗杂,可以用数字作为参数指定显示最近的几条。对于管理员,可以进入其他用户主目录,以sudo形式cat该用户的 .bash_history 文件,查看其最近操作。
$ history 10 ##列出最近使用的10条命令
$ sudo cat .bash_history ##管理员查看其他用户的操作记录
3、删除用户
$ sudo userdel mike ##删除用户
$ sudo userdel - r mike ##删除用户同时删除该用户的主目录
4、管理用户账号
usermod用于设置账号的各个属性:
-d:修改用户主目录
-e:修改有效期限
-g:修改用户所属的组
-l:修改用户账号名称
-s:修改登录后使用的Shell
$ sudo usermod -l mike -d /home/mike -e 12/31/13 john ##将用户 john 的名称修改为 mike、主目录修改为 /home/mike,有效期设置为2013年12月31日
5、查看用户信息
id命令+用户名为参数,可以查询用户的UID、GID信息(下面会讲这两个概念),不带参数的id命令显示当前登录的用户信息。
6、用户间切换
su命令不带任何参数可以将用户提升至root权限(提供root口令),使用exit退出。但Ubuntu Linux限制非常严格,默认情况下系统没有合法的root口令,不能用su提升权限,只能让使用sudo。
su命令也可以用于切换到其他用户,并需要提供该用户的口令。exit可以回到之前的账号。
$ su john ##切换到john账户
sudo命令指定了用户的某些特权,sudoers文件中配置了用户可以使用的特权命令。
7、/etc/passwd
存储用户信息,每一行代表一个用户,可以使用cat命令查看,由七个字段构成(字段间用冒号分隔),分别是 登录名、口令占位符、用户ID号(UID)、默认组ID号(GID)、用户私人信息、用户主目录、登录Shell。
加密的口令:上述文件中口令占位符为x,实际是将口令加密后存放在/etc/shadow文件中。目前应用最广泛的加密算法是MD5,无论密码多长,加密后都是34个字符。
UID号:32位无符号整数,唯一识别系统中的用户,root用户的UID号为0。虚拟用户分配一些较小的UID,真实用户从比较大的UID分配。
GID号:32位整数,用于在登录时指定其默认所在的组,root组的GID号为0,组在/etc/group文件中定义。
8、/etc/shadow
保存加密后的用户口令,每一行代表一个用户,冒号分隔,只要求用户名和口令字段非空。各个字段分别为 登录名、加密口令、上次修改口令的日期、两次修改口令之间的最少天数、最多天数、提前多少天提醒用户修改口令、口令过期后多少天禁用该账号、账号过期日期、保留字段。
在shadow中绝对日期是从始至终的天数,比较难以计数,可以用usermod -e 命令设置过期日期。
9、/etc/group
保存所有组的名称及成员列表,每一行表示一个组。有4个字段,冒号分隔,分别表示 组名、组口令占位符(很少用)、GID(应当唯一)、成员列表(逗号分开,不能加空格)。