Linuxサーバー上のすべてのディレクトリに対する読み取り権限を持つユーザーを作成します。

Linuxサーバー上のすべてのディレクトリに対する読み取り権限を持つユーザーを作成します。

SFTPを介してリモートLinuxサーバーに接続し、サーバーの完全なフォルダ構造を読む必要があります。すべてのディレクトリを一覧表示したい。読み込み権限がないディレクトリも一覧表示したいと思います。ディレクトリの権限を変更しないことをお勧めします。

ルートの使用を避けたいと思い、「読み取り専用」ルートを作成するのが良い解決策になると思います。オンラインでソリューションを見つけて、このCAP_DAC_READ_SEARCH機能を見つけました。ただし、機能を使用するにはファイル名を指定する必要がありますが、SSHDプロセスにその機能を適用したくないようです。

必要な権限を持つユーザーをどのように作成しますか?

ベストアンサー1

sftpsrv=/usr/libexec/openssh/sftp-server
cp -a ${sftpsrv} ${sftpsrv}.super
chmod 500 ${sftpsrv}.super
chown someuser ${sftpsrv}.super
/sbin/setcap cap_dac_read_search+ep ${sftpsrv}.super

以下を介してサーバーに接続する必要があります。

sftp -s /usr/libexec/openssh/sftp-server.super address

効果がある!

ls -la /tmp | grep TEST
drwx------.  2 root   root       60 Oct 29 13:08 TEST

sftp -s /usr/libexec/openssh/sftp-server.super localhost
user@localhost^s password: 
Connected to localhost.
sftp> cd /tmp/TEST
sftp> ls
123  

/tmp/TEST700ルートが所有し、権限を付与します。


クライアントがカスタムSFTPサーバーバイナリを要求できない場合、テストされていないソリューションは次のとおりです。

Match User someuser
    Subsystem sftp /usr/libexec/openssh/sftp-server.super

おすすめ記事