仅授予对 Linux 服务器上单个目录文件的远程访问权限

仅授予对 Linux 服务器上单个目录文件的远程访问权限

我需要授予名为“Bert”的用户访问/var/www/application/thisDirectory/我的 Linux 服务器上一个目录 ( ) 的权限。

最初,我尝试使用 FTP(实际上是 SSH)。

我的第一个想法是 chroot Bert 并创建他的家/var/www/application/thisDirectory/。问题是这需要/var/www/application/拥有并只有 root 才能使用,这是不可接受的。

然后我将 Bert 的主目录更改为/home/Bert/。接下来,我在 Bert 的主目录中放置了一个符号链接并指向/var/www/application/thisDirectory,但我认为这是不允许的,因为 Bert 被 chroot 了,这被视为安全风险,我无法让它工作。有什么想法可以让它工作吗?

接下来,我将 Bert 的主目录保留为/home/Bert/,然后移至/var/www/application/thisDirectory/home/Bert/thisDirectory/并添加/var/www/application/thisDirectory/指向 的符号链接/home/Bert/thisDirectory/。虽然这在技术上可行,但它对我的 Git 版本控制造成了严重破坏,所以我又切换了回来。

如果我不能让它工作,我想我可以研究一下 Samba,但我宁愿不这样做。

谢谢

答案1

我用过这种方法,而且我知道它有效,

在您的 /etc/ssh/sshd_config 中,更改后重新加载 sshd 服务

Match User bert
ChrootDirectory /home/%u
ForceCommand internal-sftp

添加用户

useradd -m -s /bin/false bert
passwd bert

sftp 权限

chown root:root /home/bert

在我的网络服务器的根目录下为 bert 用户创建目录:

mkdir /srv/www/htdocs/bertdir
chown bert:wwwrun /srv/www/htdocs/bertdir

在bert用户的home下创建挂载点,用于挂载目录:

mkdir /home/bert/www

现在我们挂载目录

mount --bind /srv/www/htdocs/bertdir/ /home/bert/www/

现在我使用了我的 sftp 服务:

sftp> ls
bin          public_html  www       

现在我上传 /etc/passwd

sftp> put /etc/passwd
Uploading /etc/passwd to /www/passwd

相关内容