
当社では、LDAP 認証と、おそらく私がよく理解していない他のものを使用しています。そのため、次の質問はその結果である可能性があります。chown
コマンドの奇妙な動作を見つけましたが、これが正常かどうかはわかりません。これが私のシナリオです。
ユーザー mark の GID は SK001936 で、mark のホーム ディレクトリの所有者グループは SK001778 です。ご覧のとおり、これらは同じではありません。グループ SK001778 は、ユーザー mark のホーム ディレクトリを所有者 (mark) として、すべての操作 (rwx) を許可されています。
[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ ls -lad .
drwxrwxr-x 6 mark SK001778 4096 Oct 10 13:30 .
ユーザー michael と mark の GID は両方とも SK001936 です。
[michael@machine mark]$ id
uid=40570(michael) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
ユーザー michael は、ユーザー mark のホーム ディレクトリにファイルを作成できません。これは、michael が、mark のホーム ディレクトリへの完全な (rwx) アクセス権を持つグループ (SK001778) に属していないことが原因です。
[michael@machine mark]$ touch michael
touch: cannot touch `michael': Permission denied
通常の状況では、ユーザーはファイルの所有者であっても chown を発行できません。ただし、この例では、ホーム ディレクトリの所有者 (mark) は、自分のホーム ディレクトリの所有者グループを変更できます (したがって、このグループに属するユーザーは自分のホーム ディレクトリにアクセスできるようになります)。
[mark@machine ~]$ chown mark:SK001936 .
現在、マークのホーム ディレクトリにアクセスできるグループは、マイケルの GID と同じグループであるため、マイケルはマークのホーム ディレクトリでファイルやフォルダを作成/削除できるようになります。
[michael@machine mark]$ touch michael
mark は、自分のホーム ディレクトリのグループ所有権を元に戻すことができません (このため、chown を発行できるのは root のみであることに注意してください。なぜ一般ユーザーはファイルを変更できないのか):
[mark@machine ~]$ chown mark:SK001778 .
chown: changing ownership of `.': Operation not permitted
私の質問は、マークがホームディレクトリのグループ所有権を変更できたのはなぜかということです。宣言したchown は root のみが発行できます。ボックスは RedHat 5.6 です。
答え1
グループのみを変更する方法でを使用するとchown
、 と同じように動作しますchgrp
。ファイルまたはディレクトリの所有者は、自分がメンバーになっている任意のグループにグループを変更できます。
このように機能するのは、 コマンドchown
とchgrp
コマンドの両方が同じ基礎となるシステム コールを使用して、所有者とグループの両方を変更できるためです。 システム コールは、権限チェックを適用するものです。 コマンドとコマンドchown
の唯一の違いは、変更内容を指定するために使用する構文です。chown
chgrp
Mark はグループ SK001778 のメンバーではないため (また、グループ メンバーシップによって制限されない root ではないため)、グループを SK001778 に戻すことはできません。
答え2
ユーザーは、これらのグループのいずれかに属している場合、これを使用してグループを変更できます。
例
私が以下のグループに属しているとします。
$ groups
saml vboxusers jupiter newgrp
そして、私はファイルを持っています:
$ ls -l | grep afile
-rw-rw-r-- 1 saml saml 0 Oct 10 11:29 afile
このファイルのグループを次のように変更します:L
$ chown saml.newgrp afile
$ ls -l | grep afile
-rw-rw-r-- 1 saml newgrp 0 Oct 10 11:29 afile
次のように使用することもできますchown
:
$ chown .saml afile
$ ls -l|grep afile
-rw-rw-r-- 1 saml saml 0 Oct 10 11:29 afile