
ユーザーがホーム ディレクトリ (他のユーザーの) リストを表示できないようにしたいです。デフォルトでは、ユーザーは他のユーザーのホーム ディレクトリにアクセスできませんが、以下のように他のユーザーのホーム ディレクトリを見つけることができます。
[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 passwd
glibc から、ホーム ディレクトリを含むユーザーを一覧表示します。基礎となる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
これは珍しい設定であり、予期せずいくつかのものを壊す可能性があります。(例:ファイルブラウザ)ただし、通常のタスクの邪魔にはなりません。