내 네트워크의 일부 컴퓨터에 대해 자동 백업 작업을 설정하고 있습니다. rsync
다른 모든 컴퓨터를 백업하기 위해 매일 명령을 실행하는 서버가 있습니다 . 나는 작업을 실행하는 사용자가 rsync
모든 사람의 홈 디렉터리(암호화된 SSH 키와 같은 민감한 파일 포함)를 읽을 수 있지만 시스템의 어느 곳에도 쓸 수 없도록 하고 싶습니다(해당 항목 제외 /tmp
). 또한 일반 사용자가 서로의 홈 디렉토리, 특히 민감한 부분을 읽는 것을 방지하고 싶습니다.
처음 생각한 것은 백업 사용자로만 구성된 그룹을 만드는 것이었습니다. 그런 다음 chgrp
사용자의 파일을 백업 그룹에 저장합니다. 본인은 회원이 아니기 때문에 서로의 파일을 읽을 수 없지만, 백업 사용자는 백업하고 싶은 모든 내용을 읽을 수 있습니다.
그러나 사용자는 chgrp
자신이 속하지 않은 그룹에 가입할 수 없습니다. 사용자가 서로의 홈 디렉토리를 읽을 수 있기 때문에 그룹에 추가할 수 없습니다.
NOPASSWD
sudoers
백업 사용자에게 루트로 필요한 정확한 명령만 실행할 수 있는 항목을 파일에 제공하는 것을 고려했지만 rsync
올바르게 설정하지 않으면 재앙이 될 수 있는 것 같습니다(방법이 있는 경우). 심볼릭 링크 생성) 예를 들어 to /etc/sudoers
및 to get 명령을 사용하면 대상으로 사용할 수 있습니다.rsync
답변1
TL,DR: 루트로 백업을 실행합니다. rsync
매개변수를 다시 확인하는 한 sudo를 통해 정확한 명령을 승인하는 데는 아무런 문제가 없습니다 . 호출자가 매개변수를 지정할 수 있도록 허용하는 것이 문제입니다.
백업 사용자가 파일을 읽을 수 있도록 하려면 다음을 참조하십시오.사용자가 다른 사용자의 홈 디렉토리를 읽을 수 있도록 허용아이디어는파일 시스템 바인딩이 사용자는 모든 콘텐츠의 파일 시스템 보기를 읽을 수 있습니다.
하지만 파일 레벨은 이 특정 문제를 해결하는 데 가장 적합한 레벨이 아닙니다. 백업의 문제 rsync
는 일관성이 없다는 것입니다. 사용자가 변경하는 경우file1
그 다음에 file2
백업이 진행 중이지만 백업이 도착하기 file2
전에 file1
백업에는 이전 버전 file2
과 새 버전이 모두 포함됩니다 file1
. file2
새 버전 이고 삭제 file1
되면 file1
파일이 백업에 전혀 표시되지 않는다는 의미이며 이는 확실히 좋지 않습니다.
이 문제에 대한 해결책은 다음을 만드는 것입니다.스냅 사진파일 시스템의 파일 시스템을 선택하고 여기에서 백업을 실행합니다.
스냅샷 기술에 따라 사용자가 스냅샷을 읽을 수 있도록 하는 방법이 있을 수 있습니다. 그렇지 않은 경우 스냅샷을 마운트하고 범용 파일 시스템 기반 솔루션을 사용하십시오. 그렇더라도 일반 사용자로 실행하면 소유권을 백업할 수 없기 때문에 rsync에는 여전히 문제가 있습니다. 따라서 여러 사용자의 디렉터리를 백업하려면필요백업을 루트로 실행하십시오.
답변2
또 다른 (좀 더 복잡한 ;)) 방법은 관련 파티션의 읽기 전용 보기를 수행하는 것입니다( kpartx -r
또는 원시 파티션인 경우 lvm 스냅샷(선호!), btrfa/zfs/에 스냅샷 기능이 내장된 경우( 선호) 마찬가지로)) 백업 사용자에게 이에 대한 읽기 전용 권한을 부여합니다. 그런 다음 kvm에서 이 파티션(가상 HDD를 통해 제공됨)을 대상(qemu/kvm을 사용하는 경우 공유 폴더라고도 불리는 p9에서 제공됨)에 자동으로 백업하는 작은 Linux를 준비하십시오.
답변3
한 명의 사용자만 root
시스템의 모든 파일을 읽을 수 있습니다. 이것이 상용 백업 소프트웨어를 실행하려면 루트 액세스가 필요한 이유입니다. 이를 수행하는 방법에는 여러 가지가 있지만 rsync를 사용하려는 경우 동등한 루트 계정을 만들고 유사 /sbin/nologin
하거나 동등한 계정으로 셸을 설정한 다음 해당 사용자가 이를 사용하도록 하는 것이 좋습니다 cron
. 더 깊어지면 sudoers
일이 더 쉬워지고 필요 이상으로 복잡해지고 완전히 새로운 문제가 발생합니다.