Linux基础学习:系统用户与用户组管理

一、Linux系统用户与用户组管理
(一)、/etc/passwd文件(7个字段)
Linux基础学习:系统用户与用户组管理1. | 管道符,把前面的命令的输出再输入给后面的命令
2. 第1个字段为用户名(如第一行的root),代表用户账号的字符串
3. 第2个字段为该账号的口令。早期的Unix系统口令存于这里,基于安全因素,后存于/etc/shadow中,故用此处x代替
4. 第3个字段为uid,代表用户标识号。
(1)取值范围0~65535(实际上已可支持到429 496 729 4)
(2)0是超级用户(root)的标识号
(3)centos 7的普通用户标识号从1000开始
5. 第4个字段为gid,代表组标识号。对应/etc/group中的一条记录,
(1)/etc/group和/etc/passwd基本类似
6. 第5个字段为注释说明,无实际意义。通常记录该用户的一些属性,可用chfn命令更改
7. 第6个字段为用户家目录。用户登陆时,就在该目录下。
(1)用户家目录可自定义
8. 第7个字段为用户的shell。
(1)shell用于将用户下达的指令传给内核
(2)Linux的shell有多种,如sh、csh、ksh、tcsh、bash等
(3)默认是/bin/bash,可修改
(4)/sbin/nologin表示不允许该账号登陆

(二)、/etc/shadow文件(9个字段)
Linux基础学习:系统用户与用户组管理

  1. 第1个字段为用户名,与/etc/passwd对应
  2. 第2个字段为用户密码,是该账号的真正密码
    (1)可被部分黑客解密
    (2)root账户可以访问或修改该文件属性
  3. 第3个字段为上次更改密码的日期
  4. 第4个字段为要过多少天才可以更改密码
    (1)默认为0,即不受限制
  5. 第5个字段为密码多少天后过期,即多少天内必须更改密码
    (1)默认为99999,可理解为永远不需要更改
  6. 第6个字段为密码到期前的警告期限
  7. 第7个字段为账号失效期限
  8. 第8个字段为账号的生命周期
  9. 第9个字段作为保留用,无意义

(三)用户和用户组管理的相关命令

  1. groupadd 用于新增组。用法:groupadd 【-g gid】【组名】
    (1)加-g,可自定义gid,否则按照系统默认的gid创建组,如图
    Linux基础学习:系统用户与用户组管理Linux基础学习:系统用户与用户组管理
  2. groupdel 用于删除组。用法:groupdel【组名】
    (1)存在账户的组不会被直接删除,需删除账户后,方可执行
  3. useradd 用于新增用户。用法:useradd【-u uid】【-g gid】【-d home】【-M】【-s】
    (1)-u 表示自定义uid
    (2)-g 表示新增用户属于某个已存在的组,后跟组id或组名
    (3)-d 表示自定义用户的家目录
    (4)-M 表示不建立家目录
    (5)-s 表示自定义shell
  4. userdel 用于删除账户。用法:useradd【-r】【用户名】
    (1)-r 表示删除用户时,一并删除该用户的家目录
  5. chfn 用于 修改用户的finger。用法:chfn【用户名】
    (1)finger就是/etc/passwd文件第5个字段中显示的信息

(四)用户密码管理的相关命令

  1. passwd 用于设置用户密码。用法:passwd【用户名】
  2. mkpasswd 用生成秘密。用法:mkpasswdd 【-l n】【-s n】【-d n】
    (1)若没有该命令,可用“yum install -y expect”命令安装该命令
    (2)【-l n】 指定生成密码的长度
    (3)【-s n】 指定生成特殊字符的个数
    (4)【-d n】指定生成数字的个数

(五)用户身份切换的相关命令

  1. whoani 用于查看当前用户
  2. su 用于切换用户。用法:su【-】【用户名】
    (1)加上-,会初始化当前用户的各种环境变量
    (2)普通用户使用su命令不加用户名,则切到root用户
    (3)切到root账户时,加-,当前目录为root账户的家目录;不加-,当前目录无变化
    (4)root用户切到普通用户,不需要输入密码
  3. sudo 该命令只有root用户才能使用,普通用户需要root预先设定才能使用
    (1)使用visudo命令编辑/etc/sudoers文件,可以令普通用户使用sudo命令
    (2)若没有visudo这个命令,可使用“yum install -y sudo ”命令安装
    (3)在/etc/sudoers文件的root ALL=(ALL) ALL一行下面加入 【普通用户名】ALL=(ALL) ALL,就可以让指定的普通用户拥有sudo的特权
    Linux基础学习:系统用户与用户组管理
    图中让test用户获得sudo的特权

a. 第一段【普通用户名】指定让哪个用户有sudo的特权
b. 第二段 ALL=(ALL),这边的ALL指的是所有主机,右边ALL指的是获取那个用户的身份(几乎不用配置)
c. 第三段 ALL,设定可以使用sudo的命令有哪些
(4)多用户快速获取sudo特权
a. 在/etc/sudoers文件里,把#%wheel ALL=(ALL) ALL前面的#去掉,让这一行生效
Linux基础学习:系统用户与用户组管理
b. 把需要设置sudo权限的所有用户加入到wheel这组中
4. 不允许root远程登陆linux(只适用于通过ssh远程登陆Linux的情况)
(1)修改配置文件/etc/ssh/sshd_config
a. 把#PermitRootLogin yes修改为PermitRootLogin no
b. 保存配置文件,重启ssh服务(systemctl restart sshd.service)