Linux CentOS 8(用户与组相关权限管理实验)

Posted 正月十六工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux CentOS 8(用户与组相关权限管理实验)相关的知识,希望对你有一定的参考价值。


Linux CentOS 8(用户与组相关权限管理实验)


目录


一、项目介绍

本节将介绍 Linux (Centos8)中用户与组的相关权限管理。

二、相关概念

2.1 用户管理简介

在 Linux 中的每个用户必须属于一个组,不能独立于组外。并且把用户分为三个基本组,所有者(user),所在组(group),其它组(other)来分配基本的权限。

用户通过/etc/passwd来查看用过的用户名获取用户的uid,通过/etc/group来获取用户所属组的gid,系统只能通过id号来识别用户。所以,越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在 Linux 中主要是通过用户配置文件来查看和修改用户的信息。

2.2 在 Linux 中每个文件的所有者、所在组、其它组的概念

所有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者。用ls ‐ahl 命令可以看到文件的所有者,也可以使用chown 用户名 文件名来修改文件的所有者。
文件所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组,用ls ‐ahl 命令可以看到文件的所有组,也可以使用chgrp 组名文件名来修改文件所在的组。
其它组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。

三、任务操作

任务1- 查看文件的所有者

通过ls ‐ahl 命令可以看到文件的所有者,如下所示。

[root@localhost ~]# ls -ahl
total 32K
dr-xr-x---.  2 root root  135 Jun  7 04:04 .
dr-xr-xr-x. 17 root root  224 Jun  3 22:26 ..
drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc
-rw-------.  1 root root 1.2K Jun  3 22:33 anaconda-ks.cfg
-rw-r--r--.  1 root root    0 Jun 20 14:10 a.txt
-rw-------.  1 root root 4.5K Jun  7 23:16 .bash_history
-rw-r--r--.  1 root root   18 May 11  2019 .bash_logout
-rw-r--r--.  1 root root  176 May 11  2019 .bash_profile
-rw-r--r--.  1 root root  176 May 11  2019 .bashrc
-rw-r--r--.  1 root root  100 May 11  2019 .cshrc
-rw-r--r--.  1 root root  129 May 11  2019 .tcshrc

任务2- 查看文件权限

文件权限相关字符的理解:

drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc
  • 第一个字符代表文件类型,文件为(-)、目录为(d),链接为(l)
  • 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
    第一组rwx:文件所有者的权限是读、写和执行
    第二组r-x:与文件所有者同一组的用户的权限是读、执行但不能写
    第三组r-x:不与文件所有者同组的其他用户的权限是读和执行但不能写,也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
  • 2 表示连接的文件数
  • root 表示用户
  • root 表示用户所在的组
  • 6 表示文件大小(字节)
  • Jun 20 14:10 表示最后修改日期
  • abc 表示文件名

相关字符说明,如表1所示。

表1 相关字符理解
模式名字说明
r设置为可读权限
w设置为可写权限
x执行权限设置为可执行权限
X特殊执行权限只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
ssetuid/gid当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t粘贴位设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

任务3- 查看用户信息

通过head -5 /etc/passwd 命令可以看到/etc/passwd下前5位用户的信息,如下所示。

[root@localhost ~]# head -5 /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

相关字段的理解如下:

root:x:0:0:root:/root:/bin/bash
  • 字段1:用户名 --> root
  • 字段2:密码占位符 --> x (这里都是用x代替)
  • 字段3:uid,用户id --> 0
  • 字段4:gid ,组id --> 0
  • 字段5:用户描述信息 --> root
  • 字段6:家目录 --> /root
  • 字段7:登录 shell (用户登陆shell ,当为/bin/bash表示可以登陆,/sbin/nologin表示不被授权登陆)

任务4- 查看密码信息

通过tail -5 /etc/shadow 命令可以看到/etc/shadow下后5位用户的密码信息,如下所示。

[root@localhost ~]# tail -5 /etc/shadow
jan16:$6$bqQsEXZq7A7tYhTx$ufDrTuSYHOmOESsCdS./j/0DZ2zxUlwTj/slkwnxhtIAuz7AuV23jIzeJRe82ixyFWp27rEZDhrcgKVN5U6DK/:18784:0:99999:7:::
jan15:!!:18784:0:99999:7:::
jan14ll:!!:18784:0:99999:7:::
user01:!!:18784:0:99999:7:::
user_02:$6$Z7QgOBz5F29oBhDX$zyhWxZyVD88t0Lt.ccPJDtm0S3LR5gRzTX7IvOYVuSSasRZXyTRllUO6Z42xCOO1aG7/wrVmrIdFhDUWX8Bxe/:18784:0:99999:7::18784:

相关字段的理解如下:

jan16:$6$bqQsEXZq7A7tYhTx$ufDrTuSYHOmOESsCdS./j/0DZ2zxUlwTj/slkwnxhtIAuz7AuV23jIzeJRe82ixyFWp27rEZDhrcgKVN5U6DK/:18784:0:99999:7:::
  • 字段1:用户名
  • 字段2:通过sha-512加密(二次加密,在经过第一次加密后,第二次加入随机数再次加密)的密码
  • 字段3:最后一次修改密码距离1970年1月1日的天数间隔
  • 字段4:密码最短有效期
  • 字段5:密码最长有效期
  • 字段6:密码过期前几天进行警告
  • 字段7:账户过期后,被锁定的天数
  • 字段8:账号失效时间距离1970年1月1日的天数间隔
  • 字段9:未分配功能
    其中,字段2是用户的密码位,如果是 * 表示该用户禁用,!! 表示用户密码未初始化,如果为空,表示空密码的,$表示经过加密。

任务5- 查看组信息

通过head -3 /etc/group 命令可以看到系统里前3个组的信息,如下所示。

[root@localhost ~]# head -3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

相关字段的理解如下:

root:x:0:
  • 字段1:组名称 --> root
  • 字段2:组密码占位符 --> x
  • 字段3:gid --> 0
  • 字段4:组成员
    注:一个用户只能有一个主要组,最多可以有31个附加组。主要组是用户创建文件时默认的所有组,附加组主要用于权限管理。不论用户属于哪个组,用户都能拥有该组的权限。

任务6- chage–设置用户密码相关权限

1. 查看“chage”的选项

[root@localhost ~]# chage -h
Usage: chage [options] LOGIN
Options:
  -d, --lastday LAST_DAY        set date of last password change to LAST_DAY
  -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -h, --help                    display this help message and exit
  -I, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -l, --list                    show account aging information
  -m, --mindays MIN_DAYS        set minimum number of days before password
                                change to MIN_DAYS
  -M, --maxdays MAX_DAYS        set maximum number of days before password
                                change to MAX_DAYS
  -R, --root CHROOT_DIR         directory to chroot into
  -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS

chage 命令常用选项,如表2所示。

表2 chage 命令常用选项
选项说明
-m密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M密码保持有效的最大天数。
-w用户密码到期前,提前收到警告信息的天数。
-E帐号到期的日期。过了这天,此帐号将不可用。
-d上一次更改的日期。
-i停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

2. 查看root账户密码策略信息

[root@localhost ~]# chage -l user01
Last password change					: Jun 20, 2021  //最近一次密码修改时间
Password expires					: never  //密码过期时间  
Password inactive					: never  //密码失效时间
Account expires						: never  //帐户过期时间
Minimum number of days between password change		: 0  //两次改变密码之间相距的最小天数 
Maximum number of days between password change		: 99999  //两次改变密码之间相距的最大天数
Number of days of warning before password expires	: 7  //在密码过期之前警告的天数

3. 修改用户root密码过期时间

[root@localhost ~]# chage -l user01
Last password change					: Jun 20, 2021
Password expires					: Sep 16, 2021
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 88
Number of days of warning before password expires	: 7

4. 修改密码失效时间

[root@localhost ~]# chage -l user01
Last password change					: Jun 20, 2021
Password expires					: Sep 16, 2021
Password inactive					: Sep 21, 2021
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 88
Number of days of warning before password expires	: 7

从上述命令可以看到,在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。

任务7- chown–设置文件所有者和文件关联组

1. 查看“chown”的选项

[root@localhost ~]# chown --help
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
  or:  chown [OPTION]... --reference=RFILE FILE...
Change the owner and/or group of each FILE to OWNER and/or GROUP.
With --reference, change the owner and group of each FILE to those of RFILE.
  -c, --changes          like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --dereference      affect the referent of each symbolic link (this is
                         the default), rather than the symbolic link itself
  -h, --no-dereference   affect symbolic links instead of any referenced file
                         (useful only on systems that can change the
                         ownership of a symlink)
   ....
  -R, --recursive        operate on files and directories recursively

注:利用chown 命令可以将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 一般来说,这个指令仅限系统管理者(root)所使用,普通用户没有权限改变文件所属者及所属组。

chown 命令常用选项,如表3 所示。

表3 chown 命令常用选项的用法
选项说明
-R对目前目录下的所有文件与子目录进行相同的拥有者变更
-c若该文件拥有者确实已经更改,才显示其更改动作
-f若该文件拥有者无法被更改也不要显示错误讯息
-h只对于连结(link)进行变更,而非该 link 真正指向的文件
-v显示拥有者变更的详细资料
–help显示辅助说明
–version显示版本

2. 修改文件“abc”的所有者为“root”

[root@localhost ~]# ls -al // 查看所有文件信息
total 32
dr-xr-x---.  3 root   root  159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root  224 Jun  3 22:26 ..

drwxr-xr-x.  2 user01 root    6 Jun 20 14:10 abc

[root@localhost ~]# chown root abc  // 修改文件“abc”的所有者为“root
[root@localhost ~]# ls -al  
total 32
dr-xr-x---.  3 root root  159 Jun 20 14:10 .
dr-xr-xr-x. 17 root root  224 Jun  3 22:26 ..

drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc

3. 修改文件“abc”的拥有者和群组都为“user01”

[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root root  159 Jun 20 14:10 .
dr-xr-xr-x. 17 root root  224 Jun  3 22:26 ..

drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc

[root@localhost ~]# chown user01:user01 abc  //修改文件“abc”的拥有者和群组都为“user01
[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root   root    159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root    224 Jun  3 22:26 ..

drwxr-xr-x.  2 user01 user01    6 Jun 20 14:10 abc

4. 修改当前目录下的所有文件与子目录的拥有者和群组都为“user01”

[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 root root 6 Jun 20 16:19 a
-rw-r--r--. 1 root root 0 Jun 20 16:19 a.txt
-rw-r--r--. 1 root root 0 Jun 20 16:19 b.txt
-rw-r--r--. 1 root root 0 Jun 20 16:19 c.txt

[root@localhost abc]# chown -R user01:user01 *

[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 user01 user01 6 Jun 20 16:19 a
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 a.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 b.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 c.txt

5. 修改/home/jan的关联组为“1777”(test),不改变所有者

[root@localhost ~]# ll /home/
total 0
drwx------. 2    1666 group1  62 Jun  6 16:05 jan
drwx------. 2 jan14ll jan14ll 62 Jun  7 03:33 jan1
drwx------. 2    1002 root    62 Jun  6 16:31 jan13
drwx------. 2 jan_14  test    62 Jun  7 01:27 jan_14
[root@localhost ~]# chown :1777 /home/jan  //修改`/home/jan`的关联组为“1777”(test),不改变所有者
[root@localhost ~]# ll /home/
total 0
drwx------. 2    1666 test    62 Jun  6 16:05 jan

6 修改/home/jan的所有者为user01,不改变关联组

[root@localhost ~]# chown user01: /home/jan  //修改/home/jan的所有者为user01,不改变关联组
[root@localhost ~]# ll /home/
total 0
drwx------. 2 user01  group1  62 Jun  6 16:05 jan

任务8- chmod–改变文件或目录权限

1. 查看“chmod”的选项
通过chmod --help 命令可以查看“chmod”的选项,如下所示。

[root@localhost ~]# chmod --help
Usage: chmod [OPTION]... MODE[,MODE]... FILE...
  or:  chmod [OPTION]... OCTAL-MODE FILE...
  or:  chmod [OPTION]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.
  -c, --changes    like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --no-preserve-root  do not treat '/' specially (the default)
      --preserve-root    fail to operate recursively on '/'
      --reference=RFILE  use RFILE's mode instead of MODE values
  -R, --recursive        change files and directories recursively
      --help     display this help and exit
      --version  output version information and exit

chmod 命令常用选项,如表4 所示。

表4 chmod 命令常用选项的用法
选项说明
-c若该文件权限确实已经更改,才显示其更改动作
-f若该文件权限无法被更改也不显示错误讯息
-v显示权限变更的详细资料
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

2. 设置文件“a.txt”为所有人可读取

[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root   root    159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root    224 Jun  3 22:26 ..
drwxr-xr-x.  3 user01 user01   54 Jun 20 16:19 abc
-rw-------.  1 root   root   1211 Jun  3 22:33 anaconda-ks.cfg
--w-------.  1 root   root      0 Jun 20 14:10 a.txt

[root@localhost ~]# chmod a+r a.txt  //设置文件“a.txt”为所有人可读取

[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root   root    159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root    224 Jun  3 22:26 ..
drwxr-xr-x.  3 user01 user01   54 Jun 20 16:19 abc
-rw-------.  1 root   root   1211 Jun  3 22:33 anaconda-ks.cfg
-rw-r--r--.  1 root   root      0 Jun 20 14:10 a.txt

3. 设置“abc”目录下的所有文件和子目录为任何人不可读取

[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 user01 user01 6 Jun 20 16:19 a
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 a.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 b.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 c.txt

[root@localhost abc]# chmod -R a-r *   //(+)表示增加权限、(-)表示取消权限、(=)表示唯一设定权限。

[root@localhost abc]# ll
total 0
d-wx--x--x. 2 user01 user01 6 Jun 20 16:19 a
--w-------. 1 user01 user01 0 Jun 20 16:19 a.txt
--w-------. 1 user01 user01 0 Jun 20 16:19 b.txt
--w-------. 1 user01 user01 0 Jun 20 16:19 c.txt

文字设定法,如表5 所示。

表5 文字设定法
选项说明
u表示“用户(user)”,即文件或目录的所有者
g表示“同组(group)用户”,即与文件属主有相同组ID的所有用户
o表示“其他(others)用户”
a表示“所有(all)用户”,它是系统默认值
操作符号可以是:(+) 添加某个权限; (–) 取消某个权限; (=)赋予给定权限并取消其他所有权限

4. 设置文件“a”的权限为“777”,使三个组权限全部增加

[root@localhost abc]# ll
total 0
d-wx--x--x. 2 user01 user01 6 Jun 20 16以上是关于Linux CentOS 8(用户与组相关权限管理实验)的主要内容,如果未能解决你的问题,请参考以下文章

Linux CentOS 8(用户与组相关权限管理实验)

linux基础:用户与组,权限管理

Linux用户权限管理和组管理相关命令

用户权限相关命令

用户权限相关命令

linux用户权限系统信息相关命令