No.22 用户账号管理和组账号管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No.22 用户账号管理和组账号管理相关的知识,希望对你有一定的参考价值。

Linux基于用户账号的访问控制机制:

账户类型:用户账户,系统账户。

识别方式:UIDGID

用户账号:

超级用户:root、系统用户、普通用户。

组账号:用户区分权限,不用于登录。基本组(私有组)、附加组(公有组)。

UID

root0

系统用户:1-499

普通用户:500-60000

账号数据的存放:

    存储在本机的磁盘上,本地账户。

    存储在网络上的专门的服务器上,网络账户。

本地账户的数据文件:

/etc/passwd

保存用户账号的基本信息,每个用户记录一行,使用冒号分割字段。

字段 1:用户账号的名称

字段 2:密码字符串或占位符

字段 3:用户账户的 UID

字段 4:所属基本组的 UID

字段 5:用户全名

字段 6:宿主目录

字段 7:登录 Shell 程序的路径

/etc/shadow

保存密码字符串、有效期等信息,每个用户记录,使用冒号分割字段。

字段 1:用户账号的名称

字段 2:加密后的密码字符串

字段 3:上次修改密码的时间

字段 4:密码的最短有效天数,默认是 0

字段 5:密码的最长有效天数,默认是 99999

字段 6:密码过期前的警告天数,默认是 7

字段 7:密码过期后多少天禁用此账户

字段 8:账号失效时间,默认值是空的

字段 9:保留字段(未使用)

 

本地组账号的数据文件:

/etc/group

保存组账号的基本信息,每一个记录一行,使用冒号分割。

字段 1:组账号的名称

字段 2:密码占位符

字段 3:组账号的 GID

字段 4:本地的成员用户列表

/etc/gshadow

保存组账号的管理信息,每一个记录一行,使用冒号分割。

字段 1:组账号的名称

字段 2:加密后的密码字符串

字段 3:本地的管理员列表

字段 4:本地的成员用户列表

添加用户:useradd

-u:指定UID

-d:指定宿主目录,缺省为/home/用户名

-e:指定账号时间:禁用用户账户的时间,格式:YYYY-MM-DD

-g-G:指定所属的基本组或附加组。

-M:不为用户建立并初始化宿主目录。

-s:指定用户登录shell环境。

2  设置密码:passwd

-d:清空用户密码

-l:锁定用户账号

-S:查看用户账户的状态是否被锁定

-u:锁定用户账户

--stdin:从标准输入获取

[[email protected] nginx-1.8.0]# useradd tom  # 创建用户

[[email protected] nginx-1.8.0]# echo 123456 | passwd tom --stdin   # 设置密码

Changing password for user tom.

passwd: all authentication tokens updated successfully.

用户初始配置文件:/etc/defaults/useradd

useradd行为时调用。

默认登录定义文件:/etc/login.defs

useradd行为时调用。

配置文件来源:

新建用户时,根据/etc/skel模板目录进行复制修改。

主要初始配置文件:

~/.bash_profile:每次登录时执行。

~/.bashrc:每次进入新的bash环境会执行。

~/.bash_logout:每次退出登录时执行。

全局配置文件:

/etc/profile

/etc/bashrc

用户初始文件会调用全局配置文件。

3  修改用户usermod

usermod 选项 用户名

-l:更改用户账户的登录名称

-L:锁定用户账户

-U:解锁用户账户

-u:指定UID

-d:指定宿主目录,缺省为/home/用户名

-e:指定账号时间:禁用用户账户的时间,格式:YYYY-MM-DD

-g-G:指定所属的基本组或附加组。

-s:指定用户登录shell环境。

4  用户密码有效期控制 chage

chage 选项 用户名

-l:列出密码的有效期信息

-E:指定账号过期日期,格式为:YYYY-MM-DD

-m:指定密码的最小天数

-M:指定密码最大天数

[[email protected] nginx-1.8.0]# chage -l tom

Last password change                                       : Nov 19, 2017

Password expires                                            : never

Password inactive                                           : never

Account expires                                             : never

Minimum number of days between password change        : 0

Maximum number of days between password change        : 99999

Number of days of warning before password expires     : 7

[[email protected] nginx-1.8.0]# chage -m 12 tom

[[email protected] nginx-1.8.0]# chage -l tom

Last password change                                        : Nov 19, 2017

Password expires                                             : never

Password inactive                                            : never

Account expires                                               : never

Minimum number of days between password change          : 12

Maximum number of days between password change          : 99999

Number of days of warning before password expires      : 7

[[email protected] nginx-1.8.0]# chage -M 115 tom

[[email protected] nginx-1.8.0]# chage -l tom

Last password change                                          : Nov 19, 2017

Password expires                                               : Mar 14, 2018

Password inactive                                              : never

Account expires                                                 : never

Minimum number of days between password change           : 12

Maximum number of days between password change           : 115

Number of days of warning before password expires        : 7

[[email protected] nginx-1.8.0]# chage -E 2019-02-03 tom

[[email protected] nginx-1.8.0]# chage -l tom

Last password change                                           : Nov 19, 2017

Password expires                                                : Mar 14, 2018

Password inactive                                               : never

Account expires                                                  : Feb 03, 2019

Minimum number of days between password change            : 12

Maximum number of days between password change            : 115

Number of days of warning before password expires         : 7

5 删除用户 userdel

userdel 用户名

-r:删除宿主目录和用户邮件

[[email protected] nginx-1.8.0]# userdel -r tom  # 删除用户

[[email protected] nginx-1.8.0]# tail -n 2 /etc/passwd  #  检查用户是否存在

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

[[email protected] nginx-1.8.0]# ll /home/  # 查看用户目录是否存在

total 0

6 查看用户ID信息

id 选项 用户名

[[email protected] nginx-1.8.0]# id root

uid=0(root) gid=0(root) groups=0(root)

7 添加组账户 groupadd

groupadd 组名

-g:指定UID

[[email protected] ~]# groupadd sa

[[email protected] ~]# tail -1 /etc/group  # 检查是否添加

sa:x:500:

8  管理组成员

gpasswd 选项 组名

-A:定义组管理员列表

-a:添加组成员,每次只添加一个。

-d:删除组成员,每次只删除一个

-M:定义组成员用户列表,可以设置多个。

[[email protected] ~]# useradd tom   # 添加用户

[[email protected] ~]# echo 123456 | passwd tom --stdin # 设置密码

Changing password for user tom.

passwd: all authentication tokens updated successfully.

[[email protected] ~]# gpasswd -A tom sa  # 将用户添加到组管理员列表

9)删除组 groupdel

groupdel 组名

删除的目标组不可以是用户的基本组。

[[email protected] ~]# groupdel sa

************************************************************************************************

用户登录时,home目录异常,提示无法切换home目录:

[[email protected] home]# useradd xvge  # 添加用户

[[email protected] home]# passwd xvge   # 设置密码

Changing password for user xvge.

New password:

BAD PASSWORD: it is too simplistic/systematic

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updated successfully.

[[email protected] home]# ls  # 检查用户目录

xvge

[[email protected] home]# usermod -d /opt/xvge xvge  # 更改用户目录

[[email protected] home]# grep xvge /etc/passwd  # 查看更改是否成功

xvge:x:500:500::/opt/xvge:/bin/bash

[[email protected] home]# su - xvge  # 切换到用户

su: warning: cannot change directory to /opt/xvge: No such file or directory

-bash-4.1$

原因:

通过 usermod 修改了账号的家目录后只是修改了/etc /passwd 文件中的记录,但是用户的

home 目录不会移动。

解决办法:

使用 usermod 修改用户的 home 目录后,记得将此用户的 home 目录使用 mv 一起移动。

************************************************************************************************

/bin/bash是默认的shell环境。

/sbin/nologin指定不让用户登录的shell环境。


以上是关于No.22 用户账号管理和组账号管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用命令账号和组管理

管理用户账号和组账号

linux-账号与权限管理--用户账号和组账号权限及归属

Linux中的账号和权限管理(理论讲解部分)

05-管理用户和组

linux-用户和组的管理