chown练习
创建组账户vrrp、tomcat
创建用户yaml并设置其基本组为vrrp,创建用户ansible并设置其附加组为tomcat,所有用户设置密码为playbook
创建目录/nfsshare,创建空文件/nfsshare/readme.md
将/nfsshare/redme.md文件所有者修改为yaml,所属组修改为vrrp组
创建目录/nfsshare/permission/deny,创建空文件/nfsshare/permission/deny/already.exist
递归修改/nfsshare/permission所有子目录和文件,所有者为ansible,所属组为tomcat
创建空文件/nfsshare/rsync.txt、/nfsshare/kickstart.txt
仅修改/nfsshare/rsync.txt所属组为tomcat;修改/nfsshare/kickstart所有者为yaml,所属组为vrrp
参考答案
步骤一:创建组账户vrrp、tomcat
//使用groupadd命令创建组账户
[root@localhost ~]# groupadd vrrp
[root@localhost ~]# groupadd tomcat
步骤二:创建用户yaml并设置其基本组为vrrp,创建用户ansible并设置其附加组为tomcat,所有用户设置密码为playbook
//使用useradd命令创建yaml用户,通过-g选择指定基本组为vrrp
[root@localhost ~]# useradd -g vrrp yaml
//使用useradd命令创建ansible用户,通过-G选择指定附加组为tomcat
[root@localhost ~]# useradd -G tomcat ansible
步骤三:创建目录/nfsshare,创建空文件/nfsshare/readme.md
//使用mkdir创建目录
[root@localhost ~]# mkdir /nfsshare
//使用touch命令创建空文件
[root@localhost ~]# touch /nfsshare/readme.md
易错练习(绝对路径与相对路径傻傻分不清)
touch /nfsshare/readme.md是绝对路径创建的文件,当前工作目录为root家目录,如果此时使用ls查看当前目录下的文件,无法找到readme.md。
[root@localhost ~]# ls readme.md
ls: 无法访问readme.md: 没有那个文件或目录(英文报错:No such file or directory)
//注意观察cd后,命令提示符的变化
[root@localhost ~]# cd /nfsshare
[root@localhost nfsshare]# ls readme.md
步骤四:将/nfsshare/redme.md文件所有者修改为yaml,所属组修改为vrrp组
//未修改前,查看文件详细信息
[root@localhost ~]# ls -l /nfsshare/readme.md
-rw-r--r--. 1 root root 0 11月 1 18:39 /nfsshare/readme.md
//使用chown命令修改文件所有者和所属组
[root@localhost ~]# chown yaml:vrrp /nfsshare/readme.md
//修改后,使用ls命令查看文件相信信息
[root@localhost ~]# ls -l /nfsshare/readme.md
-rw-r--r--. 1 yaml vrrp 0 11月 1 18:39 /nfsshare/readme.md
//使用su命令把计算机用户切换为yaml用户,注意命令提示符的变化
[root@localhost ~]# su - yaml
//使用普通用户yaml,测试对文件是否有写权限
[yaml@localhost ~]$ vim /nfsshare/readme.md
默认文件无法编辑,按i键进入编辑模式,写入如下内容
hello the world
no such file or directory
按ESC返回命令模式,再输入:wq保存退出
//cat查看文件内容,验证效果
[yaml@localhost ~]$ cat /nfsshare/readme.md
//【重要】使用exit命令,退出yaml用户,返回root用户
[yaml@localhost ~]$ exit
步骤五:创建目录/nfsshare/permission/deny,创建空文件/nfsshare/permission/deny/already.exist
易错练习(父目录不存在,直接创建子目录),故意出错,熟记错误信息
[root@localhost ~]# mkdir /nfsshare/permission/deny
mkdir: 无法创建目录"/nfsshare/permission/deny": 没有那个文件或目录
(英文报错信息:No such file or directory)
正确演示
//创建目录,-p创建多级子目录
[root@localhost ~]# mkdir -p /nfsshare/permission/deny
//创建空文件
[root@localhost ~]# touch /nfsshare/permission/deny/already.exist
步骤六:递归修改/nfsshare/permission所有子目录和文件,所有者为ansible,所属组为tomcat
//chown修改文件或目录的所有者和所属组,-R递归修改所有子目录和子文件
[root@localhost ~]# chown -R ansible:tomcat /nfsshare/permission/
//ls -ld查看目录的详细信息,验证效果
[root@localhost ~]# ls -ld /nfsshare/permission/
drwxr-xr-x. 3 ansible tomcat 18 11月 1 22:00 /nfsshare/permission/
//ls -ld查看子目录的详细信息,验证效果
[root@localhost ~]# ls -ld /nfsshare/permission/deny/drwxr-xr-x. 3 ansible tomcat 36 11月 1 22:04 /nfsshare/permission/deny/
//ls -l查看文件详细信息,验证效果
[root@localhost ~]# ls -l /nfsshare/permission/deny/already.exist
-rw-r--r--. 1 ansible tomcat 0 11月 1 22:02 /nfsshare/permission/deny/already.exist
步骤七:创建空文件/nfsshare/rsync.txt、/nfsshare/kickstart.txt
//创建空文件/nfsshare/rsync.txt和/nfsshare/kickstart.txt
[root@localhost ~]# touch /nfsshare/{rsync,kickstart}.txt
步骤八:仅修改/nfsshare/rsync.txt所属组为tomcat;修改/nfsshare/kickstart所有者为yaml,所属组为vrrp
//chown命令仅修改文件所属组
[root@localhost ~]# chown :tomcat /nfsshare/rsync.txt
//chown命令修改文件所有者和所属组,用户和组之间可以使用:或者使用.分隔
[root@localhost ~]# chown yaml.vrrp /nfsshare/kickstart.txt
6 实验题:chmod练习(延续上一题练习题)
使用yum安装tree命令,使用tree命令查看/nfsshare目录树
使用相对路径和绝对路径查看/nfsshare目录下所有资料的权限
修改/nfsshare目录权限,用户权限为读写执行,组权限为读写执行,其他人为读和执行。
修改/nfsshare/kickstart.txt权限,用户可读写,组只读,其他人没有任何权限
修改/nfsshare/readme.md权限,所有用户对该文件具有执行权限
修改/nfsshare/rsync.txt权限,用户可读写,组和其他人没有任何权限
修改/nfsshare/permission/deny/目录权限,任何人对该目录都可写,所有人仅可以删除自己创建的文件,无法删除其他人的文件
参考答案
步骤一:使用yum安装tree命令,使用tree命令查看/nfsshare目录树
//安装软件包
[root@localhost ~]# yum -y install tree
//查看目录树状结构(效果如图-1所示)
[root@localhost ~]# tree /nfsshare/
图-1
步骤二:使用相对路径和绝对路径查看/nfsshare目录下所有资料的权限
//绝对路径查看权限
[root@localhost ~]# ls -l /nfsshare/
-rw-r--r--. 1 yaml vrrp 0 11月 1 22:24 kickstart.txt
drwxr-xr-x. 3 ansible tomcat 18 11月 1 22:00 permission
-rw-r--r--. 1 yaml vrrp 42 11月 1 21:56 readme.md
-rw-r--r--. 1 root tomcat 0 11月 1 22:24 rsync.txt
[root@localhost ~]# ls -l /nfsshare/permission/
drwxr-xr-x. 2 ansible tomcat 27 11月 1 22:37 deny
[root@localhost ~]# ls -l /nfsshare/permission/deny/
-rw-r--r--. 1 ansible tomcat 0 11月 1 22:02 already.exist
//相对路径查看权限
[root@localhost nfsshare]# ls -l
-rw-r--r--. 1 yaml vrrp 0 11月 1 22:24 kickstart.txt
drwxr-xr-x. 3 ansible tomcat 18 11月 1 22:00 permission
-rw-r--r--. 1 yaml vrrp 42 11月 1 21:56 readme.md
-rw-r--r--. 1 root tomcat 0 11月 1 22:24 rsync.txt
[root@localhost nfsshare]# ls -l ./
-rw-r--r--. 1 yaml vrrp 0 11月 1 22:24 kickstart.txt
drwxr-xr-x. 3 ansible tomcat 18 11月 1 22:00 permission
-rw-r--r--. 1 yaml vrrp 42 11月 1 21:56 readme.md
-rw-r--r--. 1 root tomcat 0 11月 1 22:24 rsync.txt
[root@localhost nfsshare]# ls -l permission/
drwxr-xr-x. 2 ansible tomcat 27 11月 1 22:37 deny
[root@localhost nfsshare]# ls -l permission/deny/
-rw-r--r--. 1 ansible tomcat 0 11月 1 22:02 already.exist
[root@localhost nfsshare]# cd permission/deny/
[root@localhost deny]# ls -l
-rw-r--r--. 1 ansible tomcat 0 11月 1 22:02 already.exist
//.代表当前目录,..代表上一级目录,../..代表上一级的上一级目录
[root@localhost deny]# cd ../..
提示:文件和目录的相对路径和绝对路径是一个非常重要的知识点,一定要多练习!
步骤三:修改/nfsshare目录权限,用户权限为读写执行,组权限为读写执行,其他人为读和执行。
//使用字母符号的方式修改权限
[root@localhost nfsshare]# ll -d /nfsshare/
drwxr-xr-x. 3 root root 79 11月 1 22:24 /nfsshare/
[root@localhost nfsshare]# chmod u=rwx,g=rwx,o=rx /nfsshare/
[root@localhost nfsshare]# ll -d /nfsshare/
drwxrwxr-x. 3 root root 79 11月 1 22:24 /nfsshare/
//使用数字的方式修改权限
[root@localhost nfsshare]# chmod 775 /nfsshare/
步骤四:修改/nfsshare/kickstart.txt权限,用户可读写,组只读,其他人没有任何权限
//查看文件现有权限信息
[root@localhost ~]# ls -l /nfsshare/kickstart.txt
-rw-r--r--. 1 yaml vrrp 0 11月 1 22:24 /nfsshare/kickstart.txt
//使用字母符号的方式修改权限(在现有权限的基础上,添加或缩减权限)
[root@localhost ~]# chmod o-r /nfsshare/kickstart.txt
[root@localhost ~]# ls -l /nfsshare/kickstart.txt
-rw-r-----. 1 yaml vrrp 0 11月 1 22:24 /nfsshare/kickstart.txt
//使用数字的方式修改权限
[root@localhost ~]# chmod 640 /nfsshare/kickstart.txt
步骤五:修改/nfsshare/readme.md权限,所有用户对该文件具有执行权限
//查看文件权限信息
[root@localhost ~]# ls /nfsshare/readme.md -l
-rw-r--r--. 1 yaml vrrp 42 11月 1 21:56 /nfsshare/readme.md
//使用字母符号的方式修改权限
[root@localhost ~]# chmod +x /nfsshare/readme.md
[root@localhost ~]# ls /nfsshare/readme.md -l
-rwxr-xr-x. 1 yaml vrrp 42 11月 1 21:56 /nfsshare/readme.md
//使用数字形式修改权限
[root@localhost ~]# chmod 755 /nfsshare/readme.md
步骤六:修改/nfsshare/rsync.txt权限,用户可读写,组和其他人没有任何权限
//提前进入目录,使用相对路径查看文件详细信息(相对路径)
[root@localhost ~]# cd /nfsshare/
[root@localhost nfsshare]# ls rsync.txt -l
-rw-r--r--. 1 root tomcat 0 11月 1 22:24 rsync.txt
//在原有文件权限的基础上,组和其他用户减去r读的权限(相对路径)
[root@localhost nfsshare]# chmod g-r,o-r ./rsync.txt
[root@localhost nfsshare]# ls ./rsync.txt -l
-rw-------. 1 root tomcat 0 11月 1 22:24 ./rsync.txt
//不关心原来的文件权限,为用户,组,其他人重新设置权限(相对路径)
[root@localhost nfsshare]# chmod u=rw,g=-,o=- rsync.txt
//使用数字方式修改文件权限(绝对路径)
[root@localhost nfsshare]# chmod 600 /nfsshare/rsync.txt
步骤七:修改/nfsshare/permission/的权限,以后在该目录下创建的任何文件都自动继承该父目录的组(在该目录下创建的所有资料都自动属于tomcat组)
//查看目录详细相信
[root@localhost ~]# ls -ld /nfsshare/permission/
drwxr-xr-x. 3 ansible tomcat 18 11月 1 22:00 /nfsshare/permission/
//未修改权限前,创建文件验证
[root@localhost ~]# touch /nfsshare/permission/new.txt
[root@localhost ~]# ls /nfsshare/permission/new.txt -l
-rw-r--r--. 1 root root 0 11月 11 13:51 /nfsshare/permission/new.txt
//修改目录权限(设置SGID),再次创建文件验证效果
[root@localhost ~]# chmod g+s /nfsshare/permission/
[root@localhost ~]# ls -ld /nfsshare/permission/
drwxr-sr-x. 3 ansible tomcat 33 11月 11 13:51 /nfsshare/permission/
[root@localhost ~]# touch /nfsshare/permission/router.txt
[root@localhost ~]# ls -l /nfsshare/permission/router.txt
-rw-r--r--. 1 root tomcat 0 11月 11 13:53 /nfsshare/permission/router.txt
修改/nfsshare/permission/deny/目录权限,任何人对该目录都可写,所有人仅可以删除自己创建的文件,无法删除其他人的文件
//查看目录详细信息
[root@localhost ~]# ls /nfsshare/permission/deny/ -ld
drwxr-xr-x. 2 ansible tomcat 27 11月 1 22:37 /nfsshare/permission/deny/
//修改权限,任何人对该目录都具有可写权限
[root@localhost ~]# chmod a+w /nfsshare/permission/deny/
[root@localhost ~]# ls /nfsshare/permission/deny/ -ld
drwxrwxrwx. 2 ansible tomcat 27 11月 1 22:37 /nfsshare/permission/deny/
//修改权限,所有人仅可以删除自己的文件,无法删除其他人的文件(设置Sticky权限)
[root@localhost ~]# chmod o+t /nfsshare/permission/deny/
[root@localhost ~]# ls /nfsshare/permission/deny/ -ld
drwxrwxrwt. 2 ansible tomcat 27 11月 1 22:37 /nfsshare/permission/deny/
ACL访问控制列表练习(延续前面的练习环境)
创建三个用户inotify、configure、device,密码均为podman
修改/nfsshare/rsync.txt权限,让inotify用户对该文件可读可写
递归设置/nfsshare/permission/目录的ACL权限,用device组对该目录及其子目录具有读写执行权限
清除/nfsshare/rsync.txt文件的所有ACL权限
参考答案
步骤一:创建三个用户inotify、configure、device,密码均为podman
//使用useradd命令创建用户
[root@localhost ~]# useradd inotify
[root@localhost ~]# useradd configure
[root@localhost ~]# useradd device
//使用passwd命令修改用户密码
[root@localhost ~]# passwd inotify
[root@localhost ~]# passwd configure
[root@localhost ~]# passwd device
步骤二:修改/nfsshare/rsync.txt权限,让inotify用户对该文件可读可写
[root@localhost ~]# cd /nfsshare
//使用ls命令查看文件详细信息(相对路径)
[root@localhost nfsshare]# ls -l rsync.txt
-rw-------. 1 root tomcat 0 11月 1 22:24 rsync.txt
//使用getfacl命令查看文件的ACL访问控制权限(相对路径)
[root@localhost nfsshare]# getfacl rsync.txt
#file: rsync.txt
#owner: root
#group: tomcat
user::rw-
group::---
other::---
//使用setfacl命令设置文件ACL权限
//-m(modify)代表修改权限,u(user)代表设置用户ACL权限,inotify是用户名,rw是权限
[root@localhost nfsshare]# setfacl -m u:inotify:rw rsync.txt
[root@localhost nfsshare]# getfacl rsync.txt
#file: rsync.txt
#owner: root
#group: tomcat
user::rw-
user:inotify:rw-
group::---
mask::rw-
other::---
步骤三:递归设置/nfsshare/permission/目录的ACL权限,用device组对该目录及其子目录具有读写执行权限
[root@localhost ~]# cd /nfsshare/
//使用getfacl命令查看目录的ACL权限信息(相对路径)
[root@localhost nfsshare]# getfacl permission/
# file: permission/
# owner: ansible
# group: tomcat
# flags: -s-
user::rwx
group::r-x
other::r-x
//使用setfacl命令设置文件ACL权限(相对路径)
//-R代表递归,修改目录及其所有子目录和子文件的ACL权限
//-m(modify)代表修改权限,g(group)代表设置组ACL权限,device是组名,rwx是权限
[root@localhost nfsshare]# setfacl -R -m g:device:rwx permission/
提示:文件和目录的相对路径和绝对路径是一个非常重要的知识点,一定要多加练习!
步骤四:清除/nfsshare/rsync.txt文件的所有ACL权限
//清除文件的所有ACL权限
[root@localhost nfsshare]# setfacl -b /nfsshare/rsync.txt
//查看文件ACL权限
[root@localhost nfsshare]# getfacl /nfsshare/rsync.txt
getfacl: Removing leading '/' from absolute path names
#file: nfsshare/rsync.txt
#owner: root
#group: tomcat
user::rw-
group::---
other::---
# 创建用户harry,创建目录/opt/private,如何禁止用户harry对/opt/private目录有任何权限,但不影响其他用户对此目录的访问
参考答案
[root@localhost ~]# mkdir /opt/private
[root@localhost ~]# setfacl -m u:harry:- /opt/private/
[root@localhost ~]# getfacl /opt/private/
getfacl: Removing leading '/' from absolute path names
#file: opt/private/
#owner: root
#group: root
user::rwx
user:harry:--- //确认结果
group::r-x
mask::r-x
other::r-x
新建目录/var/public,允许任何人写入,但禁止更改其他用户的文件
参考答案
[root@localhost ~]# mkdir /var/public
[root@localhost ~]# chmod ugo=rwx /var/public
[root@localhost ~]# chmod o+t /var/public
[root@localhost ~]# ls -ld /var/public/
drwxrwxrwt. 2 root root 6 Nov 26 00:11 /var/public/
新建目录新建/tarena目录使用户configure对此目录具有rwx权限,其他人对此目录无任何权限
参考答案
[root@localhost ~]# mkdir /tarena
[root@localhost ~]# ls -ld /tarena/
drwxr-xr-x. 2 root root 6 3月 3 14:39 /tarena/
[root@localhost ~]# chown configure /tarena/
[root@localhost ~]# chmod o=--- /tarena/
[root@localhost ~]# ls -ld /tarena/
drwxr-x---. 2 configure root 6 3月 3 14:39 /tarena/
创建ACL访问权限,让lisi可以查看/etc/shadow文件
参考答案
[root@localhost ~]# useradd lisi
[root@svr7 ~]# setfacl -m u:lisi:r /etc/shadow
[root@svr7 ~]# getfacl /etc/shadow
getfacl: Removing leading '/' from absolute path names
#file: etc/shadow
#owner: root
#group: root
user::---
user:lisi:r--
group::---
mask::r--
other::---
[root@svr7 ~]# su - lisi
[lisi@svr7 ~]$ cat /etc/shadow
root:$6$SEs4pO9FblvOFnNk$ZIMUYUpSjS9UQHPsscuNe/xYGYjMqxV/uFqRJVAi.nNJawAC05Ah8fwV.HVEF58yuhVRYKt4wOBEoqKsr1/ZX/::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
adm:*:17632:0:99999:7:::
lp:*:17632:0:99999:7:::
……