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/TEST
700
ルートが所有し、権限を付与します。
クライアントがカスタムSFTPサーバーバイナリを要求できない場合、テストされていないソリューションは次のとおりです。
Match User someuser
Subsystem sftp /usr/libexec/openssh/sftp-server.super