Вы можете просто использовать инструмент под названием acl
backupPermission(){
backupFileName="permission.backup"
for i in $(find ${1:-.} -type f);do
echo $i
getfacl -p $i | paste -s -d'% ' >> ${2:-/tmp/backup.permission1}
done
}
comparePermision(){
cat ${1:-/tmp/backup.permission1} ${2:-/tmp/backup.permission2} | sort -n | uniq -c | sort -n | grep -v "2 # file"
}
restorePermission(){
while IFS= read -r line
do
fileName=$(echo ${line} | sed 's#%#\n#g' | head -1 | sed 's#\/# #g' | awk '{print $NF}')
echo $fileName > /tmp/${fileName}
setfacl --restore=/tmp/${fileName}
done < ${1:-/tmp/backup.permission1}
}
Использование:
для разрешения резервного копирования backupPermission $PWD /tmp/backup.permission1
для восстановления резервной копии restorePermission /tmp/backup.permission1
для сравнения разрешения, вам нужно создать новый файл резервной копии прав доступа backupPermission $PWD /tmp/backup.permission2
после сравнения с помощью comparePermision
Приведенный выше сценарий может помочь вам или дать вам представление.