/etc/skel
Debianと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...
元のファイルが利用可能な場合、もう1つのアプローチは、ユーザーファイルが変更されていない場合にのみ更新し、そうでない場合は一緒にインストールすることです(Debianの*.dpkg-dist
アプローチと似ています)。ただし、これには使用とは異なるアプローチが必要ですtar
。
答え2
FreeBSDを使用してこの問題を発見した人は、次のコマンドを使用してください。
パスワードユーザーモードユーザー-中
それをします。このコマンドの一部として別のスケルトンディレクトリを選択することもできます。-k dir