Permissions

創建對 Linux 伺服器中所有目錄具有讀取權限的使用者

  • October 29, 2020

我需要通過 SFTP 連接到遠端 Linux 伺服器並讀取伺服器的整個文件夾結構。我想列出所有目錄,甚至是沒有讀取權限的目錄,最好不要更改目錄的權限。

我想避免使用根,我認為一個好的解決方案可能是創建一個“只讀”根。線上搜尋解決方案時,我發現了該CAP_DAC_READ_SEARCH功能。但是,功能需要我指定文件名,我不認為我希望將功能應用於 SSHD 程序。

如何創建具有所需權限的使用者?

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由 root 擁有並具有700權限。


如果您的客戶端無法請求自定義 sftp-server 二進製文件,這裡有一個可能未經測試的解決方案:

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

引用自:https://unix.stackexchange.com/questions/616988