파일 권한 백업 및 복원

파일 권한 백업 및 복원

chown파일 소유권과 권한(무엇을 사용하고 변경할 수 있는지 ) 을 백업하고 복원하는 방법이 있습니까 chmod?

당신은 이것을 할 수 있습니다Windows에서 icacl 사용.

액세스 제어 목록은 어떻습니까?

답변1

이 작업을 수행하려면 다음 명령을 사용할 수 있습니다.액세스 제어 목록패키지(모든 주요 배포판에서 사용 가능해야 하지만 기본 설치의 일부가 아닐 수도 있음) ACL이 존재하는 경우 이를 백업하고 복원하지만 ACL을 지원하지 않는 시스템에서도 기본 권한에 적용됩니다.

현재 디렉터리와 해당 하위 디렉터리를 반복적으로 백업할 수 있는 권한:

getfacl -R . >permissions.facl

권한 복원 중:

setfacl --restore=permissions.facl

답변2

나는 이것을 수행하는 "기성품"에 대해 아무것도 모릅니다. 그러나 기본 권한을 처리하는 시작 스크립트는 다음과 같습니다. 설명된 ACL 중 어떤 것도 처리하지 않지만 귀하의 질문에서는 구체적으로 이러한 ACL을 제외합니다. (병리학적 파일 이름(공백으로 시작하거나 인쇄할 수 없는 문자가 포함된 파일 이름)에도 실패합니다.)

저장 권한

find * -depth -exec stat --format '%a %u %g %n' {} + >/tmp/save-the-list

복원 권한

while read PERMS OWNER GROUP FILE
do
    chmod "$PERMS" "$FILE"
    chown "${OWNER}:${GROUP}" "$FILE"
done </tmp/save-the-list

답변3

#!/bin/bash
# prepare files
home="/home/exchange"
cd $home
>acl
echo "#!/bin/bash">recovery_acl.sh
echo "cd $home">>recovery_acl.sh
f='./'
# create acl file sorted by dir_level
for i in `seq 0 15`;do
  find . -mindepth $i -maxdepth $i -type d -exec getfacl {} +|grep -E '*UTS|file:'>>acl
done
sed -i 's/default\:user/\-dm\ u/g' acl
sed -i 's/default\:group/\-dm\ g/g' acl
sed -i 's/user/\-m\ u/g' acl
sed -i 's/group/\-m\ g/g' acl
sed -i 's/\#\ file\:\ /\.\//g' acl
sed -i 's,\\,\\\\,g' acl

while IFS='' read -r line ; do
  # grep dir name
  if echo "$line" | grep -q "$f" ; then
    dir="$line"
    continue
  fi
  echo setfacl $line '"'$dir'"'>>recovery_acl.sh
  # grep non def acl (for files)
  if echo "$line" | grep -q '\-m' ; then
    echo setfacl $line '"'$dir'"'/*>>recovery_acl.sh
  fi
done < "acl"

sed -i "s/\\\134/\\\\\\\134/g" recovery_acl.sh
sed -i "s/\\\040/\\\\ /g" recovery_acl.sh

이 bash 스크립트는 acl 디렉토리(제 경우에는 acls = dir(parent) acl 파일)만 가져옵니다. 스크립트를 실행한 후 또 다른 "recovery_acl.sh"가 생성됩니다.

"해당 파일이나 디렉터리가 없습니다"와 같은 오류를 복구하는 것은 dir이 비어 있거나 dirname에 두 개 이상의 공백이 함께 있음을 의미합니다.

관련 정보