6.用户组和权限管理-案例分析

1.创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

[root@localhost data]# useradd gentoo -G bin,root -s /bin/csh -c "Gentoo Distribution"
[root@localhost data]# finger -l gentoo
Login: gentoo         			Name: Gentoo Distribution
Directory: /home/gentoo             	Shell: /bin/csh
Never logged in.
No mail.
No Plan.
[root@localhost data]# id -Gn gentoo
gentoo root bin

2.创建下面的用户、组和组成员关系

名字为webs 的组

用户nginx, 使用webs 作为附加组

用户varnish,使用webs 作为附加组

用户mysql,不可交互登录系统,且不是webs 的成员, nginx, varnish,

mysql密码都是magedu

[root@localhost data]# groupadd webs
[root@localhost data]# useradd -G webs nginx
[root@localhost data]# useradd -G webs varnish
[root@localhost data]# useradd mysql -s /sbin/nologin 
[root@localhost data]# echo magedu |passwd --stdin nginx 
Changing password for user nginx.
passwd: all authentication tokens updated successfully.
[root@localhost data]# echo magedu |passwd --stdin varnish
Changing password for user varnish.
passwd: all authentication tokens updated successfully.
[root@localhost data]# echo magedu |passwd --stdin mysql
Changing password for user mysql.
passwd: all authentication tokens updated successfully.

3.当用户docker对/testdir 目录无执行权限时,意味着无法做哪些操作?

无法进入 /testdir 目录。

[root@localhost data]# chmod -R 666 /data/testdir/
[root@localhost data]# ll
total 16
-rw-r--r--. 1 root root 2234 Aug  4 14:29 as
-rw-r--r--. 1 root root   16 Aug  4 14:22 f1.txt
-rw-r--r--. 1 root root   30 Aug  4 15:03 f2.txt
-rw-r--r--. 1 root root    0 Aug  6 10:47 f3.txt
-rw-r--r--. 1 root root  902 Aug  4 16:43 passwd
drw-rw-rw-. 2 root root    6 Aug  6 13:49 testdir
[root@localhost data]# su docker
[docker@localhost data]$ cd /data/testdir/
bash: cd: /data/testdir/: Permission denied

4.当用户mongodb对/testdir 目录无读权限时,意味着无法做哪些操作?

无法使用ls /testdir,但是如果知道文件名称,还是可以用ls命令的。

[root@localhost data]# chmod -R 333 /data/testdir/
[root@localhost data]# ll
total 16
-rw-r--r--. 1 root root 2234 Aug  4 14:29 as
-rw-r--r--. 1 root root   16 Aug  4 14:22 f1.txt
-rw-r--r--. 1 root root   30 Aug  4 15:03 f2.txt
-rw-r--r--. 1 root root    0 Aug  6 10:47 f3.txt
-rw-r--r--. 1 root root  902 Aug  4 16:43 passwd
d-wx-wx-wx. 2 root root    6 Aug  6 13:49 testdir
[root@localhost data]# su mongodb
[mongodb@localhost data]$ cd /data/testdir/
[mongodb@localhost testdir]$ touch f1.txt
[mongodb@localhost testdir]$ seq 1 10 > f2.txt
[mongodb@localhost testdir]$ vim f1.txt
[mongodb@localhost testdir]$ ll
ls: cannot open directory .: Permission denied
[mongodb@localhost testdir]$ ll -a
ls: cannot open directory .: Permission denied
[mongodb@localhost testdir]$ ll f1.txt
-rw-rw-r--. 1 mongodb mongodb 19 Aug  6 14:08 f1.txt
[mongodb@localhost testdir]$ ll f1.txt f2.txt
-rw-rw-r--. 1 mongodb mongodb 19 Aug  6 14:08 f1.txt
-rw-rw-r--. 1 mongodb mongodb 21 Aug  6 14:07 f2.txt
[mongodb@localhost testdir]$ rm -rf f2.txt

5.当用户redis 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修和删除?

redis用户无法对file1文件进行修改和删除操作。

[root@localhost data]# chmod -R 555 /data/testdir/
[root@localhost data]# ll
total 16
-rw-r--r--. 1 root root 2234 Aug  4 14:29 as
-rw-r--r--. 1 root root   16 Aug  4 14:22 f1.txt
-rw-r--r--. 1 root root   30 Aug  4 15:03 f2.txt
-rw-r--r--. 1 root root    0 Aug  6 10:47 f3.txt
-rw-r--r--. 1 root root  902 Aug  4 16:43 passwd
dr-xr-xr-x. 2 root root   23 Aug  6 14:14 testdir
[root@localhost data]# su redis 
[redis@localhost data]$ cd /data/testdir/
[redis@localhost testdir]$ ll
total 4
-r-xr-xr-x. 1 root root 102 Aug  6 14:14 file1.txt
[redis@localhost testdir]$ cat file1.txt 
welcome to hinsang!
The weather today is very good!
The weather is fine today, it won't rain anymore!
[redis@localhost testdir]$ vim file1.txt 
[redis@localhost testdir]$ rm -rf file1.txt 
rm: cannot remove ‘file1.txt’: Permission denied

6.当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1否可修改和删除?

zabbix用户对file1文件无法进行修改,并且无法使用ls命令,除非是知道文件名称;可以对file1文件进行删除操作。

[root@localhost data]# chmod -R 333 /data/testdir/
[root@localhost data]# ll
total 16
-rw-r--r--. 1 root root 2234 Aug  4 14:29 as
-rw-r--r--. 1 root root   16 Aug  4 14:22 f1.txt
-rw-r--r--. 1 root root   30 Aug  4 15:03 f2.txt
-rw-r--r--. 1 root root    0 Aug  6 10:47 f3.txt
-rw-r--r--. 1 root root  902 Aug  4 16:43 passwd
d-wx-wx-wx. 2 root root   23 Aug  6 14:14 testdir
[root@localhost data]# su zabbix
[zabbix@localhost data]$ cd /data/testdir/
[zabbix@localhost testdir]$ ll
ls: cannot open directory .: Permission denied
[zabbix@localhost testdir]$ ll file1.txt
--wx-wx-wx. 1 root root 102 Aug  6 14:14 file1.txt
[zabbix@localhost testdir]$ cat !$
cat file1.txt
cat: file1.txt: Permission denied
[zabbix@localhost testdir]$ vim !$
vim file1.txt
[zabbix@localhost testdir]$ vim file1.txt
[zabbix@localhost testdir]$ rm -rf file1.txt
[zabbix@localhost testdir]$ ll file1.txt
ls: cannot access file1.txt: No such file or directory

7.复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所组为apps组有读写权限,其他人无权限

[root@localhost ~]# cp /etc/fstab /var/tmp/
[root@localhost ~]# cd /var/tmp/
[root@localhost tmp]# ll
total 4
-rw-r--r--. 1 root root 595 Aug  6 14:37 fstab
[root@localhost tmp]# useradd tomcat
[root@localhost tmp]# groupadd apps
[root@localhost tmp]# chown tomcat:apps fstab
[root@localhost tmp]# ll
total 4
-rw-r--r--. 1 tomcat apps 595 Aug  6 14:37 fstab
[root@localhost tmp]# chmod -R 660 fstab 
[root@localhost tmp]# ll
total 4
-rw-rw----. 1 tomcat apps 595 Aug  6 14:37 fstab

8.误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性

[root@localhost tmp]# useradd git
[root@localhost tmp]# cd /home/
[root@localhost home]# ll
total 0
drwx------. 2 bash     bash     62 Aug  5 14:17 bash
drwx------. 2 basher   basher   62 Aug  5 14:18 basher
drwx------. 2 docker   docker   83 Aug  6 13:55 docker
drwx------. 2 gentoo   gentoo   62 Aug  5 16:55 gentoo
drwx------. 2 git      git      62 Aug  6 14:57 git
drwx------. 2 mage     mage     62 Aug  5 15:06 mage
drwx------. 2 mongodb  mongodb  99 Aug  6 14:11 mongodb
drwx------. 2 mysql    mysql    62 Aug  5 17:18 mysql
drwx------. 2 nginx    nginx    62 Aug  5 17:15 nginx
drwx------. 2 nologin  nologin  62 Aug  5 14:21 nologin
drwx------. 2 redis    redis    99 Aug  6 14:27 redis
drwx------. 2 rpc      rpc      62 Aug  4 17:52 rpc
drwx------. 2 sh       sh       62 Aug  5 14:21 sh
drwx------. 2 testbash testbash 62 Aug  5 14:18 testbash
drwx------. 2 tomcat   tomcat   62 Aug  6 14:38 tomcat
drwx------. 2 varnish  varnish  62 Aug  5 17:15 varnish
drwx------. 2 wang     wang     62 Aug  5 15:06 wang
drwx------. 2 wensijia wensijia 83 Aug  3 17:17 wensijia
drwx------. 2 zabbix   zabbix   99 Aug  6 14:36 zabbix
[root@localhost home]# ll -a git/
total 12
drwx------.  2 git  git   62 Aug  6 14:57 .
drwxr-xr-x. 21 root root 260 Aug  6 14:57 ..
-rw-r--r--.  1 git  git   18 Oct 31  2018 .bash_logout
-rw-r--r--.  1 git  git  193 Oct 31  2018 .bash_profile
-rw-r--r--.  1 git  git  231 Oct 31  2018 .bashrc
[root@localhost home]# rm -rf git/
[root@localhost home]# mkdir /home/git
[root@localhost home]# ll
total 0
drwx------. 2 bash     bash     62 Aug  5 14:17 bash
drwx------. 2 basher   basher   62 Aug  5 14:18 basher
drwx------. 2 docker   docker   83 Aug  6 13:55 docker
drwx------. 2 gentoo   gentoo   62 Aug  5 16:55 gentoo
drwxr-xr-x. 2 root     root      6 Aug  6 15:05 git
drwx------. 2 mage     mage     62 Aug  5 15:06 mage
drwx------. 2 mongodb  mongodb  99 Aug  6 14:11 mongodb
drwx------. 2 mysql    mysql    62 Aug  5 17:18 mysql
drwx------. 2 nginx    nginx    62 Aug  5 17:15 nginx
drwx------. 2 nologin  nologin  62 Aug  5 14:21 nologin
drwx------. 2 redis    redis    99 Aug  6 14:27 redis
drwx------. 2 rpc      rpc      62 Aug  4 17:52 rpc
drwx------. 2 sh       sh       62 Aug  5 14:21 sh
drwx------. 2 testbash testbash 62 Aug  5 14:18 testbash
drwx------. 2 tomcat   tomcat   62 Aug  6 14:38 tomcat
drwx------. 2 varnish  varnish  62 Aug  5 17:15 varnish
drwx------. 2 wang     wang     62 Aug  5 15:06 wang
drwx------. 2 wensijia wensijia 83 Aug  3 17:17 wensijia
drwx------. 2 zabbix   zabbix   99 Aug  6 14:36 zabbix
[root@localhost home]# cp -a /etc/skel/. /home/git/
[root@localhost home]# chmod 700 /home/git/
[root@localhost home]# chown git:git git/
[root@localhost home]# ll
total 0
drwx------. 2 bash     bash     62 Aug  5 14:17 bash
drwx------. 2 basher   basher   62 Aug  5 14:18 basher
drwx------. 2 docker   docker   83 Aug  6 13:55 docker
drwx------. 2 gentoo   gentoo   62 Aug  5 16:55 gentoo
drwx------. 2 git      git      62 Apr 11  2018 git
drwx------. 2 mage     mage     62 Aug  5 15:06 mage
drwx------. 2 mongodb  mongodb  99 Aug  6 14:11 mongodb
drwx------. 2 mysql    mysql    62 Aug  5 17:18 mysql
drwx------. 2 nginx    nginx    62 Aug  5 17:15 nginx
drwx------. 2 nologin  nologin  62 Aug  5 14:21 nologin
drwx------. 2 redis    redis    99 Aug  6 14:27 redis
drwx------. 2 rpc      rpc      62 Aug  4 17:52 rpc
drwx------. 2 sh       sh       62 Aug  5 14:21 sh
drwx------. 2 testbash testbash 62 Aug  5 14:18 testbash
drwx------. 2 tomcat   tomcat   62 Aug  6 14:38 tomcat
drwx------. 2 varnish  varnish  62 Aug  5 17:15 varnish
drwx------. 2 wang     wang     62 Aug  5 15:06 wang
drwx------. 2 wensijia wensijia 83 Aug  3 17:17 wensijia
drwx------. 2 zabbix   zabbix   99 Aug  6 14:36 zabbix
[root@localhost home]# ll -a git/
total 12
drwx------.  2 git  git   62 Apr 11  2018 .
drwxr-xr-x. 21 root root 260 Aug  6 15:05 ..
-rw-r--r--.  1 root root  18 Oct 31  2018 .bash_logout
-rw-r--r--.  1 root root 193 Oct 31  2018 .bash_profile
-rw-r--r--.  1 root root 231 Oct 31  2018 .bashrc

9.在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如:tomcat能对这些新文件有读写权限,组dbs的成员如: mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹

在/testdir/dir里创建的新文件自动属于webs组

[root@localhost data]# mkdir -pv testdir/dir
mkdir: created directory ‘testdir/dir’
[root@localhost data]# groupadd webs
groupadd: group 'webs' already exists
[root@localhost data]# chgrp webs testdir/dir/
[root@localhost data]# chmod g+s testdir/dir/
[root@localhost data]# ll testdir/
total 0
drwxr-sr-x. 2 root webs 6 Aug  6 15:15 dir

组apps的成员如:tomcat能对这些新文件有读写权限,组dbs的成员如:mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹

[root@localhost data]# groupadd adds;groupadd dbs
[root@localhost data]# groupdel adds
[root@localhost data]# groupadd apps
groupadd: group 'apps' already exists
[root@localhost data]# useradd -G apps tomcat;useradd -G dbs mysql
useradd: user 'tomcat' already exists
useradd: user 'mysql' already exists
[root@localhost data]# setfacl -m g:apps:rw testdir/dir/
[root@localhost data]# setfacl -m g:dbs:r testdir/dir/
[root@localhost data]# chmod o= testdir/dir/
[root@localhost data]# ll testdir/
total 0
drwxrws---+ 2 root webs 6 Aug  6 15:15 dir
[root@localhost data]# getfacl testdir/dir/
# file: testdir/dir/
# owner: root
# group: webs
# flags: -s-
user::rwx
group::r-x
group:apps:rw-
group:dbs:r--
mask::rwx
other::---

10.备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限

[root@localhost data]# getfacl -R testdir/dir/ > /root/acl.txt
[root@localhost data]# setfacl -R -b testdir/dir/
[root@localhost data]# getfacl testdir/dir/
# file: testdir/dir/
# owner: root
# group: webs
# flags: -s-
user::rwx
group::r-x
other::---

[root@localhost data]# setfacl --set-file=/root/acl.txt testdir/dir/
[root@localhost data]# getfacl testdir/dir/
# file: testdir/dir/
# owner: root
# group: webs
# flags: -s-
user::rwx
group::r-x
group:apps:rw-
group:dbs:r--
mask::rwx
other::---
posted @ 2020-08-06 15:38  人生值得  阅读(329)  评论(0编辑  收藏  举报