用户管理
6.2 用户管理
6.2.1 添加用户
useradd 用于创建用户,在 Linux 里,adduser 也是用于创建用户,adduser 是软链接指向useradd,所以两者效果是一样的。
在默认创建用户时,会自动指定 UID、GID、默认的 UID 和 GID 都 1000 以上的,用户家目录、Shell 类型,在一般情况下创建用户 UID 和 GID 都是相同的,如果在特殊情况下造成不相同,在权限分配时,可能会出错,默密码为空,/etc/shadow 文件中的密码位是两个!!号,没有密码不能直接登录系统,只能让其他用户在登录系统以后切换到该用户,创建用户时不指定其附加组时,默认会创建一个与用户相同名的组,这些默认属性是根据/etc/default/useradd 文件中所定义的创建用户默认。
命令使用格式:useradd [选项] 用户名称
useradd -d -u “UID” -g "初始组" -G "附加组" -s "登陆的shell” 用户
常用选项:
-d:指定用户家目录路径, 可以指定用户家目录。
-M:不创建用户的主目录。
-g:设置用户初始组的名称或数字 ID,该组必须是存在的,如果没有设置该选项,useradd
会 根 据 /etc/login.defs 文 件 中 的 USERGROUPS_ENAB 环 境 变 量 迚 行 设 置 。 默 认
USERGROUPS_ENAB yes 会用和用户名相同的名字创建群组,GID 等于 UID。
-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅
仅加入初始组。(一个用户只允许有一个主组,可以有多个附属组)。
-s:用户默认登录 shell 的路径;启动过程结束后,默认启动的登录 shell 在此处设定;请确
保使用的 shell 已经安装,默认是 bash。有时候需要禁止某些用户执行登录动作,例如用来执行系统
服务的用户。将 Shell 设置成 /sbin/nologin 就可以禁止用户登录。
例 6.1:添加一个名为 harry 的用户,并使用 bash 作为登录的 Shell。
# useradd harry #如果使用-s 指定 Shell 时,默认为 bash。
# tail -1 /etc/passwd #查看/etc/passwd 最后一行内容。
harry:x:1001:1001::/home/harry:/bin/bash
说明:此命令会自动创建 harry 组,并成为 harry 用户的默认主组,同时默认的登录 Shell 是 bash
用户帐户的全部信息被保存在/etc/passwd 文件,这个文件以如下格式保存了每一个系统帐户的所有
信息 (字段以“:”分割),每段含义如图 6-2 所示。
harry:x:1001:1001::/home/harry:/bin/bash
图 6-2 用户信息含义分解图
⑴ harry:用户名
⑵ x:密码占位符
⑶ 1001:用户的 UID,它都是用数字来表示的
⑷ 1001:用户所属组的 GID,它都是用数字来表示的
⑸ 用户描述信息:对用户的功能或其它来迚行一个简要的描述
⑹ /home/harry:用户主目录(shell 提示符中“~”代表的那个)
⑺ /bin/bash:用户登录系统后使用的 Shell
1. 查看系统中,支持哪些 Shell:
# cat /etc/shells #查看系统中,支持哪些 Shell。
/bin/sh
/bin/bash
/sbin/nologin
/bin/csh
2. 指定用户 UID:useradd -u 用户ID 用户名
# useradd -u 1100 oracle #创建 oracle 并指定 UID 为 1100。
# id oracle #使用 id 命令查看 oracle 用户信息。
uid=1100(oracle) gid=1100(oracle) 组=1100(oracle)
# tail -1 /etc/passwd #查看/etc/passwd 最后一行内容。
oracle:x:1100:1100::/home/oracle:/bin/bash
# ls /home/oracle/ -a #查看用户家目录文件,通常都是隐藏文件。
. .. .bash_logout .bash_profile .bashrc .mozilla
3. 指定用户主目录: useradd -d 家目录 用户名
# useradd -d /opt/mk1 mk1 #创建用户并指定其家目录/opt/mk1。
# tail -1 /etc/passwd #查看/etc/passwd 最后一行内容。
mk1:x:1102:1102::/opt/mk1:/bin/bash
4. 指定用户的主组 :useradd -g 主组名 用户名
例 6.2:创建用户 xuegod2 用户并指定其主组为 xuegod 。
[root@xuegod63 ~]# useradd xuegod #创建 xuegod 用户。
[root@xuegod63 ~]# id xuegod #使用 id 命令查看 xuegod 用户信息如下。
uid=1103(xuegod) gid=1103(xuegod) 组=1103(xuegod)
# useradd -g xuegod xuegod2 #创建用户 xuegod2 用户并指定其
主组为 xuegod 。
[root@xuegod63 ~]# id xuegod2 #经查看 xuegod2 用户信息,组=1103(xuegod)。
uid=1104(xuegod2) gid=1103(xuegod) 组=1103(xuegod)
5. 指定用户的附属组: useradd -G 附属组1,附属组2,附属组3 用户名
我们也可以把这个附属组称为补充组,用户可以有 0 个或多个附加组的成员。
如果一个组有多个成员,我们是可以在/etc/group 文件中最后一个字段看到的。
6. 创建 xuegod3 用户,并指出多个组
[root@xuegod63 ~]# useradd -G xuegod,harry,root xuegod3
[root@xuegod63 ~]# id xuegod3 #输出结果如图 6-3 所示。
uid=1105(xuegod3) gid=1105(xuegod3) 组=1105(xuegod3),0(root),1001(harry),1103(xuegod)
图 6-3 查看 xuegod3 用户信息
[root@xuegod63 ~]# vim /etc/group #在文件的最后可看到 xuegod63 用户组,如图 6-4 所示。
图 6-4 /etc/group
7. 创建用户的另外一个命令:adduser
[root@xuegod63 ~]# adduser xuegod4 #创建 xuegod4 用户。
[root@xuegod63 ~]# id xuegod4
uid=1106(xuegod4) gid=1106(xuegod4) 组=1106(xuegod4)
[root@xuegod63 ~]# which adduser #查看 adduser 所在的位置。
/usr/sbin/adduser
[root@xuegod63 ~]# ll /usr/sbin/adduser #以长格式查看 adduser 文件。
lrwxrwxrwx. 1 root root 7 9 月 19 2017 /usr/sbin/adduser -> useradd
注: adduser 是 useradd 的软链接。
8. 删除用户。
usage: userdel [options] LOGIN
选项:-r 删除的时候,会同时删除用户的家目录和/var/mail 下的目录。
例:
[root@xuegod63 ~]# userdel xuegod3 #删除 xuegod3 用户。
[root@xuegod63 ~]# ls /home #xuegod3 用户家目录仍然存在。
cjk dir4 harry xuegod xuegod3
[root@xuegod63 ~]# userdel harry -r #删除 herry 用户,但使用-r 选项。
[root@xuegod63 ~]# ls /home #同时把用户的家目录也删除了。
cjk dir4 xuegod xuegod3
9. 控制添加用户规则文件。
两个文件:/etc/default/useradd 和 /etc/login.defs
/etc/login.defs
使用 egrep 命令过虑 login.defs 中的空白行和注释行(#开头的行),该文件定义创建用户时,用户属性相关的默认值,当在创建用户时,有明确指定其值时,则不需要从此文件中获取默认值。
# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000 #用户 ID 开始的数字。
UID_MAX 60000 #用户 ID 结束的数字。
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000 #组 ID 结束的数字。
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes #是否为用户建立 home 目录。
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 #shadow 文件的加密算法。
/etc/default/useradd 该文件用于指定默认创建用户的属性,如果修改默认创建用户属性,可以修改此文件的相对应内容即可。
# cat /etc/default/useradd
/etc/default/useradd 文件中的内容如下:
GROUP=100 #表示可以创建普通组。users 组 ID 为 100 。如果不指定此项,或者把users 这一项组删除了,当再创建用户时,将会提示:useradd: group '100' does not exist 。
HOME=/home #哪个目录作为用户主目录存放目录。如果你不想让用户家目录在/home下,可以修改这个地方。
INACTIVE=-1 #是否启用帐号过期。passwd 文件中第7栏。即:密码过期后是否会失效的设定值 。INACTIVE:无效。-1 表示启用。
EXPIRE= #帐号终止日期 shadow 中第 8 栏。账号失效的日期 就是 shadow 内的第八字段,你可以直接设定账号在哪个日期后就直接失效,而不理会密码的问题。 通常不会设定此项目,但如果是付费的会员制系统,或许这个字段可以设定。
SHELL=/bin/bash #默认 shell 使用哪个。
SKEL=/etc/skel #模板目录。
CREATE_MAIL_SPOOL=yes #是否创建邮箱文件。