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::---