上一篇总结了创建新用户时的常见命令,写完后意犹未尽,干脆从配置文件的角度对这个问题再小结一下。
1 配置文件
linux下的很多文件都可以在man(5)中找到说明,如/etc/sudoers的说明可以用命令man 5 sudoers
查到
/etc/sudoers
主要用于指定用户(组)的在特定主机上特权命令。除此之外,该文件中允许设置别名。
设定的格式为:
适用的用户 权限生效的主机 = (使用的执行身份) 可以运行的命令
# Host alias specification
Host_Alias REMOTES = host1, host2, host3
# User alias specification
# Cmnd alias specification
Cmnd_Alias FILEOP = /bin/cp, /bin/rm, /bin/mv
# User privilege specification
root ALL=(ALL:ALL) ALL
noway ALL=(ALL) ALL
tom REMOTES = (john) FILEOP
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
/etc/sudoers文件中有四类别名,User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias, 分别对应设定格式中的四个字段。
/etc/passwd
passwd主要用于储存用户信息,每一行有7个字段,用冒号隔开:
登录名:口令占位符x:UID:默认组id(GID):用户私人信息:用户家目录:登录shell
UID: root用户的UID为0, 系统用户的UID比较小, 普通用户的UID从一个较大的数开始
GID: 这里指的是默认组的GID
这里对普通用户和组ID设定的默认值可以在/etc/login.defs中看到
对于默认的用户家目录和登录的shell可以在etc/default/useradd中予以设定
/etc/shadow
这个文件用于保存用户的口令信息,每一行的格式为
登录名:加密口令:上次修改密码的日期:两次修改口令之间的天数(最少):天数(最多):提前提醒天数:账户失活时间:过期的日期:保留字段
这里与时间相关的默认值可以在/etc/login.defs中查看到
/etc/gshadow
这个文件用于保存用户组的口令信息,每一行的格式为
组名:加密口令:管理者:组成员(用逗号隔开)
/etc/group
主要用于储存用户组信息
组名:密码占位符:GID:组成员(用逗号隔开)
/etc/shells
这个文件记录了系统中合法的shell,这里包含的是shell的绝对路径名
/etc/skel/
这个文件夹中包含了创建新用户家目录时预设的文件(夹),在创建用户家目录时这些文件将会被复制到用户的家目录中
/etc/login.defs
这个文件记录了用户信息的一些基本参数规范
/etc/default/useradd
这个文件记录了useradd命令的默认参数
小结:linux中一切皆文件,创建用户涉及到的配置文件有
/etc/passwd, /etc/shadow, /etc/group, /etc/default/useradd, /etc/skel/
手动添加新用户的步骤:
- /etc/group 中添加基本组的信息
- /etc/passwd中添加 登录名,UID, GID(默认与UID同,可指定已有组的id), 用户个人信息, 使用的shell
- /etc/shadow中添加加密口令,口令一般用md5加密((1)), 和密码的有效时限相关信息
- 创建用户家目录,把/etc/skel/中的内容复制到家目录中
- /etc/sudoers 设置用户(组)的sudo权限
2 命令
用户相关
useradd [option] USERNAME
基本信息:
-u 指定UID
-s 指定shell
-c 用户基本信息, 依次为:全名, 办公室, 工作电话, 家庭电话,用逗号隔开
用户家目录相关:
-m 若新用户无家目录则创建家目录, 若与-k联用则同时将/etc/skel/中的文件复制一份
-M 不创建家目录
-d 指定家目录位置
组相关:
-g 默认组GID
-G 附加组
其他:
-r 添加系统用户,选择1-999作为UID, 该用户无家目录
若要新用户无法登陆系统,则可以用useradd -s /sbin/nologin
userdel [option] USERNAME
-r 同时删除用户的家目录,慎用
usermod [option] USERNAME
-d 修改家目录,若要讲当前家目录中的内容复制到新的家目录,则要与-m联用
-e 修改账号有效期限 MM/DD/YY
-g 修改用户默认属组
-G 修改用户附加属组, 若要添加附加属组,则与-a联用
-l 修改用户登录名
-s 修改用户使用的shell
passwd [option] USERNAME
--stdin 表示通过标准输入来接收口令
-d 删除用户密码,密码清空后用户无法登陆
groupadd [option] GROUPNAME
groupadd [option] GROUPNAME
groupadd [option] GROUPNAME
这三个命令与user系列类似
除此之外,常用的命令还有id和finger,用于查看用户的账号属性信息
ch系列的就不详细说明了:
chage用于修改口令期限相关的信息 change age
chsh 修改默认shell change shell
chfn 修改用户信息 change finger