ユーザーが他のユーザーのホームディレクトリのリストを見るのを禁止する

ユーザーが他のユーザーのホームディレクトリのリストを見るのを禁止する

ユーザーがホーム ディレクトリ (他のユーザーの) リストを表示できないようにしたいです。デフォルトでは、ユーザーは他のユーザーのホーム ディレクトリにアクセスできませんが、以下のように他のユーザーのホーム ディレクトリを見つけることができます。

[opc@instance-20210712-0826 home]$ cd /home
[opc@instance-20210712-0826 home]$ ls -lh
total 8.0K
drwx------. 10 opc       opc       4.0K Nov 14 22:52 opc
drwx------.  2 otheruser otheruser   62 Nov 28 18:19 otheruser
drwx------.  3 yaskur    yaskur    4.0K Nov 28 01:45 yaskur

別の方法では、ユーザーは他のユーザーのリストを見ることができます (ホーム ディレクトリに基づいて)。これを防止したいです。これは WHM/cPanel と同様で、ユーザーとしてログインした場合、他のユーザーのホーム ディレクトリを見ることはできません。

[myuser@sng128 ~]$ cd /home
[myuser@sng128 home]$ ls -l
total 4
drwx--x--x 25 myuser myuser 4096 Nov 28 08:27 myuser

私は CentOS や Rocky Linux に似た Oracle Linux を使用しています。

答え1

制限的なファイル権限は、ユーザーが他のユーザーとそのホーム ディレクトリを列挙することを妨げるものではありません。getent passwdglibc から、ホーム ディレクトリを含むユーザーを一覧表示します。基礎となるgetpwent()関数は、プログラムによって呼び出すこともできます。

ユーザーが他のユーザーのホーム ディレクトリを一覧表示できないようにするには、ユーザーを分離します。つまり、ユーザー専用のコンテナーを用意します。ただし、「コンテナー」は、ハードウェア VM、ソフトウェア VM (ユーザー モード Linux)、OpenVZ、chroot、podman コンテナー、または一般的な Linux ユーザーおよび PID 分離名前空間など、さまざまな方法で実装できます。

答え2

他の何かの解決策を探していたときにこれに遭遇しました...

私の考えでは、次のようにすればよいだけです:

chmod 711 /home
chmod 711 /home/*

これにより、少なくとも他のユーザーが /home ディレクトリを一覧表示することを防ぐことができます。これらは再帰的ではなく、/home と /home/userX または /home/userY が直接一覧表示 (ls) されることを防ぐだけです。

もちろん、権限のないユーザーはcat /etc/passwdシステム内のすべてのユーザーを表示できますが、その場合は、/home ディレクトリを一覧表示するのと同じことになります...

このような場合、まさにこの目的のために構築されており、セットアップが簡単な Firejail を強くお勧めします。

Ubuntu Server では、次のようにインストールして設定します (例: firejail_install.sh スクリプト内)。

#!/bin/bash

apt-get -y update
apt-get -y install firejail

if [ ! -f "/etc/firejail/disable-common.local" ]; then
    cat > "/etc/firejail/disable-common.local" <<EOF

# Firejail blacklist
blacklist /etc/passwd
blacklist /etc/letsencrypt
blacklist /etc/mysql
blacklist /etc/nginx
blacklist /etc/php
blacklist /etc/postfix
blacklist /etc/varnish
blacklist /var/lib/mysql
blacklist /var/run/php

# END
EOF

fi

ブラックリストに入れるものには注意してください :)

これを /home の適切な権限と組み合わせると、システムを詮索好きな目からある程度保護するのに十分なはずです。

答え3

/home のグローバル読み取り権限を削除します

sudo chmod o-r /home

これは珍しい設定であり、予期せずいくつかのものを壊す可能性があります。(例:ファイルブラウザ)ただし、通常のタスクの邪魔にはなりません。

関連情報