현재 파일 세트를 자동으로 암호화하고 해독하려고 합니다. 현재 사용하는 암호화의 경우:
gpg --batch --recipient [RECIPIENT] --encrypt-files [FILES]
암호 해독을 위해 거의 동일하게 사용합니다.
gpg --batch --decrypt-files [FILES]
그러나 암호화 및 암호 해독 프로세스 중에 원래 파일 권한이 손실됩니다.
$ gpg --batch --recipient aram --encrypt-files foo
$ ls -l foo*
-rw------- 1 aram aram foo
-rw-r--r-- 1 aram aram foo.gpg
$ rm foo && gpg --batch --decrypt-files foo
$ ls -l foo*
-rw-r--r-- 1 aram aram foo
-rw-r--r-- 1 aram aram foo.gpg
암호화하는 동안 이에 만족하며 파일 권한을 수동으로 설정할 수 있습니다. 그러나 암호 해독 프로세스 중에 특정 파일(예: SSH 키)은 적절한 권한 없이 기능을 사용하여 보안 위험을 초래합니다.
일괄 암호 해독 중에 파일 권한을 보존하는 메커니즘이 있습니까?
물론 파일을 반복하여 권한을 읽고 암호를 해독한 다음 권한을 다시 설정할 수 있습니다. 그러나 이는 대량 암호 해독의 목적을 상실합니다.
gnupg.org에는 4년이 지났고 그 이후로 많은 활동이 이루어지지 않은 공개 문제가 있습니다.https://dev.gnupg.org/T2945
답변1
~처럼@ab그리고@프로스트슈츠제안, 파일을 tar
파일로 래핑한 다음 암호화하는 것은 옵션입니다.
그러나 원본 파일 구조를 해독하지 않고도 액세스할 수 있기를 원합니다. 현재 저는 일괄 암호 해독 후 파일 권한을 정렬하는 접근 방식을 취했습니다. 이는 해독된 파일이 이미 디스크에 있을 때 권한을 정렬하는 추가 이점이 있습니다.
gpg --batch --decrypt-files $files
for encrypted in $files ; do
decrypted=${encrypted%.gpg}
chmod --reference="$encrypted" -- "$decrypted"
done
물론, 해독된 각 파일 뒤에 정렬하는 것도 가능합니다.
for encrypted in $files ; do
gpg --decrypt-files "$encrypted"
decrypted=${encrypted%.gpg}
chmod --reference="$encrypted" -- "$decrypted"
done
해독된 파일이 암호화된 파일보다 더 많은 권한을 갖지 않도록 하려면 임시 더미 파일을 사용하여 강제로 gpg
덮어쓸 수 있습니다.
for encrypted in $files ; do
decrypted=${encrypted%.gpg}
touch "$decrypted" && chmod --reference="$encrypted" -- "$decrypted"
gpg --yes --decrypt-files "$encrypted"
done
암호화 후 권한을 조정하는 데에도 동일한 메커니즘을 사용할 수 있습니다. 성능 테스트를 수행하지 않았으며 옵션 중 하나가 더 빠른지 확실하지 않습니다.
나는 이 답변을 즉시 받아들이지 않을 것입니다. 어쩌면 누군가가 이보다 더 나은 해결책을 생각해 낼 수도 있습니다.