ユーザーは3人です。ㅏ、第二そして氏「管理者」グループ内。他のユーザーがいます。D'ホームディレクトリにproject
フォルダがあります。私はすでにやったDフォルダの所有者になり、グループとして「admin」を指定しますchgrp
。グループと所有者はすべての権限を持っていますが、まだㅏ、第二または氏フォルダにアクセスできません。 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
リストされません。groups
Dしかし、それを使用するとそれは見えますcut -d: -f1 /etc/group
。私が言及したユーザーはDec2-user
実際には(AmazonサーバーのデフォルトのFedoraユーザー)です。
最後にサーバーにgitリポジトリを設定しました。リポジトリを作成しました。Dホームディレクトリですが欲しいㅏ、第二そして氏アクセス(および複製)も可能です。
答え1
- はい、ユーザーは他のユーザーのホームディレクトリにあるファイルにアクセスできます。
- いいえ、システムファイル権限以外のホームディレクトリについては特別な処理はありません。 」グループへの許可「グループ所有権の付与とグループ権限設定の2つの部分が含まれています。あなたの例には所有権のみが含まれています。
設定できます特権このchmod
コマンドを使用すると再帰的に機能しますが、それだけでは、グループの1つのメンバーが作成した新しいファイルに他のメンバーがアクセスできるという保証はありません。
これまでに行ったことを詳しく説明し、git
ストレージ共有の目標を明記していただきありがとうございます。
まず、UnixとLinuxでグループファイル共有がどのように普遍的に行われるかを見て、その内容を見てみましょうgit
。
デフォルトグループファイル共有の設定
Unix、GNUなどでは、この種のファイル共有に関する基本的な基本事項は次のとおりです。これは、グループのすべてのメンバーがグループ内の他のユーザーによって作成されたファイルに対する読み取りおよび書き込み権限を持つ1つ以上のディレクトリを設定する簡単な方法です。
パブリックユーザーグループがあると仮定すると、gitusers
ディレクトリはですrepo
。
共有メンバーを公開グループに追加します(例
gitusers
:)。umask 002
グループ内のすべてのユーザーに設定します。つまり、デフォルトでは、ほとんどのファイルがグループ書き込み可能に作成されます。これはさまざまなシェル起動ファイル(たとえば/etc/bash.bashrc
)で設定できます。 GNU/Linux システムの場合と詳細については、 とman 8 pam_umask
をご覧ください。man umask
-R
すべての共有ファイルに対してグループ所有権を繰り返し設定します()。chgrp -R gitusers repo
すべてのファイルに対してグループの読み取りおよび書き込み権限を繰り返し設定します。
chmod -R g+rw repo
()repoとすべてのサブディレクトリを設定します
set group id on execution bit
。このディレクトリに新しく作成されたファイルとサブディレクトリが親ディレクトリと同じグループ所有権を継承することsetgid
を示します。setgid
新しいサブディレクトリにもsetgid
再帰効果を得るためにビットが設定されています。find repo -type d -exec chmod g+s {} \;
gitusers
上記の手順が完了したら、この例では、同じグループ内のすべてのユーザーが互いのファイルを読み書きできるようにし、共有グループに属していないgitusers
ユーザーには書き込みアクセスを拒否する必要があります。 。さらに、必要な共有目的のために必要なだけ多くのディレクトリにコピーしてchown
コマンドを発行できます。chmod
find
git
共有git
ストレージ
git
上記の設定変更だけで正常に動作しているようです。ただし、git
共有権限とグループ権限も理解する必要があります(実際には上記の作業のいくつかを実行することもできます)。
共有ストレージを作成する場合は、git
次のオプションを考慮してください。
git init --bare --shared=group repo
既存のストレージがある場合は、次の設定を検討してください。
- コアヌード
- core.sharedRepository=グループ
よりgit-init
マニュアルページそしてマニュアルgit-config
ページ詳細については。
ノート
ベアグループの共有git
リポジトリは、一般的な例と同じ手順の一部に従いますが、一貫性を確保し、他の共有ディレクトリの設定を容易にするために、一般的な例の手順も従うことをお勧めします。
答え2
いくつかは必要なようですが(私はこれらの問題の専門家ではないことを自由に認めていますが)、RobertLのすばらしい徹底的な答えでは扱いません。
- 他のユーザーが実際にグループにログインしていることを確認してください
admin
。
A$ newgrp admin
ユーザーはすでにグループに属しているためいいえグループパスワードを設定する必要があります。これにより:
A$ sudo chgpasswd
admin:secret
(標準入力で入力)
- 確実にする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
シンボリックリンクを作成する必要があります。それ以外の場合は、毎回フルパスを入力する必要があります(シェルがパス名を読み取れないため、オートコンプリートは機能しません)。