我需要授予名为“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