Linux用户管理详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户管理详解相关的知识,希望对你有一定的参考价值。
Linux用户管理详解
1、Linux中用户和组的标识
说明:Linux系统是基于用户身份对系统的资源进行管理的操作系统
(1)用户帐号:UID(User Identity,用户标识号)
(2)超级用户在任何Linux系统中UID=0
(3)系统用户在不同版本Linux中的UID范围:UID:1-499或UID:1-999
(4)普通用户在不同版本Linux中的UID范围:UID:500-65535或UID:1000-65535
(5)组帐号:GID(Group Identify,组标识号)
组可以分为:初始组(私有组)和附加组(公共组)
(6)组的GID范围和上面的普通用户UID范围相同,每创建一个普通用户,默认会生成一个和用户名相同的用户组且UID和GID也相同
2、用户和组相关文件
(1)用户信息文件 /etc/passwd
[[email protected] ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
…………………………………省略若干
(2)用户信息文件/etc/passwd详细介绍
用户信息文件内容全部是以冒号进行分割的,详细介绍如下:
第一列:用户名
第二列:密码占位符
第三列:用户 ID (UID)
0 :超级用户的 UID,只要 UID 是 0 就是超级用户。
1-499:系统用户的范围,此范围的用户不能用于登录系统,只能用于软件服
务运行使用,其中 1-99 是系统保留的账户,系统自动创建。100-499 是预留给用户创建系统用户的。
500-65535:普通用户 UID。建立的普通用户 UID 从 500 开始,最大到 65535。
这些用户足够使用了,但是如果不够也不用害怕,2.6.x 内核以后的 Linux 系统用户 UID 已经可以支持 2的32次方这么多了。
第四列:组 ID(GID),添加用户时,如果不指定用户的初始组,则会自动创建和用户名相同的组。
第五列:用户描述信息
第六列:用户家目录,例如超级级管理员 root 的家目录为/root/ ;普通用户的家目录 为/home/***
第七列:登录 shell 类型 ,/bin/bash 能登录系统;/sbin/nologin不能登录系统
(3)用户密码文件/etc/shadow
[[email protected] ~]# vim /etc/shadow
root:$6$OmNu6a62J4t2sFEP$7FzLpbcwSs4TKRAtC9KOgTWvmX/dSphwBJnWOtLjG.sHgn4iMrEmL.T.dlC9am66i3xC4s4Mu5ENpxBEcTe6y1::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
lp:*:17110:0:99999:7:::
sync:*:17110:0:99999:7:::
shutdown:*:17110:0:99999:7:::
…………………………………省略若干
(4)用户密码文件/etc/shadow文件详细介绍
用户密码文件/etc/shadow文件内容也是以冒号分割的,详细介绍如下:
第一列:用户名
第二列:加密密码我们也可以在密码前人为的加入“!”或“*”改变加密值让密码暂时失效,使这个用户无法登陆,达到暂时禁止用户登录的效果。注意所有伪用户的密码都是“!!”或“*”,代表没有密码是不能登录的。当然我新创建的用户如果不设定密码,它的密码项也是“!!”,代表这个用户没有密码,不能登录。
第三列:密码最近更改时间的时间戳( 1970 年 1 月 1 日作为标准时间)
时间戳转换日期方法:
[[email protected] ~]# date -d "1970-01-01 17110 days"
2016年 11月 05日 星期六 00:00:00 CST
日期转换时间戳方法:
[[email protected] ~]# echo $(($(date --date="2017-11-21" +%s)/86400+1))
17491
第四列:密码最短有效期
第五例:密码最长有效期
第六列:密码到期前的警告天数
第七列:密码过期后的宽限天数
第八列:密码失效时间,这里同样要写时间戳,也就是用 1970 年 1 月 1日进行时间换算。如果超过了失效时间,就算密码没有过期,用户也就失效无法使用了
第九列:保留
(5)组信息文件/etc/group
[[email protected] ~]# vim /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
…………………………………省略若干
(6)组信息文件/etc/group文件详细介绍
组信息文件/etc/group文件内容也是以冒号分割的,详细介绍如下:
第一列: 组名
第二列: 组密码占位符
第三列: 组 ID 号(GID)
第四列: 组内成员列表
(7)组密码文件/etc/gshadow
[[email protected] ~]# vim /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
…………………………………省略若干
(8)组密码文件/etc/gshadow文件详细介绍
组密码文件/etc/gshadow文件内容也是以冒号分割的,详细介绍如下:
第一列:用户组
第二列:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码
第三列:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用逗号分割
第四列:组成员,如果有多个成员,用逗号分割
(9)用户的基本目录
1、用户的家目录
超级用户家目录是 ’/root’
普通用户家目录是 ’/home/xxx’
2、用户邮箱目录 ‘/var/spool/mail/xxx’
3、用户模板目录 ‘/etc/skel/’
3、用户和组相关命令
(1)添加用户命令useradd
格式:useradd [选项] 用户名
选项如下:
-u UID 指定 UID 创建用户
-g 组名 指定初始组,尽量不要手动指定
-G 组名 指定附加组,将用户加入到所指定组内。
-c 说明 添加描述信息
-d 目录 手动指定家目录,目录不需要事先创建
-s shell类型 指定用户是否能登录系统
-M 创建时不生成用户家目录
例 1:
useradd -M –s /sbin/nologin zhangsan
创建 zhangsan 用户,不创建用户家目录,并且不能登录系统
例 2:
先执行“groupadd a1“,预先创建好需要的组
useradd –u 521 –g a1 –G root –d /home/b1 –c “test user” –s /bin/bash abc
-u 指定UID是521;-g指定初始组是a1;-G指定了附加组为 root组;-d指定了家目录叫/home/b1;-c添加了“test user”作为描述信息;-s指定了登录 shell类型为/bin/bash,允许登陆系统。
(2)useradd 创建用户时默认规则及相关文件介绍
useradd 创建用户时默认参考两个配置文件,分别是/etc/default/useradd和/etc/login.defs
1、/etc/default/useradd文件介绍
[[email protected] ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100
新创建用户时默认初始组的 GID 号(公共组)现在使用的是私有组机制(根据创建用户名称创建组)
HOME=/home 新创建用户的家目录的默认位置
INACTIVE=-1 密码过期后宽限天数(过期停权),-1代表永不过期,0代表立即失效
EXPIRE= 密码失效时间,此处写时间戳,到期后立刻失效,不填写表示用户密码永不过期。
SHELL=/bin/bash 此选项是创建用户时默认的 shell 类型,/bin/bash 表示可以登录系统
SKEL=/etc/skel 此选项是创建用户时使用的模板目录,/etc/skel 中的文件在用户创建时
都会被复制到用户家目录下。
CREATE_MAIL_SPOOL=yes 此选项是是否给新用户创建邮件缓冲(即新邮箱)
2、/etc/login.defs文件介绍
[[email protected] ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail 指定新用户的默认邮箱位置
PASS_MAX_DAYS 99999 这行指定的是密码的有效期
PASS_MIN_DAYS 0 这行指定的是两次密码的修改间隔时间
PASS_MIN_LEN 5 密码的最小长度,现在验证已经被 PAM 模块取代
PASS_WARN_AGE 7 这行代表密码修改到期前的警告天数
UID_MIN 1000 创建普通用户的时候默认的起始 UID 号
UID_MAX 60000 创建普通用户,不用 -u 指定时,默认最大的 UID 号
# System accounts
SYS_UID_MIN 201 创建系统用户时默认的最小UID
SYS_UID_MAX 999 创建系统用户时默认的最大UID
GID_MIN 1000 创建组的时候默认的起始 GID 号
GID_MAX 60000 创建组的时候默认的最大的 GID 号
# System accounts
SYS_GID_MIN 201 默认最小系统GID
SYS_GID_MAX 999 默认最大系统GID
CREATE_HOME yes 创建用户时是否创建用户家目录 默认 yes 创建
UMASK 077 建立的用户家目录的默认权限
USERGROUPS_ENAB yes 使用命令 userdel 删除用户时,是否删除用户的初始组
ENCRYPT_METHOD SHA512 指定 Linux 用户的密码使用 SHA512 散列模式加密
(3)添加和修改密码命令passwd
格式:passwd [选项] 用户名
选项:
-l 用户名 锁定用户的密码,使之无法登录到系统
-u 用户名 解锁用户密码
-S(大) 用户名 查看用户帐号的状态(是否被锁定)
第一次对一个用户使用时是为此用户创建密码,第二次使用时是修改密码。
例:root身份执行 passwd
[[email protected] ~]# passwd root root用户修改自己的密码
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]# passwd a1 root用户修改普通用户a1的密码
更改用户 a1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
注:root可以修改任意用户密码,普通用户只能修改自己的密码,当普通用户没有密码时,自己是修改不了自己的密码的!
非交互式密码设置:
--stdin 使用 echo和|实现密码非交互式创建
例:为普通用户a1创建或修改密码
[[email protected] ~]# echo '123456'|passwd --stdin a1
更改用户 a1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
(4)用户信息修改命令usermod(必须是已存在的用户)
格式:usermod [选项] 用户名
选项:
-u UID 修改用户的指定 UID
-g 组名 修改用户的指定初始组(尽量不修改)
-G 组名 修改用户的附加组(不管之前设置了多少附加组,都替换掉)
-c 说明 修改用户的描述信息
-d 目录 结合-m 选项直接对源家目录进行改名实现修改家目录
例:usermod –m –d /home/u4 user4(用户user的原家目录是/home/user4)
-s shell类型 修改用户的登录 shell 类型
-L(大)用户名 锁定用户的密码
-U(大)用户名 解锁用户密码
-l 新用户名 旧用户名 修改用户名
(5)删除用户命令userdel
格式:userdel [选项] 用户名
选项
-r 删除用户时,连带家目录一起删除
(6)添加组命令groupadd
格式:groupadd 组名
(7)删除组命令groupdel
格式:groupdel 组名
注意:被删除的组尽量是空组
(8)向组内添加成员命令gpasswd
格式:gpasswd [选项] 用户名 组名
选项:
-a 向指定组内添加一个成员
-d 把指定用户从组内删除
-M 定义组内成员列表,用户之间用,分隔 (覆盖式)
(9)其他相关命令
1. id 用户名
显示用户的 UID、初始组、附加组列表
2. su 用户名
切换用户身份
su - 用户名
连带环境变量一起切换
3. newgrp 组名
修改用户的有效组,切换到普通用户之后,执行命令
有效组定义:用户创建文件或目录时使用哪个组作为文件的所属组,就是有效组。
注:初始组、附加组:是用户和组之间的关系
有效组:用户和文件之间的关系
以上是关于Linux用户管理详解的主要内容,如果未能解决你的问题,请参考以下文章