检查文件和子文件夹中的所有者/组是否匹配

时间:2014-10-08 15:59:35

标签: file shell permissions directory

我需要帮助编写一个shell脚本来检查所有者和组是否与我在IF语句中的名称相匹配。它需要递归检查所有文件和文件夹,包括父文件夹。

例如,我的目录结构可能如下所示

/data
/data/folder1
/data/folder1/fileA
/data/folder2/fileB

我需要验证数据,folder1,folder2,fileA,fileB是否都归同一所有者和组所有。

#!/bin/bash

DIR="/data";
N=0;

for $DIR..
  if [ NOT MATCH "username:groupname" ]; then
    N=1;
  fi
done

if [ $N -gt 0 ]; then
  echo "all or some files and folders don't match";
else 
  echo "all files match";
fi

1 个答案:

答案 0 :(得分:0)

#!/bin/bash
OWNER=user
ACTUAL_OWNER='stat -c %U file' 
N=0;

   not_match(files)
  {
      if [ ! OWNER = ACTUAL_OWNER ]; then
        N=1;
        return;
      else if [ not_end_of_file ]; then
        not_match(files+1)
      else 
        return
      fi
  }

    DIR="/data";
    not_match(files)
    if [ $N -gt 0 ]; then
      echo "all or some files and folders don't match";
    else 
      echo "all files match";
    fi

我不确定一些确切的命令或语法,所以它有一些sudo代码,但它基本上是你想要做的。如果它们是匹配的并且它不是您正在搜索的文件的末尾再次调用该函数并且如果它不匹配则增加到下一个文件说它们不要并且只是返回因为您不告诉用户有多少不匹配并且如果结束然后成功并返回打印给用户