특정 사용자의 모든 파일에 대한 소유권을 변경할 수 있습니까?


9

사용자가 소유 한 모든 파일을 재귀 적으로 찾고 Gnu / Linux의 다른 사용자 / 그룹으로 변경하는 방법이 있습니까?

나는 마술 하나의 라이너가 있어야한다고 가정하지만 내 명령 줄 마법사 기술은 그 정도가 아닙니다. :)

감사!

답변:


14

옵션 find과 함께 명령을 사용하십시오 -user. 다음과 같은 것 :

find / -user john

결국 "john"사용자가 소유 한 모든 파일이 나타납니다.

소유권을 변경하려면 ( find원하는 목록이 있는지 확인하기 위해 실행하지 않고 실행하십시오) 다음과 같습니다.

find / -user john -exec chown harry {} \;

할 것입니다.


1
나는 일반적으로 UID를 사용 chown harry:harry하고 그룹 멤버쉽이 올바른지 확인 해야하는 경우 실행 합니다. 그러나 이것은 응용 프로그램에 따라 크게 다릅니다.
ewwhite

UID를 사용하지 않으면 실제로 작동하지 않습니다. UID입니다은 / 등은 / passwd 파일에서 찾을 수 있습니다
user222054

7

이것은 늦었지만 오늘 rsync--usermap옵션 이 없기 때문에이 질문을 우연히 발견했습니다 .

chown(v. chown (GNU coreutils) 8.13)은 내장 재귀 ( -R) 및 --from옵션을 제공하므로 (및 내) 문제를 사용하여 해결할 수도 있습니다.

chown -R --from=john harry /


보다 구체적으로 서버를 OpenSuse에서 데비안으로 마이그레이션하고 있으며 apache2의 사용자와 그룹은 배포판마다 다릅니다. OpenSuse에서 사용자 wwwrun (id:30)와 그룹 www (id:8)을 데비안 www-data (id: 33)으로 사용하십시오. 사용하여 파일을 복사 한 후

rsync -az /path/to/files me@debian:/path/to/

나는 사용했다

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

대상 (데비안) 머신에서.


참고 : rsync version 3.1.0 protocol version 31위에서 언급 --usermap했으므로 소스 시스템에서 하나의 명령으로 세 단계를 모두 수행 할 수 있다면 다음과 같습니다.

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

나는 특히 그룹을 변경하는 옵션에 대해 이것을 선호합니다. find -exec나를 위해 하나 라이너는 수동으로 일을하기 전에, 최후의 수단이다. (또한, 나는 쓰기를 싫어 {} \;하지만, 이것은 개인적인)
토마스 Gandor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.