目录
一、需求
检查指定目录下的所有文件和目录,查看是否满足以下条件:
- 所有文件权限为644
- 所有目录权限为755
- 文件和目录的所属者为www,所属组为root
如果不满足上述条件,改为符合要求,注意:不要直接修改权限,需要有判断前提。
二、实现及关键知识点
1、脚本内容
# cat 4.sh
#! /bin/bash
cd /usr/local/src/shell/data/wwwroot/app
for f in `find .`
do
# 查看文件权限
f_p=`stat -c %a $f`
# 查看文件所有者
f_u=`stat -c %U $f`
# 查看文件所有组
f_g=`stat -c %G $f`
#判断是否为目录
if [ -d $f ]
then
[ $f_p != '755' ] && chmod 755 $f
else
[ $f_p != '644' ] && chmod 644 $f
fi
[ $f_u != 'www' ] && chown www $f
[ $f_g != 'root' ] && chown :root $f
done
2、关键知识点
(1)stat的用法
(2)连接符&&的用法
(3)循环遍历for和条件判断if的用法
三、验证
#准备用户和组
# useradd -G root www
#准备文件和目录
# ll
total 0
-rw-r--r-- 1 root root 0 Nov 23 13:35 1.txt
-rw--w--w- 1 root root 0 Nov 23 13:35 2.txt
-rw-r--r-- 1 root root 0 Nov 23 13:35 3.txt
drwxr--r-- 2 root root 6 Nov 23 13:37 test1
drwxr--r-- 2 root root 6 Nov 23 13:37 test2
#执行脚本
# bash 4.sh
#查看结果,文件和目录都改为满足要求权限
# ll data/wwwroot/app/
total 0
-rw-r--r-- 1 www root 0 Nov 23 13:35 1.txt
-rw-r--r-- 1 www root 0 Nov 23 13:35 2.txt
-rw-r--r-- 1 www root 0 Nov 23 13:35 3.txt
drwxr-xr-x 2 www root 6 Nov 23 13:37 test1
drwxr-xr-x 2 www root 6 Nov 23 13:37 test2