创建对Linux服务器中所有目录具有读取权限的用户

创建对Linux服务器中所有目录具有读取权限的用户

我需要通过 SFTP 连接到远程 Linux 服务器并读取服务器的整个文件夹结构。我想列出所有目录,甚至是没有读取权限的目录,并且最好不更改目录的权限。

我想避免使用 root,并且我认为一个好的解决方案可能是创建“只读”root。在网上寻找解决方案时,我发现了这个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由 root 拥有并具有700权限。


如果您的客户端无法请求自定义 sftp 服务器二进制文件,这里有一个可能未经测试的解决方案:

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

相关内容