
私は数ヶ月間それほど大きくないシステムを管理してきましたが、現在の処理方法が気に入らないいくつかの問題がまだ残っています。
現在、サーバーにアクセスしているユーザーは実際には1人だけなので、大きな問題はないようです。ただし、そのユーザー(およびサーバーにアクセスする他のすべてのユーザー)は、常に変化するgitリポジトリにアクセスできます。最新情報を入手してください。しばらく前に、既存のすべてのユーザーに対してすべてのリポジトリを取得するためにrootとしてcronジョブを作成しましたが、ファイルがrootで作成されたため、リポジトリの権限が破損し、通常のユーザーは「pullなどのgitアクション」などの操作を実行しますできませんでした。 「速い。
だから私の質問は、実際にgit repoディレクトリとサブディレクトリの権限を変更せずにrootでリポジトリを更新する方法はありますか?それとも、既存のすべてのユーザーを繰り返してそれぞれログインするスクリプトを作成する必要があります。ユーザーの権限が損なわれないようにリポジトリを更新します。
究極の目標は、これを最大限に自動化することです。各リポジトリが動作している間に手動でインポートすることは、長期的に維持するソリューションではないためです。
答え1
はい、それらの1人はroot
それが可能だと思います。はい、すべてのユーザーに変更してください。
だから
as root:
foreach user: # for user in …
create a sub-shell: # (stuff todo in sub-shell)
become that user # sudo
do the work # git pull
ルート状態を再取得するためにサブシェルを作成する方が簡単かもしれません(必ずしも必要ではありませんが、他のシェリング方法はわかりません)。