모든 파일 및 폴더에 대한 사용자 권한 부여


9

시스템의 모든 파일과 폴더에 액세스 할 수있는 사용자를 원합니다. 이는 로컬 시스템에서 RSYNC를 사용하여 원격 시스템을 백업하기위한 것입니다.

현재 우리는 사용자를 사용 하고 있으며이 backups사용자를 그룹에 추가했지만 rsync는 여전히 다음과 같은 메시지를 반환합니다.sudoadmin

rsync : opendir "/ location / to / folder"실패 : 권한 거부 (13)

rsync : send_files가 "/ location / to / file"을 열지 못했습니다 : 권한이 거부되었습니다 (13).

모든 backups액세스 권한을 사용자에게 부여하는 방법에 대한 모든 아이디어 (모든 그룹에 사용자를 추가하는 것이 부족합니다. 백업하려는 원격 서버는 모든 계정에 시스템에 자체 사용자가있는 전용 호스팅 서버입니다).

도움을 주셔서 감사합니다.


1
경로의 예를 들어 줄 수 있습니까? 그것의 사람의 경우 /proc, /dev등은 다음 오류가 예상된다.
Phil

사용자 backups를 추가 sudo하고 admin아무것도 변경하지 마십시오.
favadi

@ 필자는 전체 / home 디렉토리를 백업하려고합니다. 파일 / 실패 디렉토리는 다음과 같은 것들 /home/a/c/account/users/mail:username과 같은 권한이있는 drwx------및 소유 mail:4096. 사용자 backups가 그룹에 sudo있거나 그룹 admin에 대한 액세스 권한이 없기 때문에 액세스 권한이 없다고 가정합니다. 나는 몰라,하지만 폴더 / 파일에 오류가 있습니다.
토마스 클레이 슨

@favadi 나는 이미 그 일을 ... 여전히 작동하지 않습니다.
토마스 클레이 슨

rsyncsudo로 명령 을 실행해야합니다 .
Phil

답변:


6

사용자 backups를 사용자 그룹에 추가 한다고 sudo해서 시스템의 모든 파일에 계정 액세스가 자동으로 부여되는 것은 아닙니다. 사용자에게 sudo명령 을 실행할 수있는 권한을 부여합니다 .

공개 키 인증 (비밀번호가 없을 것임)을 사용하고 있으므로 보안 및 구현 용이성을 염두에두고 접근합니다. 를 사용 ssh하면 사용자가 매우 특정한 명령 만 실행하도록 제한 할 수 있습니다. 이 경우 사용자 가 수퍼 유저 권한 backups으로 실행 하도록 허용 할 수 있습니다 rsync.

키 교환을 이미 수행했으며 인증이 확인되었습니다. 디렉토리를 authorized_keys백업하는 원격 호스트 의 파일에서 사용자가 사용하는 키에 지시문을 /home추가 할 수 있습니다 . 이 지시문은 해당 키가 인증에 사용될 때만 해당 명령을 실행할 수 있도록 합니다. 따라서 키의 첫 번째 필드는 다음과 유사합니다.command=backups

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

더 나아가서 키에 더 많은 옵션을 추가 할 수 있습니다 (예 :) from=myhost,no-pty,no-X11-forwarding.

이는 적절한 보안을 제공하며 기본 파일 시스템 권한을 수정하지 않아도됩니다. authorized_keys예상대로 작동 할 때까지 파일에 배치 한 명령으로 재생해야합니다 . 뇌를 감싸는 데 약간의 시간이 걸릴 수 있습니다. 에 지정된 명령 authorized_keys은 기본적으로 rsync연결 호스트에서 전달할 옵션을 무시합니다 .

에 좋은 정보가 많이 man sshd있습니다. AUTHORIZED_KEYS FORMAT 섹션을 구체적으로 읽으려고합니다.


좋아, 나는 생각하고있다. authorized_keys 파일에 해당 지시문을 추가하면 수퍼 유저 권한으로 원격 명령을 실행할 수 있습니까? rsync -e ssh -az backups@domain.com:/home /location/of/local/folder원격 시스템에서 수퍼 유저로 실행되도록 명령 을 변경하려면 어떻게 합니까? 아니면 자동으로 수행됩니까? 시간과 도움을 주셔서 감사합니다. :)
Thomas Clayson

1
지시문을 사용하면 명령을 수퍼 유저로 자동 실행할 수 없습니다. 특정 키가 인증에 사용되면 사용자는 지정된 명령으로 만 제한됩니다. 수퍼 유저 권한은 "sudo"에서 가져옵니다. 기술적으로, 전체 "rsync"명령을 authorized_keys 파일에 넣고 백업 호스트에서 ssh 연결을 시작할 수 있습니다. 인증이 완료되면 전체 프로세스가 자동으로 시작됩니다. "ssh backups @ remotehost sudo rsync"와 같은 연결을 시작합니다
George M

뇌를 감싸는 데 약간의 시간이 걸리지 만 마침내 클릭하고 당신이 할 수있는 것을 알면 꽤 시원합니다.
George M

2

한 가지 옵션은 원격 시스템에서 rsync 서버를 실행하는 것입니다.

기본적으로 rsync.confwith을 uid=root만든 다음을 사용하십시오 rsync -az rsync://domain.com.

다른 누군가 가 Ubuntu에서 서버를 활성화하는 몇 가지 기본 사항에 대한 rsync 데몬 구성구성 예는 http://pastebin.com/5hQx1mRV 를 참조 하십시오 .

이 보안을 고려해야합니다. 더 나은 방법은 원격 시스템을 로컬 시스템으로 푸시하는 것입니다.


꽤 감사합니다. 그런 다음 /backup/lc원격 서버 의 폴더에서 모든 것을 재 동기화 합니까? 작동하도록 path비트를 변경 /home합니까?
토마스 클레이 슨

편집 친구에게 감사합니다. 그것의 유일한 문제는 우리가있는 고정 IP 주소를 보장 할 수 없으며 cron을 통해이 작업을 항상 수행하기를 원한다는 것입니다. "푸시"하면 IP 주소가 변경되면 작동을 멈출 수 있습니다. : /
Thomas Clayson

@ThomasClayson : 이것이 동적 DNS를위한 것입니다. :)
Warren Young

1

기본 파일 시스템이 지원하는 경우 ACL을 사용할 수 있습니다.

각 파일 및 디렉토리의 ACL에 그룹 백업을 추가해야합니다. 그러나 새로 작성된 파일 및 디렉토리에 대해 자동으로 추가하려면 먼저 기본 ACL을 모든 기존 디렉토리로 설정해야합니다. 따라서 원격 서버에서 :

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

그런 다음 모든 기존 디렉토리에 대한 rx 권한이 있어야하며 파일을 읽을 수 있습니다. 이 작업은 2 개의 명령으로 수행 할 수 있습니다 (이번에는 -d없이).

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

그러면 각 파일을 소유 한 기존 사용자 및 그룹을 변경하지 않고 파일을 그룹 백업으로 읽을 수있는 추가 권한이 부여됩니다.

참고 : 찾기를 가속화하려면 | xargs 명령 xargs 명령에 다음 옵션을 추가 할 수 있습니다. -P nn은 병렬 프로세스 수입니다. 머신에있는 CPU 수 + 1로 설정할 수 있습니다.


병목 현상은 CPU가 아닌 I / O이기 때문에 병렬 xargs는이 경우 속도를 높이 지 않습니다.
Mikel

리눅스는 변경 사항을 디스크에 커밋하기 전에 메모리에 캐시를 사용하므로 사용자 관점에서 더 빨리 느껴집니다. 심지어 작은 노트북 하드 디스크조차도 여러 ACL을 병렬로 설정하는로드를 처리 할 수 ​​있습니다. 그렇게 많은 I / O가 아닙니다. 그것을보십시오 :)
Huygens

나는 여기에서 간단하게 사용할 수있는 superuser.com/a/422954/53206 을 읽었습니다 . sudo setfacl -Rm d:group:backup:r-X,group:backup:r-X /home:) 훨씬 간단합니다!
Huygens
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.