No.22 用户账号管理和组账号管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No.22 用户账号管理和组账号管理相关的知识,希望对你有一定的参考价值。
Linux基于用户账号的访问控制机制:账户类型:用户账户,系统账户。
识别方式:UID、GID
用户账号:
超级用户:root、系统用户、普通用户。
组账号:用户区分权限,不用于登录。基本组(私有组)、附加组(公有组)。
UID:
root:0
系统用户: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 用户账号管理和组账号管理的主要内容,如果未能解决你的问题,请参考以下文章