Day12-Linux系统用户管理知识精讲1

1. Linux用户管理

人 名字 身份证

linux root 0

身份标识 UID 唯一标识

组标识 GID 唯一标识

1.1 用户介绍(user)

Linux里都有哪些用户?作用?

  1. 超级用户

系统管理员,掌握系统最高权限,皇帝一样。家目录/root

用户名是root,UID为0.

UID为0的用户就是root。

登录shell,/bin/bash

登录安全:企业级应用。

a.配置ssh,禁用root通过SSH远程登录,权限非常大,所有人都知道。

使用普通用户登录,然后切换到root

b.平时使用普通用户登录,有必要的话在登录root。

  1. 普通用户

普通的权限,写的权限范围 家目录 /home/用户名,/tmp。

老百姓,过着平常的日子。

由管理员用户创建的。日常登录应该首先登录普通用户。

UID为C6 500-60000,C7 1000-60000

登录shell,/bin/bash

普通用户如何管理系统?

a.切换root,su - oldboy #角色改变,由普通用户变成了root。

农民起义,当皇帝。

b.不切换到root,可以使用root的权限去做事,sudo useradd oldboy

赋予普通用户一部分权限。

  1. 虚拟用户(傀儡用户)

多数情况装系统就存在的,不能登录的。

UID 1-499

登录shell,/sbin/nologin

存在还不能登录?

linux 文件、进程这样的东西如果要存在,必须要有对应的用户和组。

类似人出生,一定有父母的。家庭(组1),老男孩教育(组2)

文件创建时就要有对应的用户和组。

进程启动时就要有对应的用户和组。

虚拟用户存在的目的就是满足进程启动时对用户和组的要求。

用普通用户行不行?行

最小化原则:

1.安装软件最小化

2.登录安全最小化(普通用户)

3.进程启动权限最小化

4.权限最小化

1.2 用户组介绍(group)

GID Group Identify

组名

用户的用户组 类似于【人】的家庭,学校等组织

1个用户可以在多个组里。

1个组可以有多个用户。

在这里插入图片描述

用户组怎么产生的?

1)创建用户的时候默认产生的,创建一个oldboy,默认情况就会生成oldboy组,用户和组同名,且UID和GID相同

2)由root用户直接创建。

1.3 用户相关的配置文件

直接相关的有4个

/etc/passwd ##用户主配置文件,用户的各种属性(UID,GID,家目录,登录SHELL)

/etc/shadow ##用户密码文件,存放密码及密码的属性(失效时间,修改密码时间等)。

/etc/group ##组文件,存放用户组及属性。

/etc/gshadow ##用户组的密码文件(废弃)

和创建用户相关的有3个

/etc/default/useradd ##创建用户命令useradd的配置文件

/etc/skel ##创建用户环境变量原始文件存放地。

/etc/login.defs ##创建用户系统配置,对应文件。

详细说明:

用户文件:

/etc/passwd 见视频*****
在这里插入图片描述

字段名称注释说明
用户名称和用户 UID 对应,这是用户登录时使用的用户名称,在系统中是唯一的,不能重名
用户密码早期的 Unix 系统中,该字段是存放用户密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow文件中了。这位置可以看到一个字母x,表示该用户的密码是在/etc/shadow 文件中保护的
用户UID用户 UID 一般是由一个整数表示的,默认范围是 0~60000,最大可以到65535,有关 UID 的范围,在第9章中已列表讲解,读者可以回看
用户组 GID用户 GID 一般也是由一个整数表示的,范围、最大值和用户 UID 相同,当添加用户时,默认情况下会同时建立一个与用户同名且 ID 相同的组
用户说明对用户的描述说明
用户家目录用户登录后默认进入的目录,一般为“/home/用户名”这样的目录
shell 解释器当前用户登录后所使用的解释器。在CentOS/RedHat等主流Limux系统中,默认的解释器为 bash。如果不希望用户登录系统,可以通过 usermmod或者手工修改 passwd 配置,将解释器类型改为/sbin/nologin即可。

/etc/shadow 见视频

[root@oldboy opt]# tail -2 /etc/shadow
oldboy:$6$Dp5ilfcgCGcIOzqO$Owl/HvJ4G5uSi9lA9kyv7JElaL7amYl9AmWMnxR9PKVGhnr8zFOT3.j9DlFf.N1lO8TB2RkqN47pHD0Re7uyn0::0:99999:7:::
tcpdump:!!:19695::::::
字段名称注释说明
用户名称用户名称
用户密码用户密码,是加密过的字符串
最近更改密码的时间从 1970年1月1日起,到用户最近一次更改口令的天数
禁止修改密码的天数从 1970年1月1日起,到用户可以更改密码的天数
用户必须更改口令的天数从1970年1月1日起,到用户必须更改密码的天数
警告更改密码的期限在用户密码过期前多少天提醒用户更改密码
不活动时间在用户密码过期之后到禁用账户的天数
失效时间从1970年1月1日起,到用户被禁用的天数
标志保留

用户组文件:
/etc/group 见视频

字段名称注释说明
用户组名用户组的名称
用户组密码通常不需要设置该密码,由于安全原因,该密码被记录在/etc/gshadow中,因此,显示为“x”。这类似/etc/shadow
GID用户组的 ID
用户组成员加入这个组的所有用户(附加组成员,即用-G加入的成员)

/etc/gshadow 见视频

字段名称注释说明
用户组名用户组名称
用户组密码用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
用户组管理员用户用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
用户组成员加入这个组的所有用户用户,列表中多个用户通过“,”分隔

1.4 和用户相关的命令

useradd 添加用户

usermod 修改用户

userdel 删除用户

1.4.1 useradd命令

1)添加用户

[root@oldboy ~]# useradd test1

查看:

[root@oldboy ~]# id test1  #查看用户
uid=1001(test1) gid=1001(test1)=1001(test1)

[root@oldboy ~]# tail -n 1 /etc/passwd /etc/group /etc/shadow /etc/gshadow
==> /etc/passwd <==
test1:x:1001:1001::/home/test1:/bin/bash

==> /etc/group <==
test1:x:1001:

==> /etc/shadow <==
test1:!!:22052:0:99999:7:::

==> /etc/gshadow <==
test1:!::

2)指定uid添加用户(-u)

[root@oldboy ~]# useradd -u 5000 test2 #创建test2用户,并指定uid为5000
[root@oldboy ~]# id test2
uid=5000(test2) gid=5000(test2)=5000(test2)

3)指定用户的登录shell(-s)

[root@oldboy ~]# useradd -s /sbin/nologin test3  #创建test3用户,禁止登录
[root@oldboy ~]# id test3
uid=5001(test3) gid=5001(test3)=5001(test3)
[root@oldboy ~]# tail -1 /etc/passwd
test3:x:5001:5001::/home/test3:/sbin/nologin
[root@oldboy ~]# su - test3
This account is currently not available.

企业应用:配置网络服务时候,编译安装需要,创建虚拟用户。

4)指定用户家目录(-d)

[root@oldboy ~]# useradd -d /opt test4
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
[root@oldboy ~]# tail -1 /etc/passwd
test4:x:5002:5002::/opt:/bin/bash
su - test4
参数注释说明
-c comment设置新用户在 passwd 文件中的说明字段的信息
-d home_dir新用户每次登入时使用的家目录
-e expire_date用户终止日期。日期指定格式为 MM/DD/YY
-f inactive_days用户过期几日后永久停权。当值为0时用户则立刻被停权。而当值为-1时表示关闭此功能,预设值为-1
-g initial_group指定新用户所属的用户组。用户组名须为系统现有存在的名称※
-G group,[…]指定新用户为多个不同用户组的成员。每个用户组使用","逗号分隔。用户组名同-g选项的限制。默认值为用户的起始用户组
-m创建并指定用户家日录,如家目录不存在
-M不建立用户家目录,优先于/ete/login.defs 文件的设定。一般创建虚拟用户时不建立家目录,部署网络服务时需要创建虚拟用户※
-n默认情况用户的用户组与用户的名称会相同。如果加了-参数,就不会生成和用户同名的用户组了
-s shell用户登入后使用的解释器名称,默认为bash※
-u uid指定用户ID值,即所谓的UID※

正常报错

-bash-4.1$ ##缺少用户环境变量所致。

范例14-1:使用oldboy用户登录到Linux系统后,发现提示符为如下所示异常情况,

请问如何恢复到正常的Linux命令行提示符情况?

-bash-4.1$

-bash-4.1$

-bash-4.2$ cp /etc/skel/.bash*  .
-bash-4.2$ ls -la
总用量 12
drwx------. 2 oldboy oldboy  62 630 01:32 .
drwxr-xr-x. 8 root   root    85 630 01:17 ..
-rw-r--r--. 1 oldboy oldboy  18 630 01:32 .bash_logout
-rw-r--r--. 1 oldboy oldboy 193 630 01:32 .bash_profile
-rw-r--r--. 1 oldboy oldboy 231 630 01:32 .bashrc
-bash-4.2$ 重新登录即可

root用户处理:

[root@oldboy oldboy]# \cp /etc/skel/.bash*  .
[root@oldboy oldboy]# chown -R oldboy.oldboy /home/oldboy
[root@oldboy oldboy]# su - oldboy
上一次登录:日 630 01:31:25 CST 2030pts/0 上
[oldboy@oldboy ~]$ 

5)添加用户指定属于其他用户组(-g)

[root@oldboy ~]# useradd  test5 -g root #添加用户属于root组。
[root@oldboy ~]# id test5
uid=5004(test5) gid=0(root)=0(root)

6)添加用户设置过期时间(-e)

企业应用:给非运维人员设置用户登录的固定期限,到期了自动无法登陆。

[root@oldboy ~]# date
2030年 05月 18日 星期六 12:07:59 CST
[root@oldboy ~]# useradd -e "2030/05/30" test6
[root@oldboy ~]# passwd test6
更改用户 test6 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@oldboy ~]# date -s "2030/06/01"
2030年 06月 01日 星期六 00:00:00 CST

[root@oldboy ~]# ssh test6@127.0.0.1 #SSH客户端类似xshell。
test6@127.0.0.1's password: 
Your account has expired; please contact your system administrator
Authentication failed.

7)添加用户不创建家目录(-M)

配合创建虚拟用户

useradd -s /sbin/nologin test3 -M

总结:

-u 指定UID

-g 指定属于的组

-e 指定过期时间

-d 指定家目录

-M 不创建家目录

-s 指定登录的解释器

1.4.2 usermod 修改用户

-u 指定UID

-g 指定属于的组

-e 指定过期时间

-d 指定家目录

-M 不创建家目录

-s 指定登录的解释器

1)修改test1的UID

[root@oldboy ~]# id test1
uid=1001(test1) gid=1001(test1)=1001(test1)
[root@oldboy ~]# usermod -u 10001 test1
[root@oldboy ~]# id test1
uid=10001(test1) gid=1001(test1)=1001(test1)
UID已改,组ID没改。

2)修改test2属于的新组root

[root@oldboy ~]# usermod -g root test2
[root@oldboy ~]# id test2
uid=5000(test2) gid=0(root)=0(root)

3)修改过期时间为2031/7/18

[root@oldboy ~]# id test6
uid=5005(test6) gid=5005(test6)=5005(test6)
[root@oldboy ~]# chage -l test6 #查看密码的属性,间接看/etc/shadow内容
最近一次密码修改时间					:5月 18, 2030
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:5月 30, 2030
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7

[root@oldboy ~]# usermod -e "2031/7/18" test6 #修改过期时间为2031/7/18
[root@oldboy ~]# chage -l test6
最近一次密码修改时间					:5月 18, 2030
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:7月 18, 2031
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7

4)更改test3解释器为/bin/bash(-s)

[root@oldboy ~]# grep test3 /etc/passwd
test3:x:5001:5001::/home/test3:【/sbin/nologin】

[root@oldboy ~]# usermod -s /bin/bash test3
[root@oldboy ~]# grep test3 /etc/passwd
test3:x:5001:5001::/home/test3:【/bin/bash】

1.4.3 userdel用户删除

-r 删除家目录,有风险的。

[root@oldboy ~]# userdel -r test6
[root@oldboy ~]# ls -l /home/
总用量 0
drwx------. 3 oldboy oldboy 121 530 21:01 oldboy
drwx------. 2  10001   1001  62 518 11:47 test1
drwx------. 2 test3  test3   62 518 11:55 test3
drwxr-xr-x. 2 root   root     6 630 00:52 test4
drwx------. 2 test5  root    62 518 12:06 test5

企业应用:人员离职,他的用户怎么管?

a.userdel -r 离职人员 #容易把离职人员数据删除。不明智

b.userdel 离职人员用户名 #家目录保留。

c.设置过期时间,/etc/passwd注释掉。

编辑/etc/passwd注释掉test5,生产场景推荐。

#test5:x:5004:0::/home/test5:/bin/bash
"/etc/passwd" 26L, 1172C 已写入                                           
[root@oldboy ~]# su - test5
su: user test5 does not exist

1.4.4 useradd命令3个配置文件

和创建用户相关特殊的有3个

/etc/default/useradd ##创建用户命令useradd的配置文件

/etc/skel ##创建用户环境变量原始文件存放地。

/etc/login.defs ##创建用户系统配置,对应文件。

  1. /etc/skel 用户环境变量原始文件存放地

每个用户家目录默认都会有.bash_logout .bash_profile .bashrc,

创建用户的同时,从/etc/skel里复制到/home/用户名下的,如果这几个文件丢失

就会出现提示符问题:-bash-4.1$

[root@oldboy ~]# useradd test7
[root@oldboy ~]# su - test7
[test7@oldboy ~]$ pwd
/home/test7
[test7@oldboy ~]$ ls -al
总用量 12
drwx------. 2 test7 test7  62 630 01:17 .
drwxr-xr-x. 8 root  root   85 630 01:17 ..
-rw-r--r--. 1 test7 test7  18 41 2020 .bash_logout
-rw-r--r--. 1 test7 test7 193 41 2020 .bash_profile
-rw-r--r--. 1 test7 test7 231 41 2020 .bashrc

创建用户的时候为什么会从/etc/skel下面拷贝环境变量。

/etc/default/useradd ##创建用户命令useradd的配置文件

useadd 相当于你,/etc/default/useradd 你媳妇。

备份:

[root@oldboy ~]# cp /etc/default/useradd{,.ori}
[root@oldboy ~]# cp /etc/default/useradd /etc/default/useradd.ori
[root@oldboy ~]# cat /etc/default/useradd
useradd defaults file
GROUP=100
HOME=/opt           #把默认/home/修改为/opt
INACTIVE=-1
EXPIRE="2031/12/31"
SHELL=/sbin/nologin #默认/bin/bash,修改为/sbin/nologin。
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

useradd -D 修改/etc/default/useradd里面配置。

[root@oldboy ~]# useradd -D -s /sbin/nologin
[root@oldboy ~]# useradd test7
useradd:用户“test7”已存在
[root@oldboy ~]# useradd test8
[root@oldboy ~]# tail -1 /etc/passwd
test8:x:5006:5006::/opt/test8:/sbin/nologin
[root@oldboy ~]# chage -l test8
最近一次密码修改时间					:6月 29, 2030
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7

范例14-1:使用oldboy用户登录到Linux系统后,发现提示符为如下所示异常情况,

请问如何恢复到正常的Linux命令行提示符情况?

-bash-4.1$
-bash-4.1$

解答:环境变量文件丢失问题

-bash-4.2$ cp /etc/skel/.bash*  .
-bash-4.2$ ls -la
总用量 12
drwx------. 2 oldboy oldboy  62 630 01:32 .
drwxr-xr-x. 8 root   root    85 630 01:17 ..
-rw-r--r--. 1 oldboy oldboy  18 630 01:32 .bash_logout
-rw-r--r--. 1 oldboy oldboy 193 630 01:32 .bash_profile
-rw-r--r--. 1 oldboy oldboy 231 630 01:32 .bashrc
-bash-4.2$ 重新登录即可

root用户处理:

[root@oldboy oldboy]# \cp /etc/skel/.bash*  .
[root@oldboy oldboy]# chown -R oldboy.oldboy /home/oldboy
[root@oldboy oldboy]# su - oldboy
上一次登录:日 630 01:31:25 CST 2030pts/0 上
[oldboy@oldboy ~]$ 
  1. /etc/login.defs ##创建用户系统配置,对应文件
#Password aging controls:
...忽略若干注释行...
PASS_MAX_DAYS   99999    #<==密码最长可以使用的天数。
PASS_MIN_DAYS   0        #<==更换密码的最小天数。
PASS_MIN_LEN    5        #<==密码的最小长度。
PASS_WARN_AGE   7        #<==密码失效前提前多少天数开始警告。
# Min/max values forautomatic uid selection in useradd
UID_MIN         1000 #<==默认最小 UID 为 1000,也就是说添加用户时,UID 是从 1000 开始的。
UID_MAX         60000 #<==默认最大 UID 为 60000。
#System accounts
SYS_UID_MIN     201
SYS_UID_MAX     999
# Min/max values for automatic gid selection in groupadd
GID_MIN         1000  #<==默认最小 GID为1000,也就是说添加用户时,GID 是从 1000 开始的。
GID_MAX         60000 #<==默认最大 GID为60000。
  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值