![여러 사용자 홈 디렉터리에 디렉터리를 복사하고 사용자/그룹 소유권을 변경합니다.](https://linux55.com/image/25761/%EC%97%AC%EB%9F%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%ED%99%88%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EB%B3%B5%EC%82%AC%ED%95%98%EA%B3%A0%20%EC%82%AC%EC%9A%A9%EC%9E%90%2F%EA%B7%B8%EB%A3%B9%20%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84%20%EB%B3%80%EA%B2%BD%ED%95%A9%EB%8B%88%EB%8B%A4..png)
내 Ubuntu 서버에는 약 150개의 쉘 계정이 있습니다. 모든 사용자 이름은 접두사 u12로 시작됩니다. 루트 액세스 권한이 있고 "somefiles"라는 디렉터리를 모든 홈 디렉터리에 복사하려고 합니다. 디렉토리를 복사한 후에는 디렉토리의 사용자 및 그룹 소유권을 사용자의 소유권으로 변경해야 합니다. 사용자 이름, 그룹 및 홈 디렉터리 이름은 동일합니다. 이것이 어떻게 달성될 수 있습니까?
답변1
대상 사용자로 복사합니다. 그러면 대상 파일이 자동으로 생성됩니다. 원본 파일을 모든 사람이 읽을 수 있는지 확인하십시오(또는 최소한 모든 의도된 사용자가 읽을 수 있음). chmod
복사된 파일을 모든 사람이 읽을 수 없도록 하려면 나중에 실행하십시오.
getent passwd |
awk -F : '$1 ~ /^u12/ {print $1}' |
while IFS= read -r user; do
su "$user" -c 'cp -Rp /original/location/somefiles ~/'
done
답변2
$ basename -a /home/* | xargs -rI{} sudo rsync -a --chown {}:{} somefiles/ /home/{}/
설명하다
basename -a /home/*
모든 사용자의 홈 디렉토리를 선택하고 경로 이름을 삭제합니다.
xargs -rI{}
표준 입력의 각 항목에 대해 다음 명령을 개별적으로 실행하여 {}
항목의 텍스트(이 경우 사용자 디렉터리)를 바꿉니다.
rsync -a --chown {}:{} somefiles/ /home/{}/
디렉터리를 somefiles/
사용자의 홈 디렉터리에 복사하고 소유자 및 그룹을 사용자 이름으로 바꿉니다.