ユーザーがプロトコルを介してコンテンツを取得できる共有Gitリポジトリを設定しましたssh
。
git_group
特定のユーザーグループ(たとえば)のユーザーだけがリポジトリにアクセスできるように権限を設定したいと思います。以下を使用して、生成されたファイルをグループからアクセスできるようにすることができます。
- gid 設定:
chmod g+s
.recursively:find . -type d print0 | xargs -0 chmod g+s
. - アクセス制御リストにデフォルト値を設定します。
sudo setfacl -R -m g:git_group:rwx .
そしてsudo setfacl -R -d -m g:git_group:rwx .
ユーザーを削除するまで、これはすべて大丈夫ですgit_group
。そのユーザーがコミットをプッシュすると、そのユーザーはgitリポジトリ内の特定のファイルの所有者になります。グループから削除された後でも、ユーザーはこれらのファイルを変更し続けることができ、一部のgitコマンドはまだ成功する可能性があります。
gitリポジトリ内のすべてのファイルの所有者を変更すると、リポジトリへのユーザーアクセスは拒否されますが、グループからユーザーを削除するだけでユーザーのアクセスを拒否するようにリポジトリを設定できますか?
私が知る限り、デフォルトのLinuxファイル権限の下でグループに所有者よりも多くの権限を与えると、未定義の動作が発生する可能性があります。
答え1
voracのコミット、細かい権限を拡張することは、専用のgitサーバーソフトウェアを使用する主な理由の1つです。
Linuxのファイルシステム権限に依存すると、読み取り専用権限以外には何も実行されません。ご存知のように、他のユーザーがリポジトリを変更すると、自分がアップロードしたファイルを所有し、そのファイルの権限を完全に制御できるため、実際にはかなり有害です。
この問題を解決する唯一の方法は、ユーザーが専用のGitサーバーソフトウェアを介してアクセスできるようにすることです。これにより、ユーザーはまだSSHプロトコルを介してアクセスできますが、完全にカスタマイズされたSSHサーバーまたは次の条件でアクセスできます。珪藻土、非常にカスタマイズされたSSHユーザーです。
非常に簡単な軽量設定にはgitoliteで十分です。時間が経つにつれて、次のようなより洗練されたERMツールに切り替えたい場合があります。GitLab。