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