当前位置:   article > 正文

03 linux用户权限和软件安装与管理_linux用户权限管理用的什么lib库

linux用户权限管理用的什么lib库


linux基础传送门:


linux用户权限和软件安装与管理

1. 用户、用户组、其他人概述

  下面介绍用户、用户组、其他人的概念

1638084178412

  有个人叫张小猪,他是张小猪家的人,和王大毛家没有关系,此时无法进入王大毛家;如果张小猪和王三毛成了好朋友,他就可以通过王三毛进入王家。那么这个张小猪就是王家所谓的其他人(Others) 。

  若某一用户对于一个与他毫无关系的用户组而言,就可以被视作其他用户。 在这有一个特殊用户需要提及一下。Linux 中的 root 用户(上图中的天神),在整个Linux 系统中拥有最大的权限,理论上能干任何事情。

1.1 用户

  由于 Linux 是多用户,多任务的操作系统,为此,会经常有多个用户同时使用某一台主机。为了考虑每个用户的隐私安全以及每个用户特殊的工作环境,设计了文件所有者这个概念。 而文件所有者就是文件所属的用户。

  Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

1.2 用户组

  用户组是为了团队开发资源而设计的。在 Linux 下我们可以进行简单的文件权限设置,就能限制非自己团队的用户权限,同时,我们还可以设置个人私密文件,使团队内其他成员无法获取私人的文件内容。除此之外,若是有项目主管想监督这两个团队的开发进度,需要查看两个团队文件的权限,你便可以设置主管账号,同时支持这两个用户组。换句话说:每个账号都可以有多个用户组的支持。

  在同一个用户组中,可以通过设置文件的权限,将一些文件设置为“私有的”(只能自己访问和使用),同用户组的其他用户无法访问和使用。 而通过设置用户组共享的,则可让大家共同分享。

d rwx r-x ---
  • 1

2. 用户和用户组管理

2.1 Linux用户身份与用户组记录的文件

  在 Linux 系统当中,默认情况下所有的系统上的账号信息都记录在/etc/passwd 这个文件内(包括 root 用户)。而个人密码记录在/etc/shadow 这个文件内。所有Linux 的组名都记录在/etc/group 内。这三个文件非常重要,不要轻易做变动。用户身份与用户组的概念,能够帮助我们的 Linux 多任务环境变得更为容易管理。
image-20211205155936699
image-20211205160038930 image-20211205160132362

  实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改
  • 用户口令的管理
  • 用户组的管理

2.2 Linux系统用户账号的管理

  用户账号的管理工作主要涉及到用户账号的添加、修改和删除。 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录 Shell 等资源。刚添加的账号是被锁定的,无法使用。

  1. 添加新的用户账号使用 useradd 命令,其命令格式为:useradd 选项用户名

    增加用户账号就是在/etc/passwd 文件中为新用户增加一条记录,同时更新其他 系统文件如/etc/shadow,/etc/group 等。

    参数介绍:

    • -c :指定一段注释性描述
    • -d :指定用户主目录,如果此目录不存在,则同时使用-m 选项,可以创建主目录。不指定的话默认在/home目录下创建同名的用户组作为家目录
    • -g :指定用户所属的用户组
    • -G :指定用户所属的附加组。
    • -s :指定用户的登录 Shell
    • -u :指定用户的用户号,如果同时有-o 选项,则可以重复使用其他用户的标识号。

    实例1:添加用户 lucy,并设置他的个人主目录

    [root@node1 ~]# useradd –d /usr/lucy -m lucy

    此命令创建了一个用户 lucy,其中-d 和-m 选项用来为登录名 lucy 产生一个主目录/usr/lucy(/home 为默认的用户主目录所在的父目录)。

    实例2:创建用户 gen,指定他属于主用户组“lucy”,附加组“adm、root”,已经登录

    的 Shell 是/bin/sh

    [root@node1 ~]# useradd -s /bin/sh -g lucy -G adm,root gen

    此命令新建了一个用户 gen,该用户的登录 Shell 是 /bin/sh,它属于lucy 用户组,同时又属于 adm 和 root 用户组,其中 lucy 用户组是其主组。
    image-20211205162824510

  2. 修改账号

      修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户 组、登录 Shell 等。

      修改已有用户的信息使用 usermod 命令,其格式如下:usermod 选项用户名 。常用的选项包括-c, -d, -m, -g, -G, -s, -u 以及-o 等,这些选项的意义与useradd 命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用选项:-l 新用户名 这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

    实例1:将用户gen的登录Shell修改为bash,主目录改为/home/z,用户组改为root。

    usermod -s /bin/bash –g root genimage-20211205171423542

  3. 删除帐号

      如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

      删除一个已有的用户账号使用 userdel 命令,其格式如下: userdel 选项用户名 。常用的选项是-r,它的作用是把用户的主目录一起删除。 image-20211205172308603
    image-20211205172402321
    ​ 此 命 令 删 除 用 户 liujie在 系 统 文 件 中 ( 主 要 是 /etc/passwd, /etc/shadow, /etc/group 等)的记录。

​ 此时,/home家目录下的主目录还有删除,若还要创建该用户,需要先强制删除该主目录再进行创建用户 image-20211205173122348

  1. 用户口令的管理

      用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定, 无法使用,必须为其指定口令后才可以使用,即使是指定空口令。 指定和修改用户口令的 Shell 命令是 passwd。超级用户可以为自己和其他用户指定口令, 普通用户只能用它修改自己的口令。命令的格式为: passwd 选项用户名

    参数说明:

    • -l(lock) 锁定口令,即禁用账号。

    • -u(unlock) 口令解锁。

    • -d(HOME_DIR) 使账号无口令。

    • -f 强迫用户下次登录时修改口令。

      普通用户修改自己的口令时,passwd 命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时, 就不需要知道原口令。 为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用 8 位长的口令,口令中 包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。 为用户指定空口令时,执行下列形式的命令:
    image-20211205173939418
    ​ 如果不跟用户名,则默认修改当前用户的密码。

2.3 Linux系统用户组的管理

  每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。 不同 Linux 系统对用户组的规定有所不同,如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

  1. 增加一个新的用户组使用groupadd命令

    其命令格式为:groupadd 选项用户组

    参数选项:

    • -g :指定新用户组的组标识号(GID)
    • -o :一般与-g 选项同时使用,表示新用户组的 GID 可以与系统已有用户组的 GID 相同

    实例 1:添加用户组 group1:groupadd group1

    [root@node1 ~]# groupadd group1
    [root@node1 ~]# cat /etc/group
    root:x:0:gem,gen
    bin:x:1:bin,daemon
    daemon:x:2:bin,daemon
    sys:x:3:bin,adm
    adm:x:4:adm,daemon,gem,gen
    tty:x:5:
    disk:x:6:
    lp:x:7:daemon
    mem:x:8:
    kmem:x:9:
    wheel:x:10:
    mail:x:12:mail,postfix
    uucp:x:14:
    man:x:15:
    games:x:20:
    gopher:x:30:
    video:x:39:
    dip:x:40:
    ftp:x:50:
    lock:x:54:
    audio:x:63:
    nobody:x:99:
    users:x:100:
    floppy:x:19:
    vcsa:x:69:
    utmp:x:22:
    utempter:x:35:
    cdrom:x:11:
    tape:x:33:
    dialout:x:18:
    saslauth:x:76:
    postdrop:x:90:
    postfix:x:89:
    fuse:x:499:
    sshd:x:74:
    apache:x:48:
    ntp:x:38:
    lucy:x:504:
    liujie:x:506:
    group1:x:507:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    此命令向系统中增加了一个新组 group1,新组的组标识号是在当前已有的最大组标识号的基础上加 1。

    实例 2:向系统中增加了一个新组 group2,同时指定新组的组标识号是 101

    groupadd -g 101 group2
    
    • 1
    [root@node1 ~]# groupadd -g 101 group2
    [root@node1 ~]# cat /etc/group
    root:x:0:gem,gen
    bin:x:1:bin,daemon
    daemon:x:2:bin,daemon
    sys:x:3:bin,adm
    adm:x:4:adm,daemon,gem,gen
    tty:x:5:
    disk:x:6:
    lp:x:7:daemon
    mem:x:8:
    kmem:x:9:
    wheel:x:10:
    mail:x:12:mail,postfix
    uucp:x:14:
    man:x:15:
    games:x:20:
    gopher:x:30:
    video:x:39:
    dip:x:40:
    ftp:x:50:
    lock:x:54:
    audio:x:63:
    nobody:x:99:
    users:x:100:
    floppy:x:19:
    vcsa:x:69:
    utmp:x:22:
    utempter:x:35:
    cdrom:x:11:
    tape:x:33:
    dialout:x:18:
    saslauth:x:76:
    postdrop:x:90:
    postfix:x:89:
    fuse:x:499:
    sshd:x:74:
    apache:x:48:
    ntp:x:38:
    lucy:x:504:
    liujie:x:506:
    group1:x:507:
    group2:x:101:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  2. 如果要删除一个已有的用户组,使用 groupdel命令,其命令格式为:

    groupdel 用户组
    
    • 1

    实例 1:从系统中删除组 group1

    [root@node1 ~]# groupdel group1
    [root@node1 ~]# cat /etc/group
    root:x:0:gem,gen
    bin:x:1:bin,daemon
    daemon:x:2:bin,daemon
    sys:x:3:bin,adm
    adm:x:4:adm,daemon,gem,gen
    tty:x:5:
    disk:x:6:
    lp:x:7:daemon
    mem:x:8:
    kmem:x:9:
    wheel:x:10:
    mail:x:12:mail,postfix
    uucp:x:14:
    man:x:15:
    games:x:20:
    gopher:x:30:
    video:x:39:
    dip:x:40:
    ftp:x:50:
    lock:x:54:
    audio:x:63:
    nobody:x:99:
    users:x:100:
    floppy:x:19:
    vcsa:x:69:
    utmp:x:22:
    utempter:x:35:
    cdrom:x:11:
    tape:x:33:
    dialout:x:18:
    saslauth:x:76:
    postdrop:x:90:
    postfix:x:89:
    fuse:x:499:
    sshd:x:74:
    apache:x:48:
    ntp:x:38:
    lucy:x:504:
    liujie:x:506:
    group2:x:101:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

​ 如果用户组下有用户是不能被删除的
image-20211205193750115
3. 修改用户组的属性使用groupmod 命令,其命令格式为:

groupmod 选项用户组
  • 1

参数选项

  • -g:为用户组指定新的组标识号。
  • -o :与-g 选项同时使用,用户组的新 GID 可以与系统已有用户组的 GID 相同。
  • -n:新用户组将用户组的名字改为新名字

实例 1:将组 group2 的组标识号修改为 102

[root@node1 ~]# groupmod -g 102 group2
[root@node1 ~]# cat /etc/group
root:x:0:gem,gen
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon,gem,gen
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:mail,postfix
uucp:x:14:
man:x:15:
games:x:20:
gopher:x:30:
video:x:39:
dip:x:40:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
floppy:x:19:
vcsa:x:69:
utmp:x:22:
utempter:x:35:
cdrom:x:11:
tape:x:33:
dialout:x:18:
saslauth:x:76:
postdrop:x:90:
postfix:x:89:
fuse:x:499:
sshd:x:74:
apache:x:48:
ntp:x:38:
lucy:x:504:
liujie:x:506:
group2:x:102:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

实例 2:将组 group2 的标识号改为 10000,组名修改为 group3

[root@node1 ~]# groupmod -g 10000 -n group3 group2
[root@node1 ~]# cat /etc/group
root:x:0:gem,gen
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon,gem,gen
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:mail,postfix
uucp:x:14:
man:x:15:
games:x:20:
gopher:x:30:
video:x:39:
dip:x:40:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
floppy:x:19:
vcsa:x:69:
utmp:x:22:
utempter:x:35:
cdrom:x:11:
tape:x:33:
dialout:x:18:
saslauth:x:76:
postdrop:x:90:
postfix:x:89:
fuse:x:499:
sshd:x:74:
apache:x:48:
ntp:x:38:
lucy:x:504:
liujie:x:506:
group3:x:10000:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  1. 如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令 newgrp 切换到其他用户组,这个命令的参数就是目的用户组。其命令格式为:

    newgrp 目的用户组
    
    • 1

2.4 与用户账号、用户组有关的系统文件详讲

  完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括 /etc/passwd, /etc/shadow, /etc/group 等。下面分别介绍这些文件的内容:

  1. /etc/passwd

    /etc/passwd 文件是用户管理工作涉及的最重要的一个文件。 Linux 系统中的每个用户都在/etc/passwd 文件中有一个对应的记录行,它记录了这个用户的一些基本属性。 这个文件对所有用户都是可读的

    [root@node1 ~]# cat /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
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    apache:x:48:48:Apache:/var/www:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    gem:x:503:0::/home/gem:/bin/bash
    lucy:x:504:504::/usr/lucy:/bin/bash
    gen:x:505:0::/home/gen:/bin/bash
    liujie:x:506:506::/home/liujie:/bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    从上面的例子我们可以看到,/etc/passwd 中一行记录对应着一个用户,每行记录又被冒号(:)分隔为 7 个字段,

    格式和具体含义如下:

    用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
    
    • 1
    • "用户名"是代表用户账号的字符串。

      通常长度不超过 8 个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(

      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/402897
推荐阅读
相关标签