Linuxファイル権限の混乱

Linuxファイル権限の混乱

私のホームフォルダには2人のユーザーがいます。管理者1人とゲスト1人。

デフォルトでは、ゲストユーザーがSSHセッションを介してログインしたときにホームフォルダ以外のディレクトリにディレクトリを変更できないようにしたいと思います。

ユーザーは次のようになります。

root@Ubuntu-2004-focal-64-minimal / # id olw
uid=1000(olw) gid=1002(olw) groups=1002(olw),1000(admins)
root@Ubuntu-2004-focal-64-minimal / # id guest
uid=1002(guest) gid=1001(guest) groups=1001(guest)

メインディレクトリ:

drwxr-xr-x 5 root root 4096 Jun 16 11:01 home/

私が理解しているように、これはルートグループ以外の人がこのディレクトリを読み取ったり入力(実行)したりできることを意味します。

そのディレクトリ内では、ファイルシステムは次のようになります。

drwxr-xr-x  5 root root   4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root   4096 Jun 14 16:13 ../
drwxrwx---  2 root guest  4096 Jun 16 11:11 guest/
drwxr-x---  4 olw  admins 4096 Jun 15 16:12 olw/

ゲストがホームディレクトリにある場合、/homeは他の誰でも実行できるようになり、ホームディレクトリに戻すことができます。

chmod o-rx home/ホームフォルダのグループも管理者に変更されました。そうしないと、rootまたはrootグループのユーザーを除いて、誰もrootフォルダで操作を実行できません。

drwxr-x---  5 root admins   4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root   4096 Jun 14 16:13 ../
drwxrwx---  2 root guest  4096 Jun 16 11:11 guest/
drwxr-x---  4 olw  admins 4096 Jun 15 16:12 olw/

今奇妙なことは次のとおりです。

管理者に切り替えると、すべてがうまく機能します。自分のホームフォルダに行き、すべての操作を実行できますが、GUESTアカウントを使用すると

oot@Ubuntu-2004-focal-64-minimal /home # su guest
bash: /home/guest/.bashrc: Permission denied

デフォルトの.bashrcファイルを読み取ったり、コマンドを実行したりすることもできませんls

ゲストホームフォルダへの権限をすべての人がフルアクセスできるように切り替えましたが、結果は次のとおりです。

drwxr-x---  5 root admins 4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root   4096 Jun 14 16:13 ../
drwxrwxrwx  2 root guest  4096 Jun 16 11:11 guest/
drwxr-x---  4 olw  admins 4096 Jun 15 16:12 olw/

それでもエラーが発生します。私は何が間違っていましたか?私はゲストが自分のホームディレクトリを離れることができないようにしたいのですが、ゲストが自分のホームディレクトリを見てそこからコマンドを実行できることを願っています。なぜolwユーザーに機能しますか?

ユーザー内部のファイルシステムは次のとおりです。

ゲスト

drwxrwxrwx 2 root  guest  4096 Jun 16 11:11 ./
drwxr-x--- 5 root  admins 4096 Jun 16 11:01 ../
-rw------- 1 guest guest    42 Jun 16 11:22 .bash_history
-rwxrwxrwx 1 root  guest   220 Jun 15 15:00 .bash_logout*
-rwxrwxrwx 1 root  guest  3771 Jun 15 15:00 .bashrc*
-rwxrwxrwx 1 root  guest     0 Jun 15 15:00 .cloud-locale-test.skip*
-rwxrwxrwx 1 root  guest   807 Jun 15 15:00 .profile*
-rwxrwxrwx 1 root  guest    20 Jun 15 15:14 WELCOME.txt*

オルフ

drwxr-x--- 4 olw  admins 4096 Jun 15 16:12 ./
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ../
-rwxr-x--- 1 olw  olw     960 Jun 16 11:35 .bash_history*
-rwxr-x--- 1 olw  olw     220 Jun 15 14:38 .bash_logout*
-rwxr-x--- 1 olw  olw    3771 Jun 15 14:38 .bashrc*
drwx------ 2 olw  olw    4096 Jun 15 15:54 .cache/
-rwxr-x--- 1 olw  olw       0 Jun 15 14:38 .cloud-locale-test.skip*
drwxrwx--x 3 olw  olw    4096 Jun 15 15:10 .local/
-rwxr-x--- 1 olw  olw     807 Jun 15 14:38 .profile*

答え1

すべてのファイルアクセスはファイル権限によって異なります。そしてそれが存在するディレクトリ階層

必要な結果を得る方法はいくつかありますが、これらはすべて重要であり、サーバーセキュリティの他の部分を損なう可能性があります。たとえば、ゲストのhomedirを/other/guestに設定できますが、/homeからゲストを除外するには、他のすべてのユーザーを含むグループを作成し、/homeのグループ所有権をそのグループに設定し、chmodを設定する必要があります。 o - rwx /homeしかし、まだ終わっていません。ファイルシステム権限に加えて、Ubuntuシステムにはapparmorというセキュリティサブシステムがあります。このサブシステムは、ファイルだけでなく、オブジェクトのより一元化されたユーザーデータベースとそれを関連付ける権限も使用し、更新が必要です。

私はLinuxの使い方を知っていると思いますが、私の考えではこれは明らかな利点がほとんどない非常に複雑な作業です。

関連情報