用户相关知识 Linux详解

简介: 对于Linux系统来说,我们一般添加一个什么东西如果希望永久生效,一般都是直接添加在配置文件中。通过这句话你们能获取什么重要信息呢?哎,没错,配置文件在Linux操作系统的应用中极其重要。

对于Linux系统来说,我们一般添加一个什么东西如果希望永久生效,一般都是直接添加在配置文件中。通过这句话你们能获取什么重要信息呢?哎,没错,配置文件在Linux操作系统的应用中极其重要。今天我们就来说一下保存用户信息的配置文件/etc/passwd:

我们可以cat一下这个文件,cat /etc/passwd

wKiom1gRbk7TFvSCAACdXGiST3E638.png-wh_50

我的老天啊,这都是什么玩意儿啊?完全看不懂有木有?那么怎么办呢?

不要忘记man命令哦,我们可以通过man命令来帮助我们查看这个配置文件的每一个字段的含义。

man 5 passwd : man 5是用来查看配置文件的帮助命令,后面跟的是文件名而不是绝对路径。

wKiom1gRbvHh2ytyAACH_35xT1A189.png-wh_50


这就是解释,即便是你英语再不好,也大致可以看明白什么意思吧?如果实在看不懂,就谷歌翻译算了。


你们千万不要小看了这个/etc/passwd的配置文件哦,Linux上用户登录的时候是什么身份,都是在这个配置文件中设定的。换句话说,内核是通过识别这个配置文件中的UID来判断用户身份的,一般情况下UID=0是管理员;1-499是系统用户(伪用户);UID在500到65535之间是普通用户。如果我们想把普通用户变为管理员,就是通过修改这个/etc/passwd中的UID来设定的。强调一点,不能说root用户就是管理员。


再来说一个重要的配置文件,就是密码配置文件 /etc/shadow

大家可以先来看一下这个文件的访问权限:

wKioL1gRq77z1qrtAAATPx4HvG4059.png-wh_50


看到了吧?权限是000,也就是说任何用户不能操作这个文件,当然root是可以的(谁让他是超人呢)。

注意,千万不要把这个文件随便传给别人,防止别人暴力破解。

下面我们打开这个文件来解释一下:

cat /etc/shadow

wKiom1gRrJWytK5kAABzO5obFS4336.png-wh_50


你们可以看到,每一行代表一个用户,以冒号分割为9段。

① 用户名

② 加密密码(SHA512散列加密,相对于原来的MD5加密更加先进)

③ 时间戳(相对于1970.1.1以后的每一天加1),时间戳的日期是最后一次修改密码的日期

④ 两次密码修改的时间间隔,也就是说第一次密码修改之后,这里如果设置为5,就是5天后才能第二次修改密码

⑤ 密码有效期

⑥ 密码失效前几天提示修改密码

⑦ 密码失效后的宽限日期

⑧ 账号失效时间

⑨ 保留,暂时没有设置



我们添加用户的时候除了会用到这两个文件之外,还有/etc/group和/etc/gshadow文件,很少用到。

除了这四个文件之外,还有三个在创建用户的时候会自动创建的文件。

① 家目录 

root用户的家目录在/root/下

普通用户的家目录在/home/用户名/下


② 邮件目录

/var/spool/mail

wKiom1gRuCijGGxfAAAS6_l2wic158.png-wh_50


③ 用户模板目录

/etc/skel

可不要小看这么个目录哦!我们只要在这个目录下创建一个文件,则在我们创建用户的时候,其用户家目录下就会存在这样的文件

例如 :我们创建一个提示信息的文件

wKioL1gRuTXh4oXlAABqsYeraD4808.png-wh_50

哈哈,是不是很神奇啊!!!



来吧,下面开始学习命令,添加用户走起。


useradd [选项] 用户名

① -u UID:手工指定用户的UID号,这里不建议更改

② -d 家目录:手工指定用户家目录

③ -c 用户说明:手工指定用户说明

④ -g 组名:手工指定用户的初始组

⑤ -G 组名:手工指定用户的附加组

⑥ -s 登录shell:手工指定用户登录shell,默认/bin/bash

自己去演示啊!


这里再来给大家介绍一个文件,那就是我们创建用户的时候那么缺省值(默认值)从哪里来的:

/etc/default/useradd

wKioL1gRv5iSK0y8AAAlqrJJBqQ774.png-wh_50


别急,还有一个文件哦!

/etc/login.defs

wKioL1gRwISwglamAAB4EF8zefQ911.png-wh_50


OK,用户是创建好了,那么是不是还需要设定密码呢?对喽!

设定密码的命令:

passwd [选项] 用户名 -->一般是不加选项的

① -S:查看用户的密码状态(只能root操作)

wKiom1gRw3GSIPcdAAA-Kc1agCk294.png-wh_50



② -l:锁定用户密码

passwd -l user1

wKiom1gRxD3jNdnKAAAYwLkbFk4255.png-wh_50


③ -u:解锁用户

passwd -u user1

wKioL1gRxGuyUBglAAAWqu-mK-k238.png-wh_50


④ --stdin:可以通过管道符输出的数据作为用户的密码

echo "1234" | passwd --stdin user1

shell编程里用这种方式给用户设置密码,本例中user1密码为1234

wKiom1gRxZjytHVfAAAjAMHEJBc131.png-wh_50


上面说了如何创建用户和设置密码,那么如果修改已经创建的用户呢?

① usermod [选项] 用户名

选项:

-u:修改UID

-G:修改附加组

-c:修改用户说明

-L:锁定用户

-U:解锁用户


② chage [选项] 用户名

修改用户密码状态

选项:

-l:列出用户的详细密码状态

-d 日期:最后一次修改密码日期(shadow 3)

-m 天数:两次密码修改间隔(shadow 4)

-M 天数:密码有效期(shadow 5)

-W 天数:密码过期前警告天数(shadow 6)

-I 天数:密码过期后宽限天数(shadow 7)

-E 日期:账号失效时间(shadow 8)


注意:只需要记住 【chage -d 0 用户名】这条命令即可。

下面进行用户的删除操作:

① 删除用户命令:

userdel -r 用户名

-r:删除用户的同时删除家目录



还有一个很简单的查看用户ID命令:

id 用户名

wKiom1gSszjQo5rPAAAVXFRi0sA991.png-wh_50



还有一个切换用户的命令 su:

su [选项] 用户

① - : 切换用户的同时连带用户的环境变量一块切换

② -c :不切换用户身份,只是暂时调用该用户

例如:创建一个user4用户,暂时调用root身份

su - root -c "useradd user4"

wKioL1gStgyAbFJvAAAh3Laq574149.png-wh_50

用户组管理命令:

修改用户组名:

groupmod -n 新组名 原组名

wKiom1gSt6uiz1PjAAAwqwvluBE591.png-wh_50


删除用户组:groupdel 组名

注意:组中存在初始用户,不能删除组。



还有一个很重要的知识点,如何把已经存在的用户加入到某个组中或者从某个组中删除呢?

gpasswd [选项] 组名

① -a 用户名 :把用户加入组中

② -d 用户名:把用户从组中删除

wKiom1gSuj_AFIXnAABBrT0YJ4U200.png-wh_50

相关文章
|
7月前
|
安全 Linux 数据安全/隐私保护
|
7月前
|
Linux 数据安全/隐私保护
|
7月前
|
Linux Shell 数据安全/隐私保护
|
7月前
|
Linux
|
7月前
|
Linux 数据安全/隐私保护
|
7月前
|
Shell Linux
|
7月前
|
Linux Shell
|
7月前
|
Linux
|
7月前
|
Linux Shell
|
7月前
|
Linux Shell