Linux用户账号管理

帐号管理

Linux 用户管理文件主要涉及 /etc/passwd、/etc/shadow,用户组管理在/etc/group、/etc/gshadow。

每个用户都有一个 UID 和 GID,Linux登录时不会直接用用户名和密码直接对比,而是先找到UID与用户名的映射,再去对比密码。一般来说,0为 root 帐号,1~500 是系统帐号,500 以后是用户帐号。

1 /etc/passwd

这个文件名字虽然是 passwd,但是为了安全,早已不再储存用户的密码。

每行的结构如下

1
2
3
4
# 1 :2:3:4: 5 : 6 : 6
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

以第一行 root… 为例:

  1. 用户名
  2. 密码,现在都为 x,密码编码加密后储存在 /etc/shadow 里面
  3. UID
  4. GID
  5. 备注说明
  6. 用户的主文件夹
  7. 默认的 shell

2 /etc/shadow

这里主要储存这用户密码,以及密码配置。

1
2
# 1 :2 :3 :4:5 :6:7:8:9
root:dfaDasd/asd.hqo00:14126:0:99999:7:::

结构功能如下:

  1. 账户名
  2. 编码加密后的密码
  3. 最近密码变动的日期,日 时间戳
  4. 密码不可变动天数,0即随时可以改密码
  5. 密码需要重新改动的天数,即在新建或更改密码时,需要多少天重置密码
  6. 需要更改前的警告,登录时系统会在更改期限前x天提示更改密码
  7. 密码过期后的宽限日期,过期后x天重新登录仍有效,但是必须更改密码
  8. 帐号失效日期
  9. 保留字段

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 组密码失效