setgidディレクトリの目的は何ですか?


11

setgidがどのように機能するかは知っていますが、なぜ設計されているのかわかりません。どのような問題が解決するのかを示す例はありますか?

回答:


18

setgidファイル/バイナリは明らかに有用ではないかもしれませんが、ディレクトリに適用されたsetgidビットが非常に有用であることは間違いありません。あなたが異なるワーキンググループの一部であり、それぞれが独自のUNIX(許可)グループを持っていると仮定します。新しいファイルを作成するときに適切なグループ所有権が適用されることを確認し、そのプロジェクトグループの同僚がそれらのファイルにアクセスできるように、プロジェクトフォルダにsetgidビットを配置しますか?


2
CVSを使用している場合、この理由からおそらくCVSに精通しているでしょう(リポジトリ内のディレクトリがsetgidでない場合、別のユーザーがファイルをチェックアウトしてコミットしようとすると、多くのアクセス許可エラーが発生します)
Suppressingfire

はい、正しいです。他のユーザーはsetgidディレクトリで作成したファイルを共有(読み取り)できますが、グループ書き込み可能(g + w)権限はsetgidディレクトリで継承されないため、別のユーザーはサブに追加できません。 setgidディレクトリに作成されたディレクトリ、これはその使用を制限しました。そして、私はこの質問を持っています、それはCVS共有読み取り問題を解決しますが、新しく作成されたディレクトリへの共有書き込みは解決しません。?
謝Jìléi

1
そのため、適切なumask設定も使用する必要があります。たとえば、umask 007はユーザーとグループには完全な許可を残しますが、他のユーザーには許可しません。
andol

13

主な用途は、ファイルツリーのグループ所有者を保持することです。

[lockie@bubbles tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[lockie@bubbles tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[lockie@bubbles tmp]$ ls -al dir1
total 32
drwxrwxr-x   3 lockie  lockie   4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x   2 lockie  lockie   4096 Dec 13 19:32 dir
-rw-rw-r--   1 lockie  lockie      0 Dec 13 19:32 file
[lockie@bubbles tmp]$ ls -al dir2
total 32
drwxr-sr-x   3 lockie  staff  4096 Dec 13 19:32 .
drwxrwxrwt 125 root root  20480 Dec 13 19:32 ..
drwxrwsr-x   2 lockie  staff  4096 Dec 13 19:32 dir  < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r--   1 lockie  staff     0 Dec 13 19:32 file < note new file is owned by "staff" group
[lockie@bubbles tmp]$

これは、異なるユーザーがディレクトリの下にファイル/ディレクトリを作成/編集する環境で役立つ傾向があります:すべてのファイル/ディレクトリが同じグループを共有する場合、すべてのユーザーはファイル/ディレクトリを編集/変更できます(許可が許可されます):これにより、状況が回避されます「xyzはファイルabcを所有しているため、編集できません」など。

この方法でsetgidを使用する代わりに、grpidファイルシステムマウントオプションがあります。

man mountから:

grpidまたはbsdgroups / nogrpidまたはsysvgroups

これらのオプションは、新しく作成されたファイルが取得するグループIDを定義します。grpidが設定されると、作成されたディレクトリのグループIDが使用されます。そうでない場合(デフォルト)、ディレクトリにsetgidビットが設定されていない限り、現在のプロセスのfsgidを使用します。

有効にすると、grpidでマウントされたファイルシステムで作成されたファイル/ディレクトリも、親ディレクトリのグループを継承します。

[lockie@bubbles ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[lockie@bubbles ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[lockie@bubbles ~]$ ls -al dir3
total 12
drwxrwxr-x  3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x  2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r--  1 lockie users    0 Dec 13 19:37 file  < inherited "users" group from parent dir
[lockie@bubbles ~]$

grpidオプションを使用すると、人的エラーの可能性が適切に減少することがわかりました(dirパーミッションに関係なく、ファイルシステムが作業を行うため)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.