chown은 허용되지 않지만 쓰기 권한이 있습니다. 재귀적 소유권을 어떻게 얻을 수 있나요?

chown은 허용되지 않지만 쓰기 권한이 있습니다. 재귀적 소유권을 어떻게 얻을 수 있나요?

다음 시나리오를 고려해보세요.

  1. rwx디렉터리 그룹 ID의 구성원으로 디렉터리에 액세스 할 수 있습니다 .
  2. 시스템 관리자가 사용자의 실행을 허용하지 않습니다 chown(참조:이 스레드세부)

디렉토리의 재귀 소유권을 얻는 방법은 무엇입니까?

나는 내가 갖고 싶다고 가정하면 다음을 할 수 있다고 믿습니다.A

cp -R A B
rm -R A
mv B A

A그러나 이는 지루한 작업이며 크기가 클 경우 많은 공간이 필요할 수 있습니다.

답변1

다음과 같이 소유권을 얻을 수 있습니다.

$ mv A A.old
$ mkdir A
$ mv A.old/* A.old/.[!.]* A.old/..?* A/
$ rmdir A.old

답변2

실제로는 디렉토리의 소유권만 가져오면 됩니다. 일반 파일은 다음에 수정할 때 자동으로 처리되며 심볼릭 링크와 파이프는 중요하지 않으며 장치나 다른 이국적인 유형이 없다고 가정하겠습니다.

디렉토리의 재귀적 복사본을 만들 수 있지만 일반 파일을 복사하는 대신 하드 링크를 만듭니다. GNU coreutils 사용(Linux, Cygwin):

cp -al A B

모든 일반 파일은 A/dir/file에 하드 링크되어 있습니다 B/dir/file. 그런 다음 소스 트리를 삭제할 수 있습니다.

GNU coreutils가 없으면 대신 rsync를 사용할 수 있습니다.

cd A
rsync -a --link-dest=$PWD . ../B

A를 삭제해도 실제로 파일이 삭제되지 않도록 하려면 모든 일반 파일의 하드 링크 수가 2 이상인지 확인하세요. 다음 명령은 아무 것도 출력하지 않아야 합니다.

find A -type f -links 1

답변3

복사를 포함하지 않는 모든 방법에는 no-chown 규칙이 발생합니다. 루트에게 이 작업을 요청하세요.

야심 찬 경우 자체 보안 검사를 수행하고 보다 완화된 규칙에 따라 chown을 허용할지 여부를 결정하는 setuid-root 설치용으로 설계된 새로운 chown 유사 유틸리티를 작성할 수 있습니다.

주로 디스크 공간에 관한 것이라면 cp를 rm과 인터리브하는 도구만 있으면 됩니다.

관련 정보