Linux用户与组管理详解

在linux系统上,用户管理是基于用户名和密码的方式进行资源的分配,了解和掌握用户与组的管理是从事运维工作所必须具备的能力,也是将来从事运维行业的重要工作之一。

Linux的安全模型

安全3A

​ Linux通过三个机制来保证用户的安全:

​ Authentication:认证

​ Authorization:授权

​ Accouting|Audition:审计

安全上下文

​ Linux 安全上下文
运行中的程序:进程 (process)
以进程发起者的身份运行:
root: /bin/cat
mage: /bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份

User and Grooup

用户user

令牌: token,identity
Linux 用户:Username/UID
管理员:root, 0
普通用户:1-65535
系统用户:1-499, 1-999 (CentOS7) )
对守护进程获取资源进行权限分配
登录用户:500+, 1000+ (CentOS7) )
交互式登录

组 group:

Linux组:Groupname/GID

管理员组:root,GID=0

普通组:

​ 系统组:1-499,1-999(centos7)

​ 普通组:500+,1000+(centos7)

在创建用户不指定组的情况下,默认创建一个与该用户名相同的组作为该用户的主组

组的类别:

用户的主要组(primary group)
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户,私有组
用户的附加组(supplementary group)
一个用户可以属于零个或多个辅助组

用户和组的配置文件

  • /etc/passwd: 存用户及其属性信息( 名称、UID 、主组ID 等
  • /etc/shadow: 存放用户密码及其相关信息
  • /etc/group: 存放组及属性信息
  • /etc/gshadow: 存放组密码及其相关信息
  • /etc/default/useradd:新建账户模板信息

/etc/passwd

passwd

1
2
3
4
5
6
7
8
name:password:UID:GID:GECEO:directory:shell
1. login name : 登录用名(lpx) )
2. passwd : 密码 (x)
3. UID号 : 用户身份编号 (1000)
4. GID : 登录默认所在组编号 (1000)
5. GECOS : 用户全名或注释
6. home directory录 : 用户主目录 (/home/wang)
7. shell : 用户默认使用shell (/bin/bash)

/etc/shadow

shadow

1
2
3
4
5
6
7
8
1. 登录用名
2. 用户密码: 一般用sha512 加密
3. 从 从1970 年1 月1 日起到密码最近一次被更改的时间
4. 密码再过几天可以被变更(0 表示随时可被变更)
5. 密码再过几天必须被变更(99999 表示永不过期)
6. 密码过期前几天系统提醒用户(默认为一周)
7. 密码过期几天后帐号会被锁定
8. 从1970 年1 月1 日算起,多少天后帐号失效

密码期限

/etc/group

group

1
2
3
4
5
6
1. group_name:password:GID:user_list
2. group_name 群组名称:就是群组名称
3. password 群组密码:通常不需要设定,密码是被记录在
/etc/gshadow
4. GID 群ID:就是群组的 ID
5. user_list 以当前组为附加组的用户列表(分隔符为逗号)

/etc/gshadow

gshadow

1
2
3
4
5
1. group_name:encrypted_password:administrators:members
2. group_name:群组名称:就是群组名称
3. encrypted_password:群组密码:
4. administrators:组管理员列表:组管理员的列表,更改组密码和成员
5. members :以当前组为附加组的用户列表:(分隔符为逗号)

/etc/default/useradd

1
2
3
4
5
6
7
8
1. useradd defaults file       创建用户默认文件
2. GROUP=100 创建用户无指定组时默认所属的组users
3. HOME=/home 创建用户默认家目录路径
4. INACTIVE=-1 创建用户时默认没有宽限时间
5. EXPIRE= 创建用户时默认有效期
6. SHELL=/bin/bash 创建用户时默认shell类型
7. SKEL=/etc/skel 创建用户时家目录模板
8. CREATE_MAIL_SPOOL=yes 创建用户时默认创建邮箱

文件操作

​ vipw 等同于vi /etc/passwd

​ vigr 等同于vi /etc/group

​ pwck 检查passwd文件格式错误

​ grpck 检查group文件格式错误

用户与组的管理命令

用户管理命令及常用选项

  1. useradd: 添加登录账号

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -u    指定uid(生产环境中多台服务器保证程序是同一UID)
    -o 不检查UID的唯一性,需配合-u使用(不建议UID一样)
    -g 创建用户时指定主组
    -c 创建用户时添加描述
    -d 创建用户时指定家目录路径,二层目录(生产环境中创建给服务用的账户可能会用到)
    -s 创建用户时指定shell类型/etc/shells
    -r 创建系统用户(默认不创建家目录)
    -m 强行创建家目录,用于系统用户,配合-r使用(生产环境中为服务生成系统用户)
    -M 强行不创建家目录,用于普通用户
    -G 创建用户时加入到多个辅助组里,多个辅助组用“,”分开
    -N 创建一个用户名和主组名不同的用户,默认users作为主组
    -p 创建用户添加密码(不建议此种方式添加口令,口令会在shadow文件中明文)
  2. usermod: 修改登录账号

    1
    2
    3
    4
    5
    6
    7
    8
    9
    -u    修改UID
    -g 修改GID(组需存在)
    -G 修改辅助组(会将原来的辅助组覆盖),如果要保留原辅助组配合-a使用
    -s 新的默认shell
    -c 新的注释信息
    -d 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项(-m -d有顺序)
    -l 新的用户名
    -L 用户加锁
    -U 用户解锁(centos6以后禁止此方式解锁)
  3. userdel: 删除登录账号

    1
    -r     删除用户的所有文件,家目录及邮箱(工作中不建议用,建议保留数据)
  4. id: 可以显示真实有效的UID和GID

    1
    2
    3
    4
    -u:  显示UID
    -g: 显示GID
    -G: 显示用户所属的组的ID
    -n: 显示名称,需配合ugG 使用
  5. su: 切换用户或以其他用户身份执行命令

    1
    2
    3
    4
    5
    6
    7
    示例:
    su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
    su - UserName :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
    root su 至其他用户无须密码;非root 用户切换时需要密码换个身份执行命令:
    su [-] UserName -c 'COMMAND'
    选项:-l --login
    su -l UserName 于 相当于 su - UserName
  6. passwd: 修改自己的密码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    passwd [OPTIONS] UserName:  修改指定用户的密码,仅root
    -l: 锁定指定用户
    -u: 解锁指定用户
    -e: 强制用户下次登录修改密码
    -n mindays: 指定最短使用期限
    -x maxdays : 最大使用期限
    -w warndays : 提前多少天开始警告
    -i inactivedays : 非活动期限
    --stdin : 从标准输入接收用户密码
    如: echo " PASSWORD " | passwd --stdin USERNAME

    newusers passwd: 格式文件 批量创建用户
    chpasswd: 批量修改用户口令

  7. chage:修改用户密码策略

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -d LAST_DAY
    -E --expiredate EXPIRE_DATE
    -I --inactive INACTIVE
    -m --mindays MIN_DAYS
    -M --maxdays MAX_DAYS
    -W --warndays WARN_DAYS
    –l 显示
    示例:
    chage -d 0 tom 下一次登录强制重设密码
    chage -m 0 –M 42 –W 14 –I 7 tom
    chage -E 2016-09-10 tom
  8. chfn: 用来改变finger命令显示的信息

    1
    2
    3
    4
    -f<真实姓名>或--full-name<真实姓名>:设置真实姓名;
    -h<家中电话>或--home-phone<家中电话>:设置家中的电话号码;
    -o<办公地址>或--office<办公地址>:设置办公室的地址;
    -p<办公电话>或--office-phone<办公电话>:设置办公室的电话号码;
  9. chsh: 修改指定shell

    1
    2
    -s<shell 名称>或--shell<shell 名称>:更改系统预设的shell环境。;
    -l或--list-shells:列出目前系统可用的shell清单;
  10. finger: 用于查找并显示用户信息。包括本地与远端主机的用户皆可

    1
    2
    3
    4
    5
    6
    7
    -l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状,还有计划文件和方案文件内容;

    -m:排除查找用户的真实姓名;

    -s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;

    -p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状,但不显示该用户的计划文件和方案文件内容。

组帐号维护命令及常用选项

  1. groupadd: 添加组

    1
    2
    -g     指明GID号创建组
    -r 创建系统组group(centos6:ID<500、centos7:ID<1000)
  2. groupmod: 修改组信息

    1
    2
    -n     新的组名
    -g 新的GID
  3. groupdel: 删除组(前提没有用户以此组为主组)

  1. groupmems: 查看指定组的成员

    1
    2
    3
    4
    5
    -g     更改为指定组(只有root)
    -a 指定用户加入组
    -d 从组中删除用户
    -p 从组中清除所有成员
    -l 显示组成员列表(读取的/etc/group文件中对应组的最后一个字段的全部内容)
  2. gpasswd: 给组添加口令

    1
    2
    3
    -a user     将user添加至指定组中
    -d user 从指定组中移除用户user
    -A user1,user2… 设置有管理权限的用户列表(设置组管理员)
-------------本文结束感谢您的阅读-------------
0%