デフォルトグループファイル共有の設定

デフォルトグループファイル共有の設定

ユーザーは3人です。第二そして「管理者」グループ内。他のユーザーがいます。D'ホームディレクトリにprojectフォルダがあります。私はすでにやったDフォルダの所有者になり、グループとして「admin」を指定しますchgrp。グループと所有者はすべての権限を持っていますが、まだ第二またはフォルダにアクセスできません。 2つの質問があります。

  1. 他のユーザーが他のユーザーのディレクトリ内のすべてのアイテムにアクセスできるかどうか

  2. グループに権限を付与すると、そのグループのユーザーには、ユーザーのホームディレクトリ外のファイルへのアクセス権のみが付与されますか?

編集する:プロジェクトの所有者とグループを設定する方法です。

sudo chown -R D project
sudo chgrp -R admin project

projectフォルダに入ろうとするとエラーが発生します。Dホームディレクトリ(ログイン時)

cd /home/D/project
-bash: cd: /home/D/project: Permission denied

以下はコマンドの出力ですls -la

drwxrwsr-x 7 D admin      4096 Nov 18 13:06 project

以下はグループの説明ですadmin

getent group admin
admin_users:x:501:A,B,C

また、ユーザーから入ると、グループはadminリストされません。groupsDしかし、それを使用するとそれは見えますcut -d: -f1 /etc/group。私が言及したユーザーはDec2-user実際には(AmazonサーバーのデフォルトのFedoraユーザー)です。

最後にサーバーにgitリポジトリを設定しました。リポジトリを作成しました。Dホームディレクトリですが欲しい第二そしてアクセス(および複製)も可能です。

答え1

  1. はい、ユーザーは他のユーザーのホームディレクトリにあるファイルにアクセスできます。
  2. いいえ、システムファイル権限以外のホームディレクトリについては特別な処理はありません。 」グループへの許可「グループ所有権の付与とグループ権限設定の2つの部分が含まれています。あなたの例には所有権のみが含まれています。

設定できます特権このchmodコマンドを使用すると再帰的に機能しますが、それだけでは、グループの1つのメンバーが作成した新しいファイルに他のメンバーがアクセスできるという保証はありません。

これまでに行ったことを詳しく説明し、gitストレージ共有の目標を明記していただきありがとうございます。

まず、UnixとLinuxでグループファイル共有がどのように普遍的に行われるかを見て、その内容を見てみましょうgit

デフォルトグループファイル共有の設定

Unix、GNUなどでは、この種のファイル共有に関する基本的な基本事項は次のとおりです。これは、グループのすべてのメンバーがグループ内の他のユーザーによって作成されたファイルに対する読み取りおよび書き込み権限を持つ1つ以上のディレクトリを設定する簡単な方法です。

パブリックユーザーグループがあると仮定すると、gitusersディレクトリはですrepo

  1. 共有メンバーを公開グループに追加します(例gitusers:)。

  2. umask 002グループ内のすべてのユーザーに設定します。つまり、デフォルトでは、ほとんどのファイルがグループ書き込み可能に作成されます。これはさまざまなシェル起動ファイル(たとえば/etc/bash.bashrc)で設定できます。 GNU/Linux システムの場合と詳細については、 とman 8 pam_umaskをご覧ください。man umask

  3. -Rすべての共有ファイルに対してグループ所有権を繰り返し設定します()。

    chgrp -R gitusers repo
    
  4. すべてのファイルに対してグループの読み取りおよび書き込み権限を繰り返し設定します。

    chmod -R g+rw repo
    
  5. ()repoとすべてのサブディレクトリを設定しますset group id on execution bit。このディレクトリに新しく作成されたファイルとサブディレクトリが親ディレクトリと同じグループ所有権を継承することsetgidを示します。setgid新しいサブディレクトリにもsetgid再帰効果を得るためにビットが設定されています。

    find repo -type d -exec chmod g+s {} \;
    

gitusers上記の手順が完了したら、この例では、同じグループ内のすべてのユーザーが互いのファイルを読み書きできるようにし、共有グループに属していないgitusersユーザーには書き込みアクセスを拒否する必要があります。 。さらに、必要な共有目的のために必要なだけ多くのディレクトリにコピーしてchownコマンドを発行できます。chmodfindgit

共有gitストレージ

git上記の設定変更だけで正常に動作しているようです。ただし、git共有権限とグループ権限も理解する必要があります(実際には上記の作業のいくつかを実行することもできます)。

共有ストレージを作成する場合は、git次のオプションを考慮してください。

git init --bare --shared=group  repo

既存のストレージがある場合は、次の設定を検討してください。

  1. コアヌード
  2. core.sharedRepository=グループ

よりgit-initマニュアルページそしてマニュアルgit-configページ詳細については。

ノート

ベアグループの共有gitリポジトリは、一般的な例と同じ手順の一部に従いますが、一貫性を確保し、他の共有ディレクトリの設定を容易にするために、一般的な例の手順も従うことをお勧めします。

答え2

いくつかは必要なようですが(私はこれらの問題の専門家ではないことを自由に認めていますが)、RobertLのすばらしい徹底的な答えでは扱いません。

  1. 他のユーザーが実際にグループにログインしていることを確認してくださいadmin

A$ newgrp admin

ユーザーはすでにグループに属しているためいいえグループパスワードを設定する必要があります。これにより:

A$ sudo chgpasswd
admin:secret (標準入力で入力)

  1. 確実にするDさんのホームディレクトリはグループに属しておりadmin、グループ検索が可能です。

D$ chgrp admin ~
D$ chmod g+x ~
D$ ls -lad ~
drwx--x--- 3 D admin 4096 Nov 24 19:25 /home/D

ユーザーがディレクトリまたはそのサブディレクトリに入ることができるように、ディレクトリは検索可能でなければなりませんproject。グループを作成する必要はありません読めるだから、D自分のファイル名は非公開のままです。他のユーザーが簡単にアクセスできるようにするには、projectシンボリックリンクを作成する必要があります。それ以外の場合は、毎回フルパスを入力する必要があります(シェルがパス名を読み取れないため、オートコンプリートは機能しません)。

関連情報