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 | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/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(用户与组相关权限管理实验)的主要内容,如果未能解决你的问题,请参考以下文章