Linux用户管理详解

Posted

tags:

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

Linux用户管理详解

1Linux中用户和组的标识

说明:Linux系统是基于用户身份对系统的资源进行管理的操作系统

 

1)用户帐号:UIDUser Identity,用户标识号)

2)超级用户在任何Linux系统中UID=0

3)系统用户在不同版本Linux中的UID范围:UID:1-499UID:1-999

4)普通用户在不同版本Linux中的UID范围:UID:500-65535UID:1000-65535

 

5)组帐号:GIDGroup Identify,组标识号)

组可以分为:初始组(私有组)和附加组(公共组)

6)组的GID范围和上面的普通用户UID范围相同,每创建一个普通用户,默认会生成一个和用户名相同的用户组且UIDGID也相同

 

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 已经可以支持 232次方这么多了。

 

第四列:组 IDGID),添加用户时,如果不指定用户的初始组,则会自动创建和用户名相同的组。

 

第五列:用户描述信息

 

第六列:用户家目录,例如超级级管理员 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 指定UID521-g指定初始组是a1-G指定了附加组为 root组;-d指定了家目录叫/home/b1-c添加了“test user”作为描述信息;-s指定了登录 shell类型为/bin/bash,允许登陆系统。

 

2useradd 创建用户时默认规则及相关文件介绍

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用户管理详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令详解-用户管理

linux用户和用户组管理详解

详解Linux账户和权限管理

5linux用户和组管理详解

Linux中用户管理详解

Linux用户用户组权限管理详解 --- 02