web-dev-qa-db-ja.com

グループの許可は許可しますが、許可は拒否されます

Ext4パーティションがあり、すべてのサブディレクトリのグループ所有者をmygroupに設定しました。

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

私のユーザーはそのグループの一部です。そのパーティション内には、ユーザー「nobody」が所有し、現在はグループ「mygroup」が所有するフォルダーがあります。私のユーザーは「mygroup」の一部です。 ls -lは次のとおりです。

myuser@Host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@Host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@Host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@Host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

ユーザーが属しているグループが所有するファイルを削除または作成することはできません。

私はグループがどのように機能するかを完全に理解していないと思います。あなたがグループの一員だったら、そのグループの許可を継承すると思った。私は何か間違っていますか?

ありがとう

40
Chaos

最近ログアウトまたはログインせずに、そのユーザーをそのグループに追加しましたか?次に、「グループ」にグループが表示されますが、ユーザーにはまだグループ権限がありません。

を使用して効果的なグループを表示できます

$ id

例として、ユーザーpsをグループfaxに追加してから、

$ id

グループfaxは表示されませんが、

$ groups ps

faxと表示されます。

自分のユーザーにsuを実行すると、新しいグループに所属できます。

$ su ps
$ id

出力にはfaxも含まれるようになりました。

61
peschü

使用した方法は正しいようです。今、私はそれを複製しようとしましたが、うまくいきました。

タイプミスがあるかどうかはわかりませんが、コマンドにわずかな問題があります。そこに「mygroup」と記載する必要はありません。次の作品

# chmod -R g+swrx /mount/abc

sビットを削除することもできますが、g+rwxを実行するだけです。許可を変更し、ls -lを実行すると、関連する特権が表示されます。

8
Vivek Kapoor

グループmygroupにはファイルtest.pngおよびフォルダーへの書き込み権限がないため、ファイルを削除できません。ファイルに対して書き込み操作を行うには、ファイルのアクセス許可は次のようになります。

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

許可の形式を詳しく見ると

duuugggooo

最初の3つのプレースホルダーuuuは、ユーザーr ead、w rite、およびe x ecuteです。次の3つのプレースホルダーgggはグループ用で、oooは他のもの用です。 OPグループが投稿したスニペットには、w rite権限がありません。

2
Ashoka Lella

ディレクトリを開くには、xビットを設定する必要があります(そのビットは検索ビットと見なされます)。そのため、フォルダーセットのみを取得し、すべてのファイルを実行可能ファイルとして設定するという悪夢を避けるためにツリーを使用します(ツリーのオプションは-d List directories only.です)。

Sudo tree -faid /mount/abc | xargs -L1 -I{} Sudo chmod 755  "{}"

警告!!!これを考慮に入れる必要があります:

  • ルート/ディレクトリまたはシステムディレクトリでchmodまたはchown再帰を使用すると、OSが破壊されます(実際、/ディレクトリまたはシステムディレクトリで再帰的なものはすべて危険です)

  • これは、そのようなパーミッションのバルクを設定するための良いセキュリティ慣行ではありません

2

承認済みの回答に追加するには(まだコメントできないため):

BitViseなどのソフトウェアを使用してサーバーへのSSH接続を作成する場合、単にターミナルを閉じて再度開くと、ログインおよびログアウトとしてカウントされません。それはwill~/.bashrcをリロードするようなことをしますが、notは実際に実行しますグループの更新(「ログイン」セッションでグループを追加した場合)。これを有効にするには、完全にログアウトして、SSHキー/資格情報で再度ログインする必要があります。

1
Figidon