新しい "/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...

元のファイルが利用可能な場合、もう1つのアプローチは、ユーザーファイルが変更されていない場合にのみ更新し、そうでない場合は一緒にインストールすることです(Debianの*.dpkg-distアプローチと似ています)。ただし、これには使用とは異なるアプローチが必要ですtar

おすすめ記事