web-dev-qa-db-ja.com

サーバー全体のドットファイルをbashで維持する

組織の複数のユーザーでUbuntuセットアップを管理しているとしましょう。

標準の.bash_profile.bashrcには、エイリアス、プロンプト設定、PATH宣言などがあり、すべてのユーザーに使用してもらいます。サーバーが起動すると、chefで初期化され、システムにこれらのドットファイルをインストールするために使用されます。

これを行うための最良の方法は何ですか?いくつかのオプションがありますが、すべてに欠点があります-

  1. それらを/etcの下にインストールします(例:/etc/profile)。長所:すべてのユーザーはこのシステム全体の場所から読み取ります。 短所:プリインストールされているハエの既存のバージョンを上書きします。そもそもいつでもそれらをコピーすることができますが、それからそれらを更新して維持する必要があります。 Ubuntuのバージョンがデフォルトのドットファイルを変更する頻度によっては、問題にならない場合があります

  2. それらを/etcの下にインストールしますが、別の名前(/etc/bash_configsなど)を付けてから、ストックprofileファイルとbashrcファイルに行を追加して新しいファイルを取得します。 長所:これも機能し、設定はソースになります。 短所:本当にハッキングされているようで、追加のカスタムファイルのsourceにストックファイルの末尾に行をプログラムで追加することに依存しています。

  3. それらを/etc/skelの下にインストールして、新しいユーザーが作成されるたびに、それらのテンプレートがホームディレクトリにコピーされるようにします。 長所:各ユーザーはファイルのコピーを正しく取得します。 短所:ファイルを更新すると、個々のディレクトリで更新されますか?私は今推測しています。すべてのユーザーが同じファイルを指すようにファイルをシンボリックリンクする方法があるとよいでしょう。

私はそれを複雑にしすぎているかもしれませんが、私が欠けているのは、これを行うためのよりクリーンな方法が必要だと感じています。ある種の自動更新メカニズムで#3を実装する方法があるかどうかに最も興味があります。

ありがとう!

3
user2490003

2と3を組み合わせて使用​​すると思います。変更したファイルを/etc/bash_configまたはその他の場所に配置します。次に、/etc/skelのデフォルトを変更し、/etc/bash_configのファイルをソースするようにします。

これには、2と3の両方の利点がいくつかあります。

  • 新規ユーザーは適切なファイルを使用できます。
  • ファイルがソースされているため、変更はすぐに伝播されます。
  • これにより、ユーザーは自分のドットファイルを好きなように変更できます。
  • ストック/etc/bash.bashrcまたは/etc/profileファイルの編集は含まれません。これは、アップグレードによってシステムが破損することはないことを意味します。

/etc/skelファイルを変更するアップグレードは、変更が削除されたことを意味するため、問題が発生する可能性があることに注意してください。しかし、それは大したことではないはずです。

ハッキーであるということに関しては、まあ大丈夫です。少し。それほど悪くはありませんが、必要なのは次のようなものを1回実行することだけです。

echo ". /path/to/my_bashrc/" >> /etc/skel/.bashrc
echo ". /path/to/my_profile/" >> /etc/skel/.bashrc
2
terdon

/etc/profile.d/.sh拡張子を付けて変更を加えるだけです(例:/etc/profile.d/MYCOMPANY.sh)。それらは/etc/profileによって自動的に呼び出されます。

このようにして、いつでも更新でき、すべてのユーザーがそれらの更新を取得します。

1
Germar