새로운 "/etc/skel" 파일로 이전 사용자를 "usermod"하는 방법은 무엇입니까?

새로운 "/etc/skel" 파일로 이전 사용자를 "usermod"하는 방법은 무엇입니까?

/etc/skelDebian 및 Ubuntu 설치에 대한 새 콘텐츠로 기존 사용자를 "업데이트" 하고 싶습니다 . 스크립트 작성이 가능합니다..

find /home -maxdepth 1 -mindepth 1 -type d | while read homedir; do
    user="$(stat -c%U $homedir)"
    su -c 'tar -cf- -C /etc/skel . | tar -vxf- -C $HOME' $user
done

...하지만 더 나은 방법을 아는 사람이 있는지 궁금합니다.

답변1

/etc/skel이와 같은 스크립트를 사용하여 사용자 디렉터리의 파일을 업데이트할 수 있습니다.

#!/bin/sh
#
getent passwd |
    while IFS=: read -r username x uid gid gecos home shell
    do
        if [ ! -d "$home" ] || [ "$username" == 'root' ] ## || [ "$uid" -lt 1000 ]
        then
            continue
        fi
        tar -cf - -C /etc/skel . | sudo -Hu "$username" tar --skip-old-files -xf -
    done

노트

  • 이미 존재하는 파일은 의도적으로 업데이트하지 않지만, 사용자가 삭제한 파일은 인식하지 못하지만 다시 넣어서 다시 만들려는 경우
  • root파일이 전혀 업데이트되지 않습니다
  • UID가 1000 미만인 시스템 계정도 제외하려면 ##삭제하세요 .if ...conditions...

원본 파일을 사용할 수 있는 경우 다른 접근 방식은 사용자 파일이 변경되지 않은 경우에만 업데이트하고, 그렇지 않으면 함께 설치하는 것입니다(Debian의 *.dpkg-dist접근 방식과 유사). 그러나 이를 위해서는 를 사용하는 것과는 다른 접근 방식이 필요합니다 tar.

답변2

FreeBSD를 사용하여 이 문제를 발견한 사람은 다음 명령을 사용하십시오.

비밀번호 사용자 모드사용자-중

그것을 할 것입니다. 이 명령의 일부로 다른 뼈대 디렉터리를 선택할 수도 있습니다.-k dir

관련 정보