目录
Part3:用户组和权限
练习1
1.创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
[20:24:48 root@Centos8 /data]#useradd gentoo -G bin,root -s /bin/csh -c "“Gentoo Distribution”"
[20:26:10 root@Centos8 /data]#getent passwd gentoo
gentoo:x:1002:1002:“Gentoo Distribution”:/home/gentoo:/bin/csh
[20:26:21 root@Centos8 /data]#id gentoo
uid=1002(gentoo) gid=1002(gentoo) groups=1002(gentoo),1(bin),0(root)
2.创建下面的用户、组和组成员关系
名字为webs 的组
用户nginx,使用webs 作为附加组
用户varnish,使用webs 作为附加组
用户mysql,不可交互登录系统,且不是webs的成员,nginx,varnish,mysql密码都是magedu
[20:26:27 root@Centos8 /data]#groupadd webs
[20:40:16 root@Centos8 /data]#getent group webs
webs:x:1003:
[20:43:09 root@Centos8 /data]#useradd nginx -G webs
[20:43:49 root@Centos8 /data]#id nginx
uid=1003(nginx) gid=1004(nginx) groups=1004(nginx),1003(webs)
[20:43:59 root@Centos8 /data]#useradd varnish -G webs
[20:44:44 root@Centos8 /data]#id varnish
uid=1004(varnish) gid=1005(varnish) groups=1005(varnish),1003(webs)
[20:48:06 root@Centos8 /data]#useradd mysql -s /sbin/nologin
[20:49:24 root@Centos8 /data]#id mysql
uid=1005(mysql) gid=1006(mysql) groups=1006(mysql)
[20:49:32 root@Centos8 /data]#getent passwd mysql
mysql:x:1005:1006::/home/mysql:/sbin/nologin
[20:50:32 root@Centos8 /data]#su mysql
This account is currently not available.
[20:51:10 root@Centos8 /data]#echo magedu | passwd --stdin nginx
Changing password for user nginx.
passwd: all authentication tokens updated successfully.
[20:56:48 root@Centos8 /data]#echo magedu | passwd --stdin
[20:56:48 root@Centos8 /data]#echo magedu | passwd --stdin varnish
Changing password for user varnish.
passwd: all authentication tokens updated successfully.
[20:57:51 root@Centos8 /data]#echo magedu | passwd --stdin mysql
Changing password for user mysql.
passwd: all authentication tokens updated successfully.
练习2
1.执行cp /etc/issue /data/dir所需要的最小权限?
/bin/cp 需要x权限。
/etc 需要x权限。
/etc/issue 需要r权限。
/data 需要x权限。
/data/dir 需要w,x权限。
练习3
1.当用户docker对/testdir目录无执行权限时,意味着无法做哪些操作?
[22:18:31 docker@Centos8 /data]$ll
total 4
d-------wx. 2 root root 19 Dec 24 22:02 dir
-rw-r--r--. 1 root root 2751 Dec 24 12:16 passwd
drwxr-xrw-. 2 root root 32 Dec 24 22:16 testdir
[22:18:46 docker@Centos8 /data]$ll testdir/
ls: cannot access ‘testdir/a.txt‘: Permission denied
ls: cannot access ‘testdir/x.txt‘: Permission denied
total 0
-????????? ? ? ? ? ? a.txt
-????????? ? ? ? ? ? x.txt
[22:27:06 docker@Centos8 /data]$cd testdir/
bash: cd: testdir1/: Permission denied
[22:33:53 docker@Centos8 /data]$rm -r testdir/
rm: cannot remove ‘testdir1/a.txt‘: Permission denied
rm: cannot remove ‘testdir1/x.txt‘: Permission denied
rm: cannot remove ‘testdir1/‘: Permission denied
[22:34:13 docker@Centos8 /data]$mv testdir/ testdir1/
mv: cannot move ‘testdir/‘ to ‘testdir1/‘: Permission denied
[22:34:46 docker@Centos8 /data]$touch testdir/test.log
touch: cannot touch ‘testdir/test.log‘: Permission denied
#结论:无法增删改,可以查部分信息
2.当用户mongodb对/testdir目录无读权限时,意味着无法做哪些操作?
[22:43:55 mogodb@Centos8 /data]$ll
total 4
d-------wx. 2 root root 19 Dec 24 22:02 dir
-rw-r--r--. 1 root root 2751 Dec 24 12:16 passwd
drwxr-x-wx. 2 root root 19 Dec 24 22:41 testdir
[22:43:59 mogodb@Centos8 /data]$ll testdir/
ls: cannot open directory ‘testdir/‘: Permission denied
[22:44:03 mogodb@Centos8 /data]$cd testdir/
[22:44:10 mogodb@Centos8 /data/testdir]$cd -
/data
[22:44:12 mogodb@Centos8 /data]$rm -r testdir/
rm: cannot remove ‘testdir/‘: Permission denied
[22:45:23 mogodb@Centos8 /data]$mv testdir/ testdir1/
mv: cannot move ‘testdir/‘ to ‘testdir1/‘: Permission denied
[22:45:30 mogodb@Centos8 /data]$touch testdir/haha.txt
[22:45:48 mogodb@Centos8 /data]$rm -f testdir/haha.txt
#可cd进目录的最小权限x;可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
3.当用户redis 对/testdir目录无写权限时,该目录下的只读文件file1是否可修改和删除?
[10:32:34 redis@Centos8 /data/testdir]$ll
total 4
-r--r--r--. 1 root root 12 Dec 25 10:30 file1
-rw-r--r--. 1 root root 0 Dec 24 22:16 x.txt
[10:32:36 redis@Centos8 /data/testdir]$echo haha >> file1
-bash: file1: Permission denied
[10:33:27 redis@Centos8 /data/testdir]$cat file1
jshjsjhjhj:
[10:33:54 redis@Centos8 /data/testdir]$rm -f file1
rm: cannot remove ‘file1‘: Permission denied
4.当用户zabbix对/testdir目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
[10:37:25 redis@Centos8 /data]$cd testdir/
[10:37:28 redis@Centos8 /data/testdir]$
[10:37:29 redis@Centos8 /data/testdir]$ll
ls: cannot open directory ‘.‘: Permission denied
[10:37:29 redis@Centos8 /data/testdir]$echo haha >> file1
-bash: file1: Permission denied
[10:38:04 redis@Centos8 /data/testdir]$rm -f file1
#file1被删除,文件即为目录的内容,可w即可删
5.复制etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限
[11:00:06 root@Centos8 ~]#cp /etc/fstab /var/tmp/;useradd tomcat;groupadd apps;chown tomcat:apps /var/tmp/fst;chmod 660 /var/tmp/fstab
[11:09:16 root@Centos8 ~]#ll /var/tmp/fstab
-rw-rw----. 1 tomcat apps 709 Dec 25 11:07 /var/tmp/fstab
6.误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性
cp -a /etc/skel/ /home/git;chmod 700 /home/git;chown -R git:git /home/git
新建用户的相关文件
/etc/default/useradd
/etc/skel/*
/etc/login.defs
注释:/etc/skel下文件相当于一个用户的模板,当useradd创建一个新用户时,系统会将这个目录下的所有隐藏文件复制到新用户的home下。如果误删除了用户home下的隐藏文件,只要cp -a /etc/skel/ /home/xxx,并恢复该用户家目录及相应的权限属性,再次登录即可恢复正常。
练习4
1.在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如: tomcat能对这些新文件有读写权限,组dbs的成员如: mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹
#在/testdir/dir里创建的新文件自动属于webs组
[11:50:15 root@Centos8 /data]#chown :webs testdir/dir/
[11:51:48 root@Centos8 /data]#chmod g+s testdir/dir/
#将用户加到用户组,查看组成员
[11:59:22 root@Centos8 /data/testdir/dir1]#groupmems -a tomcat -g apps
[11:59:41 root@Centos8 /data/testdir/dir1]#groupmems -l -g apps
[12:00:45 root@Centos8 /data/testdir/dir1]#groupmems -a mysql -g dbs
[12:01:05 root@Centos8 /data/testdir/dir1]#groupmems -l -g dbs
[12:27:45 root@Centos8 /data]#setfacl -m g:apps:rw testdir/dir;setfacl -m g:dbs:r testdir/dir;chmod o=- \testdir/dir
[12:28:08 root@Centos8 /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::---
2.误将/bin/chmod 文件的执行权限删除,如何恢复?
[12:28:26 root@Centos8 /data]#ll /bin/chmod
-rwxr-xr-x. 1 root root 133952 Apr 10 2020 /bin/chmod
[12:33:49 root@Centos8 /data]#chmod -x /bin/chmod
[12:34:09 root@Centos8 /data]#ll /bin/chmod
-rw-r--r--. 1 root root 133952 Apr 10 2020 /bin/chmod
[12:34:12 root@Centos8 /data]#chmod +x /bin/chmod
-bash: /usr/bin/chmod: Permission denied
[12:34:23 root@Centos8 /data]#setfacl -m u:root:rwx /bin/chmod
[12:34:52 root@Centos8 /data]#getfacl /bin/chmod
getfacl: Removing leading ‘/‘ from absolute path names
# file: bin/chmod
# owner: root
# group: root
user::rw-
user:root:rwx
group::r--
mask::rwx
other::r--
[12:35:09 root@Centos8 /data]#chmod +x /bin/chmod
[12:35:32 root@Centos8 /data]#ll /bin/chmod
-rwxrwxr-x+ 1 root root 133952 Apr 10 2020 /bin/chmod