用户相关的文件及命令

第1章 用户管理的基本介绍

Linux system每个文件和进程,都需要对应一个用户和组, Linux system是通过UID和GID来识别用户和组的。用户名相当于人名,UID相当于×××号,系统只能识别UID。

1.1 用户和组的关系:

一对一,一对多,多对一,多对多。

1.2 Linux system 用户分类:

由/etc/login.defs这个文件里面的内容来控制
超级用户:UID为0,代表root
普通用户:UID范围500-65535,由超级用户或者具有超级用户权限的用户创建的用户
虚拟用户:UID范围1-499,存在满足文件或者服务启动的需要,一般都不能登录。

第2章 用户相关的文件说明

2.1 /etc/skel/

/etc/skel目录是用来存放新用户的环境变量文件的目录,下面好多隐藏文件,当我们使用useradd指令创建新用户的时候,这个目录下的所有文件都会被自动的复制到新用户的家目录下。我们可有通过添加删除修改这个目录下的内容,来为新用户提供统一的标准的初始化用户环境

[root@oldboy_50 skel]# ls -a
.  ..  .bash_completion  .bash_logout  .bash_profile  .bashrc
[root@oldboy_50 skel]# touch 123.txt
[root@oldboy_50 skel]# useradd 122
[root@oldboy_50 skel]# ls /home/122/
123.txt
2.2 /etc/passwd
[root@oldboy_50 tmp]# cat /etc/passwd| head -n 2 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
里面存放的是用户的相关信息分别代表
按照冒号分隔来说:
第一段:用户名称 usermod -l 可以修改
第二段:密码位,但是真实的密码不再这个文件里面,在/etc/shadow里面存放着,而且是密文
第三段:用户的UID  useradd -u 指定
第四段:用户的GID  useradd -g指定 ,usermod -g 修改
第五段:用户的说明信息,useradd -c添加,
第六段:指定用户登录时的目录 useradd -m 指定,usermod -d 修改
第七段:登录时使用的shell  useradd -s 指定,usermod -s 修改

2.3 /etc/shadow

存放的是给用户密码,有效期有关的配置

[root@oldboy_50 tmp]# tail -3 /etc/shadow
zsf:$6$4WcGshTr$RTDci2kvT9ODqJyKjLOZOHlDCHoLvOVqz66muWo5WntqVA3o4ipCao3bLEjWQ82W.CoPQSyUby81EpTT/XqRd1:17728:0:99999:7:::
haha:123123:17727:0:99999:7:::
xixi:123:17728:0:99999:7:::
按照“:”来分隔
第一段:用户名称
第二段:用户的密码。没有就用!表示,通过passwd设置的是密文的,useradd -p指定的密码是明文的
第三段:“密码最后一次修改时间”,在centos里表示从“1970年1月1日”到修改密码的那一天经历的天数
第四段:密码最小修改的间隔,在最下间隔之内不能修改密码
第五段:密码最长多久必须更改一次密码,在这个天数之内必须改次密码
第六段:警告时间,密码过期前多少天提醒
第七段:不活动时间,用户没有登录活动但账号仍能保持有效的最大天数
第八段:失效时间,密码的生存周期,超过这个天数该账号就不能用了。时间也是相对于“1970年1月1日”开始的,通过usermod -e来更改

2.4 /etc/group

存放给用户组相关的

[root@oldboy_50 tmp]# grep "root" /etc/group
root:x:0:
以“:”分隔
第一段:用户组名称
第二段:用户组密码
第三段:用户组GID
第四段:这个群组里面所有的账号

2.5 /etc/gshadow

[root@oldboy_50 tmp]# grep "root" /etc/gshadow
root:::
以冒号分隔:
第一段:用户组名称
2.6 /etc/login.defs
用来定义创建用户时需要的一些用户的配置信息。
PASS_MAX_DAYS   99999    密码的有效期
PASS_MIN_DAYS   0         两次修改密码的最小间隔
PASS_MIN_LEN    5         密码的最小长度
PASS_WARN_AGE   7       密码到期前多少天提醒
创建用户的时候最小UID和最大UID
UID_MIN                   500
UID_MAX                 60000
创建用户的时候最小GID和最大GID
GID_MIN                   500
GID_MAX                 60000

CREATE_HOME     yes     #是否自动创建家目录
UMASK           077     #umask值控制用户家目录的
# This enables userdel to remove user groups if no members exist.
#删除用的时候要删除用户组 
USERGROUPS_ENAB yes

2.7 /etc/defaulst/useradd

创建用户默认信息的配置文件

[root@oldboy_50 default]# cat useradd 
#useradd defaults file
GROUP=100    #依赖于/etc/login.defs的USERGROUPS_ENAB参数,如果为no,则此处控制
HOME=/home   用户家目录存在的地方
INACTIVE=-1  是否启用账号过期停权,-1表示不使用
EXPIRE=      账号终止日期
SHELL=/bin/bash   创建用户的时候默认使用的shell
SKEL=/etc/skel    创建用户从哪个目录拷贝初始环境到家目录下
CREATE_MAIL_SPOOL=yes   是否创建maill文件,在/var/mail

useradd 创建用户(修改的是/etc/passwd这个文件)

3.1 命令说明

useradd - create a new user or update default new user information
创建一个新的用户,或者更高这个新用户的默认信息
修改的是/etc/passwd这个文件

3.2 命令格式

useradd [options] user_name

3.3 命令选项

3.3.1.1 -m 创建家目录,默认选项

[root@oldboy_50 ~]# useradd useradd_user
[root@oldboy_50 ~]# ll -d /home/useradd_user/
drwx------ 2 useradd_user useradd_user 4096 Jul 14 18:41 /home/useradd_user/

3.3.1.2 -g 创建用户所属组,如果不指定就创建一个和用户uid,名字一样的用户组

[root@oldboy_50 ~]# id useradd_user 
uid=500(useradd_user) gid=500(useradd_user) groups=500(useradd_user)

3.3.1.3 -G 指定用户的附属组

[root@oldboy_50 tmp]# useradd 123 -G zsf   指定附属组是
[root@oldboy_50 tmp]# grep zsf /etc/group
zsf:x:500:123
[root@oldboy_50 tmp]# id 123 
uid=502(123) gid=502(123) groups=502(123),500(zsf)

3.3.1.4 -s 指定用户的登录shell,如果不指定默认是/bin/bash

[root@oldboy_50 ~]# grep "useradd_" /etc/passwd
useradd_user:x:500:500::/home/useradd_user:/bin/bash

3.3.1.5 -M 创建时不创建用户家目录

[root@oldboy_50 ~]# useradd test_zsf -M 
[root@oldboy_50 ~]# ll -d /home/test_zsf
ls: cannot access /home/test_zsf: No such file or directory

3.3.1.6 -N 创建是不创建用户组

3.3.1.7 -p “密码” 创建时指定用户密码,在/etc/shadow文件里面是明文显示,不安全

[root@oldboy_50 tmp]# useradd zsf -p "123456"
3.3.1.8 -u 指定UID
[root@oldboy_50 tmp]# useradd -u 888 zsf
[root@oldboy_50 tmp]# id zsf 
uid=888(zsf) gid=888(zsf) groups=888(zsf)

3.3.1.9 -c “说明信息”,添加用户的说明信息

修改的是/etc/passwd 第五段
[root@oldboy_50 ~]# useradd zsf -c "this is test user"
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test user:/home/zsf:/bin/bash 

第4章 usermod 更改用户属性

4.1 命令说明

修改用户的基本属性,没办法改变正在使用的账号信息

4.2 命令格式

usermod  [options] user_name

4.3 命令选项

4.3.1 -c 修改用户的说明信息

[root@oldboy_50 ~]# usermod zsf -c "this is test usermod_c"
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test usermod_c:/home/zsf:/bin/bash

4.3.2 -d 修改用户登录时的目录,一般默认为家目录,作为登录时的目录,首先这个用户要对这个目录具有权限

[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test usermod_c:/zsf:/bin/bash

4.3.3 -g 修改用户的属组

[root@oldboy_50 ~]# usermod -g fsz zsf 
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:503:this is test usermod_c:/zsf:/bin/bash

4.3.4 -G 修改用户的附属组

[root@oldboy_50 ~]# usermod -G zsf zsf
[root@oldboy_50 ~]# grep "^zsf" /etc/gshadow
zsf:!::zsf

4.3.5 -s 修改用户登录的shell

[root@oldboy_50 tmp]# grep test /etc/passwd
test:x:501:501::/home/test:/bin/bash
[root@oldboy_50 tmp]# usermod test -s /sbin/nologin
[root@oldboy_50 tmp]# grep test /etc/passwd
test:x:501:501::/home/test:/sbin/nologin

4.3.6 -L 锁定用户

4.3.7 -U 解锁用户

4.3.8 -s 修改用的登录的shell

[root@oldboy_50 ~]# usermod zmy -s /sbin/nologin
[root@oldboy_50 ~]# grep "502" /etc/passwd
zmy:x:502:503:this is test usermod_c:/zsf:/sbin/nologin
4.3.9 -l 修改账号的名称
要更改成的名称放在前面,账户的UID没有变,只是名称变了而已
[root@oldboy_50 ~]# usermod -l  zmy zsf
[root@oldboy_50 ~]# grep "502" /etc/passwd
zmy:x:502:503:this is test usermod_c:/zsf:/bin/bash
4.3.10 -e "时间" 指定用户到那一天到期,到期后就不能登录使用了
直接在配置文件里面改也行,但是比较麻烦
[root@oldboy_50 tmp]# usermod -e "2018-01-01" test 
[root@oldboy_50 tmp]# grep test /etc/shadow
test:!!:17877:0:99999:7::17532:

第5章 userdel 删除用户

5.1 命令说明

删除指定的用户,以及用户相关的文件。若不加选项只是删除用户的账号,而不删除相关的文件

5.2 命令格式

userdel [options] user_name

5.3 命令选项

5.4 -f 强制删除,和rm的参数选项类似

5.5 -r 删除用户的同时,删除与用户相关的所有文件,删除用户家目录

[root@oldboy_50 tmp]# userdel 123
[root@oldboy_50 tmp]# ll -d /home/123/
drwx------ 2 502 502 4096 Dec 12 01:18 /home/123/
[root@oldboy_50 tmp]# userdel -r test 
[root@oldboy_50 tmp]# ll -d /home/test
ls: cannot access /home/test: No such file or directory

第9章 chage 修改账号和密码的有效期

9.1 命令说明

用来修改账号和密码的有效日期,主要修改/etc/shadow

9.2 命令格式

chage [options] userName

9.3 命令选项

9.3.1 后面直接跟用户名,交互式修改

[root@oldboy_50 tmp]# chage zsf
Changing the aging information for zsf
Enter the new value, or press ENTER for the default

-m  Minimum Password Age [0]: 7         两次更改密码的间隔
-M  Maximum Password Age [99999]: 20    密码多少天之内必须更改
-d  Last Password Change (YYYY-MM-DD) [2018-07-16]: 2018-07-17   最后一次修改密码的时间
-w  Password Expiration Warning [7]: 9     密码过期多少天前提醒
-i  Password Inactive [-1]:               密码到期多少天以后还不改密码,就禁止使用
-E  Account Expiration Date (YYYY-MM-DD) [-1]: 2018-08-08   用户账号到期时间
9.3.2 -m 修改账号更改密码的间隔,相当于/ect/shadow第4段
9.3.3 -M 修改久不修改密码的时间,相当于/ect/shadow第5段
9.3.4 -d 最后一次修改密码的时间,相当于/etc/shadow第3段
9.3.5 -w 密码过期前多少天提醒,相当于/ect/shadow第6段
9.3.6 -i 密码过期多少天以后还不更改密码,此账号不能用,相当于/etc/shadow第7段
9.3.7 -E 账号到期的时间,相当于/etc/shadow第8段
9.3.8 -l 列出以上这些信息
[root@oldboy_50 tmp]# chage -l zsf
1)Last password change                  : Jul 17, 2018
2)Password expires                  : Aug 06, 2018
3)Password inactive                 : never
4)Account expires                       : Aug 08, 2018
5)Minimum number of days between password change        : 7
6)Maximum number of days between password change        : 20
7)Number of days of warning before password expires : 9
说明:
1)最近一次修改密码的时间         /ect/shadow中的第3段
2)密码的到期时间                 
3)密码到期后多少天不改密码就禁用     /ect/shadow中的第7段
4)账户的到期时间                    /ect/shadow中的第8段
5)两次改密码的时间最小间隔,在这个间隔内不能再更改密码    /ect/shadow中的第4段
6)密码的最大改密码间隔,在这个时间内必须改密码           /ect/shadow中的第5段
7)密码到期多少天之前提醒。                               /ect/shadow中的第6段

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

Go微服务,第10部分:集中式日志记录

在Go微服务博客系列的这一部分中,我们将介绍基于Logrus,Docker Gelf日志驱动程序和“作为服务的日志记录” Loggly服务的Go微服务的日志记录...

4004
来自专栏运维前线

Jenkins + Maven + SonarQube 构建代码质量检测平台

使用SonarQube扫描仪分析Maven 安装jenkins 参考:http://blog.csdn.net/wh211212/article/details...

2975
来自专栏CodeSheep的技术分享

centos7上elastic search安装填坑记

1796
来自专栏技术博文

linux命令总结

cat tail -f 日 志 文 件 说明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一...

36810
来自专栏Vamei实验室

Java网络01 Tomcat初次尝试

Tomcat是一套开源软件,它由Apache Software Foundation(ASF)开发,用于实现Java Servlet和JavaServer Pa...

2089
来自专栏友弟技术工作室

Python虚拟环境

本教程将引导你完成安装和使用 Python 包。 它将向你展示如何安装和使用必要的工具,并就最佳做法做出强烈推荐。请记住, Python 用于许多不同的目的。准...

62915
来自专栏我的博客

TP入门第五天

1、数据库连接 这里说下为和用到配置都是返回数组,$arr=include(‘config.php’);然后你打印出来看看! 配置文件(有两种连接方法) 第一种...

3164
来自专栏蓝天

ZooKeeper-3.4.6分布式安装指南

介绍ZooKeeper-3.4.6版本的分布式安装,力求细致,提供精确的安装指导。本文的安装环境是64位的SuSE 10.1 Linux,也适用于ZooKe...

1451
来自专栏运维咖啡吧

记一次诡异的故障排查经历

管理员通过Jenkins调用“发布程序(代号varian,以下简称varian)”,发布程序会进行一系列的初始化操作,完成后生成Docker镜像上传到Docke...

982

如何自动地将代码从Git平台部署至组件容器

将源代码从Git平台部署至组件容器有很多种可以选择的方法,包括重新部署整个容器,通过卷即时重新部署,或者使用“git clone”的方法。但是,当这个过程自动化...

2379

扫码关注云+社区

领取腾讯云代金券