云计算基础:第二章 Linux用户管理

前言 用户/组基本概念

在linux系统中用户是分角色的,在linux系统中,由于角色不同,权限和所完成的任务也不同。对于linux系统来说,用户的角色是通过UID和GID识别的

在linux系统中,一个UID是唯一标识一个系统用户的账号(相当于我们的身份证)。用户系统账号的名称(如Ian)其实是给人看的,linux系统能够识别的仅仅是UID和GID这样的数字。用户的UID就相当于我们的身份证一样,用户名就相当于我们的名字

UID User Identify用户ID,相当于身份证。
GID Group Identify 组ID,相当于所在的家庭或者学校。

用户

Linux是一个多用户、多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过账户进入系统。

用户分为3类:
1、超级用户
root,UID为0的用户就是超级用户。
2、虚拟用户
存在linux中,为满足文件或程序运行的需要而创建的,不能登录,不能使用。
(UID GID范围1~499)
这里写图片描述

这里写图片描述

3、普通用户
管理员root创建的用户。(UID GID范围500~65535)
这里写图片描述

用户组

linux系统中的用户(group)就是具有相同特征的用户(user)集合。
有时我们需要让多个用户具有相同的权限,比如查看、修改某一文件或目录,这种需求在授权时就很难实现。如果使用用户组就方便多了,只需要把授权的用户都加入到同一用户组里,然后通过修改该文件或目录对应的用户组的权限,这样用户组下的所有用户对该文件或目录就会具有相同的权限。

添加用户的时候没有创建组,会自动创建一个和用户名相同的组。
这里写图片描述

用户和用户组的对应关系

一个用户可以存在于多个组中。
用户和用户组的对应关系有:一对一、一对多、多对一、多对多。

用户及用户组配置文件介绍

linux系统下的账户文件主要有:
/etc/passwd(用户账号文件)、/etc/shadow(用户账号密码文件)、/etc/group(用户组文件)、/etc/gshadow(组密码文件)。

添加一个用户,这四个文件,每个都增加了一行。
这里写图片描述

用户的配置文件/etc/passwd
/etc/passwd文件中每行定义一个用户账户,有多少行就表示多少个账号。每行各内容之间又通过“:”号划分了多个字段,共7部分。
root:x:0:0:root:/root:/bin/bash
这里写图片描述

管理用户命令汇总

命令 说明
useradd 在系统中添加用户
userdel 可删除用户及相关用户的配置或文件
删除一个用户时最好带上-r参数
passwd 可为用户设置密码
change 修改用户密码有效期限
usermod 修改登录名、用户的家目录
id 查看用户的UID、GID及所归属的用户组
su 用户角色切换工具
sudo sudo后面直接接命令执行,如
sudo ls /root,不需要root密码就可以执行只有root才能执行相应的命令
visudo visudo配置sudo权限的编辑命令

用户作用

查看当前登陆的用户信息:

[root@localhost ~]#id -- uid=0(root) gid=0(root) groups=0(root)

查看文件的owner:

[root@localhost ~]#ll/home/
drwx------. 15 kk4real kk4real 4096 7月  21 17:15 kk4real

查看运行进程的username:

[root@localhost ~]## ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128360  7092 ?        Ss   14:56   0:05 /usr/lib/systemd/systemd --switched-root -
root          2  0.0  0.0      0     0 ?        S    14:56   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   14:56   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    14:56   0:05 [ksoftirqd/0]

接下来,我们来查看一下用户组信息存储的文件。

1. 用户组信息存储的文件

1.1用户基本信息文件

命令:[root@localhost ~]# cat /etc/passwd
     root :x:0  :0  :root:/root:/bin/bash

(冒号起分割作用 此处将 分割为7列字段)注意:不能用vim的方式改这个文件,主要是来观察

1.2用户密码信息文件

[root@localhost ~]#cat /etc/shadow(9列)
root:$1$MYG2N:15636:0:99999:7:   :   :    

此处理解即可

9列的对应解释

1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,如果为空(!!),则对应用户没有口令,登录时不需要口令;
星号代表帐号被锁定;
双叹号表示这个密码已经过期了。
6 6 开头的,表明是用SHA-512加密的,
1 1 表明是用MD5加密的
2 2 是用Blowfish加密的
5 5 是用 SHA-256加密的。

3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。(软限制。到期后多少天就不能用账号了。)
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。(硬限制。)
9) 保留

1.3组信息文件

[root@localhost ~]# cat /etc/group 
root: x  :   0:
组名:组密码:组ID:组成员

2.用户/组管理

2.1用户

创建用户 未指定选项

[root@localhost ~]# useradd user01 

[root@localhost ~]# id     user01
uid=1001(user01) gid=1001(user01)=1001(user01)

用户编号=具体数字(用户名) 组编号=具体数字(组名) 组=组ID(成员名字)
小结:
如果创建一个用户时,未指定任何选项,系统会创建一个和用户名相同的组作为用户的Primary Group.

创建用户 指定选项

  • 创建用户user02,指定uid为1503
[root@localhost ~]# useradd user02 -u 1503
  • 创建用户user03,指定家目录
[root@localhost ~]# useradd user02 -d /user03
  • 删除用户 user02
[root@localhost ~]# userdel  user02 

连同用户user02主目录一块删除:

[root@localhost ~]# userdel -r user02 

-f 强制删除

修改用户密码
方法一:root修改其他用户(user01)密码

[root@localhost ~]# passwd user01

方法二:用户(user01)登录,自己修改密码

[root@localhost ~]# passwd

其他选项管理

  • 创建用户user03但不设登陆权限
[root@localhost ~]#useradd user03 -s /sbin/nologin

也使用 /etc/nologin 禁止除root以外所有用户登录。

  • 修改用户的UID
[root@localhost ~]# usermod -u 5200 babyjin
[root@localhost ~]# id babyjin
uid=5200(babyjin) gid=1003(babyjin) 组=1003(babyjin)

2.2用户组

操作:

  • 创建一个名为 gege的组
[root@localhost ~]# groupadd gege

查看组信息的后三行:

[root@localhost ~]# tail -3 /etc/group
shuaige:x:8888:
meinv:x:6666:
gege:x:8889:

说明该组已经创建但是和任何用户都没有关系。

  • 创建组group1并且指定GID:6888
[root@localhost ~]# groupadd group1 -g 6888
[root@localhost ~]# tail -3 /etc/group
meinv:x:6666:
gege:x:8889:
group1:x:6888:
  • 查看组信息;
[root@localhost ~]# grep group1 /etc/group
group1:x:6888:
  • 删除group1:
[root@localhost ~]# groupdel group1 
[root@localhost ~]# tail -3 /etc/group
shuaige:x:8888:
meinv:x:6666:
gege:x:8889:

删除成功

分类:

基本组和附加组

  • 基本组:随用户创建,自动创建的同名组。

  • 附加组:用户加入的其他组。

我们通过组成员管理来理解这个基本组和附加组的概念。

组成员管理

  • 查看用户原先信息
[root@localhost ~]# id kk4real
uid=1000(kk4real) gid=1000(kk4real)=1000(kk4real)

我们看到,该用户在创建的过程中自动加入了一个id为1000,同名为kk4real的组 ,此时这个组就是基本组,随着用户自动创建。

  • 将用户kk4real追加到shuaige组
[root@localhost ~]# usermod -aG shuaige kk4real
[root@localhost ~]# tail -3 /etc/group
shuaige:x:8888:kk4real
meinv:x:6666:
gege:x:8889:

我们再次查看用户信息:

[root@localhost ~]# id kk4real
uid=1000(kk4real) gid=1000(kk4real)=1000(kk4real),8888(shuaige)

此时我们看到shuaige组已经多了一个kk4real,用户信息里 8888(shuaige)的组 对于kk4real而言就是附加组。

  • 将用户移除组
[root@localhost ~]# gpasswd -d kk4real shuaige
正在将用户“kk4real”从“shuaige”组中删除
[root@localhost ~]# id kk4real
uid=1000(kk4real) gid=1000(kk4real)=1000(kk4real)

删除成功。

3.提权

3.1永久提权 Switching users with su

[user01@localhost ~]$ id user01
uid=1003(user01) gid=1003(user01)=1003(user01)
[user01@localhost ~]$ whoami
user01

切换用户

[alice@localhost ~]$ useradd u1
-bash: /usr/sbin/useradd: 权限不够
[alice@localhost ~]$ su       -         root
password:
[root@qianfeng ~]# useradd u1
成功添加

3.2临时提权Running commands as root with sudo

sudu简介:将当前用户切换到超管用户下,然后以超级管理员的身份执行命令,执行完成后,直接退出到当前用户。

具体工作过程如下:

当用户执行sudo时,系统主动寻找/etc/sudoers文件,判断该用户是否具有执行sudo的权限

  • 当确定用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
  • 若密码输入成功,则开始执行sudo后续的命令

sudo配置文件语法

user MACHINE=COMMANDS

用户登录的主机=(可以变换的身份)可以执行的命令

示例:创建一个用户user100,使其拥有root权限。

1.以root身份,授权普通用户user100

我们首先查看系统的授权文件

[root@localhost ~]# vim /etc/sudoers
**
%wheel         ALL=(ALL)             ALL

**

可以看到系统授权名为wheel的用户组,不输入密码,可以使用所有命令。

2.创建一个名为user100的账号并加入wheel组,并设定登陆密码。

[root@localhost ~]# useradd user100 -G wheel
[root@localhost ~]# id user100
uid=5203(user100)gid=5203(user100)=5203(user100),10(wheel)
[root@localhost ~]# passwd user100

3.切换用户登陆,尝试创建用户gouogu100

[root@localhost ~]# su user100
[user100@localhost /]$ useradd gougou100
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。

此时提醒没有权限。

尝试在代码前添加sudo

[user100@localhost /]$ sudo useradd gougou100
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。
[sudo] user100 的密码:
[user100@localhost /]$ id gougou100
uid=5204(gougou100) gid=5204(gougou100)=5204(gougou100)

此时创建成功

猜你喜欢

转载自blog.csdn.net/weixin_44898311/article/details/107569347