已索引

本文有相应的视频教程:https://edu.51cto.com/sd/9c330 【文章免费,视频收费】

用户与组的概念

为什么要有用户,为什么要有组。

查看用户与组的信息

/etc/group, /etc/gshadow, /etc/passwd, /etc/shadow


/etc/passwd 中的 x 位是个占位符,其存在是为了向下兼容。早期的系统,用户密码是放在这个文件的,而这个文件是所有人都可读的,非常不安全。GECOS 列用于描述用户信息,会显示在 X 登录屏幕上,如果不写,则显示用户名。另外,可以使用 finger 来查看用户信息。

从RHEL6开始,/etc/shadow 不再使用 MD5 式加密,而使用更强大的 SHA512 式加密。

组密码使用的场景较少,如果有兴趣,可以参见下面文章:

组的管理

groupadd, groupdel,groupmod,or modify the /etc/group directly.

用户的管理之用户的三大分类

1、root用户

  • 其本质是 uid=0,在引入 SELinux 之前,root 用户是完全无限制的,建议平时不要使用超户身份,特别是不要使用超户上网,形同自尽。

2、非root用户

  • 系统用户
  • 普通用户

Linux 用户认证机制

  • Two types of information are required to log in

    • Account information: Who is this user?

      • UID number, default shell, home directory, groups, etc
    • Authentication Credentials: Is this really the user?

      • password, key, etc
  • Supported account information services:

    • (local files), NIS, LDAP, Hesiod, Winbind // local files 即 passwd 文件
  • Supported authentication mechanisms:

    • (NSS), Kerberos, LDAP, SmartCard, SMB, Winbind // NSS 即 shadown 文件

与 Windows 将用户名和密码一起发送到服务器进行集中验证的机制不一样,Linux 先将用户名发送到服务器验证用户名是否存在,然后再将密码发送到服务器验证身份,也就是说,Linux 的集中认证分两次。但要注意,即使将用户名输错了,仍会提示进行密码输入,这主要是为了防止对用户名的猜测。

简单地创建一个用户

# useradd username (passwd, shadow, group, gshadow, home, mail, profile) 
# password username (shadow)

用户属性指定

结合 /etc/passwd 来对用户属性进行指定,usermod 跟 useradd 的选项基本一样。

范例:修改用户加目录

# usermod -md /house/newrhca  rhca

-d 选项会修改 /etc/passwd 中的记录,-m 选项是将用户的家目录 move 到新位置,注意 /house 目录必须存在,且 /house/newrhca 不存在(若存在则会提示目录已经存在,只会修改 /etc/passwd 中的记录)。

用户密码管理

# chage -l natasha     查看用户密码策略
# chage -M 30 natasha  设置 natasha 用户的密码 30 天后过期
# chage natasha        向导式设置natash的密码策略

示例:

# chage -l schwann
Last password change                : Jul 01, 2015
Password expires                    : Jul 11, 2015
Password inactive                   : Jul 12, 2015
Account expires                     : never
Minimum number of days between password change        : 1
Maximum number of days between password change        : 10
Number of days of warning before password expires     : 3

7月11号登陆时,可以使用旧密码正常登录:
Password:
Warning: your password will expire in 0 days

7月12号登陆时,可以使用旧密码,要求立即修改密码才能进入系统:
Password:
You are required to change your password immediately (password aged)
Changing password for schwann.
(current) Unix password:

7月13号登陆时,宽限期已过,禁止登录:
Password:
Your account has expired; please contact your system administrator

如果把宽限期设置为 0,7月12号登陆时,直接禁止登录。

用户的删除

删除用户的时候要慎重考虑是否使用 -r 选项,使用 -r 会删除用户家目录和邮件文件(其它地方的该用户的文件需要手动查找并删除),不使用 -r 容易泄露用户隐私,例如 tom 离职后,使用 userdel tom 将其从系统中删除,随后 jack 入职,使用 useradd jack 为其创建一个帐号,那么 jack 将获得 tom 的所有文件。

用户与组的关系

主要组:必须有,且只能有一个 (-g)
附加组:可以有任意个 (-G, -a)

正确理解 /etc/group 的最后一列

错误表示1:组 X 里的成员是 x,y,z (主要组关系不体现在 group 文件中)
错误表示2:组 X 是 x,y,z 的附加组(useradd -g it -G it cy)
正确表述:x,y,z 是组 X 的成员

groupmems 命令管理的其实就是 /etc/group 文件的最后一列,例如,你可以使用 -p 动作来清空最后一列。

查看组中所有用户

  1. 使用 groupmems 列出组中所有用户
  2. 在 /etc/passwd 中找到所有以该组为主要组的用户

用户默认配置文件

/etc/login.defs
/etc/default/useradd
/etc/skel

如果需要手动复制 /etc/skell/ 下的隐藏文件到指定位置:

错误命令:cp -r /etc/skel/.* /mnt/test/
正确命令:cp -r /etc/skel/.??* /tmp/dest/

su 和 sudo

su
通过 /etc/pam.d/su 可以配置某组(wheel)中的用户可以无密码 su 到 root 或者只有某组(wheel)用户可以 su 到 root。
只需要取消相关的配置行的注释即可:
auth sufficient pam_wheel.so trust use_uid /* 某组(wheel)中的用户可以无密码 su 到 root
auth required pam_wheel.so use_uid /* 只有某组(wheel)用户可以 su 到 root

sudo
visudo, /etc/sudoers

-- By 许望(RHCA、OCM、VCP)
最后修改:2024 年 02 月 07 日 09 : 48 AM
如果觉得我的文章对你有用,请随意赞赏