我需要定期授予已安装 vsftp 的 CentOS Linux 服务器上各个目录的临时和有限访问权限。
我已经使用 创建了一个用户useradd [user_name]
,并使用 为他们指定了一个密码passwd [password]
。
我已经创建了一个目录,/var/ftp
然后将其绑定到我希望限制访问的目录。
我还需要具体做什么来确保当该用户登录 FTP 时,他们只能访问该目录?
答案1
完整的答案解决了我的问题,对于其他需要逐步指导的人来说也是如此......
vsftpd
使用安装这是指南。
- 使用 创建用户
useradd [user_name]
。 - 使用 创建用户密码
passwd [user_name]
。(系统将提示您指定密码)。 - 创建 FTP 目录,
/var/ftp
然后使用 绑定到您希望为该用户指定的“主”目录mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/
。 使用以下命令更改用户的主目录
usermod -d /var/ftp/custom_name/ user_name
在 中
/etc/vsftpd/vsftpd.conf
,确保以下所有内容均已设置:-- chroot_local_user=是
- chroot_list_enable =是
- chroot_list_file=/etc/vsftpd.chroot_list
如果您希望用户对服务器上的任何位置具有完全访问权限,则仅将用户列在vsftpd.chroot_list
文件中。如果不在此文件中列出用户,则表示将所有vsftpd
用户限制在其指定的主目录中。
换句话说(供参考):-
- 意味着默认情况下,除文件中的用户外,所有用户都会被 chroot...
- chroot_local_user=是
- chroot_list_enable =是
- 意味着默认情况下,只有文件中的用户会被 chrooted...
- chroot_local_user=否
- chroot_list_enable =是
答案2
对我来说,即使做了上述操作,它仍然不起作用。local_root 已经设置为目录,无论我做什么,用户的目录都没有被监禁。最后,在仅更改后,它才起作用
chroot_local_user=是
并按照程序
- 六、/etc/vsftpd.conf
- 添加行“user_config_dir=/etc/vsftpd_user_conf”(无引号)
- mkdir /etc/vsftpd_user_conf;
- cd /etc/vsftpd_user_conf
- vi 用户名;
- 输入行“local_root=/srv/ftp/user_name”
如果其他人有同样的问题,我只想说一下我的看法。
答案3
如果您希望每个人都拥有 chroot 但在该 chroot 内有不同的登陆文件夹,该怎么办?
local_root=/folder
home_folder=$local_root/$USER
这难道不合理吗?
答案4
前面的答案中提到的 chrooting 在我的 ubuntu 18.04 服务器上不起作用。我最终使用这个参考让它工作了:https://passingcuriosity.com/2014/openssh-restrict-to-sftp-chroot/