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
[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
[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
[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
[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
[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: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
[root@localhost abc]# chmod 777 a
[root@localhost abc]# ll
total 0
drwxrwxrwx. 2 user01 user01 6 Jun 20 16:19 a
数字设定法 0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
或者,使用“a=rwx”
[root@localhost abc]# chmod a=rwx a.txt
[root@localhost abc]# ll
total 0
drwxrwxrwx. 2 user01 user01 6 Jun 20 16:19 a
-rwxrwxrwx. 1 user01 user01 0 Jun 20 16:19 a.txt
5. 将文件“b.txt”权限设置为“4755”
[root@localhost abc]# chmod 4755 b.txt
[root@localhost abc]# ll
total 0
drwxrwxrwx. 2 user01 user01 6 Jun 20 16:19 a
-rwxrwxrwx. 1 user01 user01 0 Jun 20 16:19 a.txt
-rwsr-xr-x. 1 user01 user01 0 Jun 20 16:19 b.txt
--w-------. 1 user01 user01 0 Jun 20 16:19 c.txt
注:4设置了设置用户ID位,看到了一个s,这就是使用户设置ID位有效。
任务9- chgrp–改变文件或目录的所属群组
1. 查看“chgrp”的选项 通过chgrp --help 命令可以查看“chgrp”的选项,如下所示。
[root@localhost ~]# chgrp --help
Usage: chgrp [OPTION]... GROUP FILE...
or: chgrp [OPTION]... --reference=RFILE FILE...
Change the group of each FILE to GROUP.
With --reference, change the group 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
--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)
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's group rather than specifying a
GROUP value
-R, --recursive operate on files and directories recursively
...
-H if a command line argument is a symbolic link
to a directory, traverse it
-L traverse every symbolic link to a directory
encountered
-P do not traverse any symbolic links (default)
--help display this help and exit
--version output version information and exit
chgrp 命令常用选项,如表6 所示。
表6 chgrp 命令常用选项的用法
选项 | 说明 |
---|
-c | 效果类似”-v”参数,但仅回报更改的部分 | -f | 不显示错误信息 | -h | 对符号连接的文件作修改,而不更动其他任何相关文件 | -R | 递归处理,将指定目录下的所有文件及子目录一并处理 | v | 显示指令执行过程 | -reference | 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同 |
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
-rw-r--r--. 1 root root 0 Jun 20 14:10 a.txt
[root@localhost ~]# chgrp -v user01 a.txt
changed group of 'a.txt' from root to 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. 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 user01 0 Jun 20 14:10 a.txt
3. 根据指定文件“a.txt”改变文件“b.txt”的群组属性
[root@localhost ~]# ls -al
total 32
dr-xr-x---. 3 root root 172 Jun 20 18: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 user01 0 Jun 20 14:10 a.txt
-rw-r--r--. 1 root root 0 Jun 20 18:10 b.txt
-rw-r--r--. 1 root root 100 May 11 2019 .cshrc
-rw-r--r--. 1 root root 129 May 11 2019 .tcshrc
[root@localhost ~]# chgrp --reference=a.txt b.txt
[root@localhost ~]# ls -al
total 32
dr-xr-x---. 3 root root 172 Jun 20 18: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 user01 0 Jun 20 14:10 a.txt
-rw-r--r--. 1 root user01 0 Jun 20 18:10 b.txt
-rw-r--r--. 1 root root 100 May 11 2019 .cshrc
-rw-r--r--. 1 root root 129 May 11 2019 .tcshrc
制作成员: 杨佳佳 排版: 裕新 初审: 何嘉愉 复审: 二月二
点击下方“正月十六工作室”查看更多学习资源
正月十六工作室
|