여러 사용자 홈 디렉터리에 디렉터리를 복사하고 사용자/그룹 소유권을 변경합니다.

여러 사용자 홈 디렉터리에 디렉터리를 복사하고 사용자/그룹 소유권을 변경합니다.

내 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/사용자의 홈 디렉터리에 복사하고 소유자 및 그룹을 사용자 이름으로 바꿉니다.

관련 정보