帐号管理
Linux 用户管理文件主要涉及 /etc/passwd、/etc/shadow,用户组管理在/etc/group、/etc/gshadow。
每个用户都有一个 UID 和 GID,Linux登录时不会直接用用户名和密码直接对比,而是先找到UID与用户名的映射,再去对比密码。一般来说,0为 root 帐号,1~500 是系统帐号,500 以后是用户帐号。
1 /etc/passwd
这个文件名字虽然是 passwd,但是为了安全,早已不再储存用户的密码。
每行的结构如下
|
|
以第一行 root… 为例:
- 用户名
- 密码,现在都为 x,密码编码加密后储存在 /etc/shadow 里面
- UID
- GID
- 备注说明
- 用户的主文件夹
- 默认的 shell
2 /etc/shadow
这里主要储存这用户密码,以及密码配置。
|
|
结构功能如下:
- 账户名
- 编码加密后的密码
- 最近密码变动的日期,日 时间戳
- 密码不可变动天数,0即随时可以改密码
- 密码需要重新改动的天数,即在新建或更改密码时,需要多少天重置密码
- 需要更改前的警告,登录时系统会在更改期限前x天提示更改密码
- 密码过期后的宽限日期,过期后x天重新登录仍有效,但是必须更改密码
- 帐号失效日期
- 保留字段
3 /etc/group
与 paswwd 文件类似,储存的是组的信息,但是若一个用户有多个用户组,会区分有效用户组和初始用户组。
初始用户组顾名思义,登陆时的用户组权限,有效用户组即可使用 newgrp 这个指令切换,可用 groups 这个指令查看所属几个用户组。
4 /etc/gshadow
与 shadow 文件类似,但是对于组来说,多了一个用户组管理员的概念
5 用户帐号管理指令
不能对上述几个文件之间 vim 操作,因此 Linux 封装了指令。
useradd
主要参数
- -s 指定用户登录后的shell
- -c 用户描述备注
- -G 选择加入的组
- -m 创建用户帐号时创建用户目录,此项为默认参数,默认用户目录的权限是700
- -M 不创建用户目录
添加用户的常规操作,不添加参数的缺省模版在 /etc/default/useradd 。用户主文件夹缺省模版在 /etc/skel 。密码参数参考 /etc/login.defs
passwd
创建用户后,是没有设置好密码的,也就是说新帐号会被暂时封锁,直到使用了 passwd 设置好密码才允许新帐号登录。
参数:
- –stdin 标准输入,可结合前面指令利用管道符作为密码输入
- -l Lock,在shadow 密码列前加上 ! ,即密码失效
- -u unlock
- -n 对应shadow 第4列,多久不可改动密码
- -x 对应第5列, 多久内必须修改密码
- -w 对应第6列,密码过期前的警告天数
- -i 对应第7列,密码失效时期
passwd 现在会调用 PAM 模块来校验密码
更详细的使用可用指令 chage -l 或 passwd -S
usermod
user modify, 调整已有用户帐号信息,参数和 useradd 相似
userdel
删除用户操作,一般不会删除用户目录,参数 -r 会连用户目录一起删除。
finger
非敏感用户数据参数的修改。
chsh
切换用户的shell
6 用户组管理
- groupadd 新建用户组
- groupmod 与 usermod 类似
- groupdel 删除用户组,删除前确保 GID 没有关联任意 GID
gpasswd
将用户加入用户组,设置组密码,或新建用户组管理员
不带参数默认给与 group 一个密码。
参数
- -A 设置管理员
- -M 把某个用户加入某个用户组
- -r 删除用户组密码
- -R 组密码失效