파일 소유권을 한 사용자에서 첫 번째 사용자가 제어하는 ​​다른 사용자로 변경합니다.

파일 소유권을 한 사용자에서 첫 번째 사용자가 제어하는 ​​다른 사용자로 변경합니다.

나는 chown을 마음대로 사용할 수 없다는 것을 이미 알고 있습니다.일반 사용자로서user1하지만 내 경우에는 두 명의 사용자가 있습니다. Sudoers 파일을 사용하면 user2as에서 sudo를 사용할 수 있습니다.user1user2

user1아직도 파일 소유권을 부여하는 데 문제가 있습니까 user2?

지금까지 내가 생각해낸 최선의 방법은 다음과 같습니다 user1.

user1@localhost$ sudo --user user2 cp fileOwnedByUser1 /tmp/fileOwnedByUser1
user1@localhost$ rm fileOwnedByUser1
user1@localhost$ sudo --user user2 mv /tmp/fileOwnedByUser1 fileOwnedByUser1

그러나 이는 서투르고 비효율적인 것 같습니다. user1이를 수행하는 더 좋은 방법이 있습니까 ? 지금까지 내가 생각한 유일한 것은 user1파일에서 루트로 "chown"을 실행하는 것 입니다 Sudoers.

답변1

user1이 sudo를 통해 user2로 명령을 실행할 수 있다는 사실은 커널의 하위 수준 파일 권한 결정에 중요하지 않습니다. 루트용으로 예약되어 있습니다 chown(Linux도 이 기능을 가진 프로세스를 허용 CAP_CHOWN하지만 프로세스에 이 기능을 제공하는 것은 간접적으로 루트 권한을 부여하는 것과 동일하므로 도움이 되지 않습니다).

chownuser1이 user2에 속한 파일을 호출할 수 있도록 허용하는 sudo 규칙(아마도 작은 래퍼 스크립트 사용)을 작성할 수 있습니다 . 문제는 파일 소유권 확인과 호출 사이에 경쟁 조건이 있기 때문에 이것이 안전하지 않다는 것입니다 chown. user1(또는 디렉터리 권한에 따라 세 번째 사용자)이 확인과 작업 사이에 다른 파일을 대체할 수 있습니다.

다음을 사용하는 작은 프로그램을 작성할 수 있습니다.fchown시스템 호출: 파일을 열고, 호출하고 lstat, 현재 소유권을 확인하고, 모두 정상이면 호출합니다 fchown. 여기서는 확인과 작업이 동일한 파일 핸들에서 수행되므로 파일 대체의 위험이 없습니다.

관련 정보