所以我使用的是 VPS - CentOS Linux 安装。我的服务器上有 vsFTPd。我目前可以通过 root 用户对服务器进行 SFTP 访问,但现在尝试创建一个新用户,仅对服务器上的特定目录进行 FTP 访问,我已完成以下操作:
1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com
我正在努力做的是创建用户只能访问 /var/www/mydomain.com
- 我观察到用户正确登录到正确的文件夹,但是用户可以浏览“返回”到其他目录。我希望用户停留在特定文件夹中并且无法“浏览”回来。
有任何想法吗?
我找到了有关 chrooting 的不同文章,但只是没有弄清楚如何在上面的步骤中使用它。
答案1
这很简单。
您必须在 vsftpd.conf 文件中添加以下选项
chroot_local_user=YES
配置文件内的文档是不言自明的:
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
这意味着,用户只能访问您配置为用户主目录的文件夹。下面,我有一个用户密码条目的示例:
upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash
使用以下命令设置用户的主目录
usermod -d /var/www/my.domain.example/ exampleuser
笔记:在我的示例中,该用户也是 Linux 内部某些计划任务的有效用户。如果您没有这个需求,请将用户的shell/sbin/nologin
改为bash
.
答案2
更改配置以包括之后chroot_local_user=YES
您可以更改用户的 shell,/usr/sbin/nologin
以便在密码泄露时可以减轻一些风险(也设置主目录)。 shell/etc/shells
也需要列出,否则身份验证将失败。
usermod -d /var/www/my.domain.example -s /usr/sbin/nologin exampleuser
-d, --home HOME_DIR 用户的新登录目录。如果给出 -m 选项,当前主目录的内容将被移动到新的主目录,如果该目录尚不存在,则创建新的主目录。
-s, --shell SHELL 用户新登录 shell 的名称。将此字段设置为空白会导致系统选择默认登录 shell。
答案3
以下是设置用户并仅允许用户通过 FTP(即无 SSH)访问以及限制对特定(用户主)目录的访问的步骤专业软件:
添加新用户:
adduser newusername
设置密码:
passwd newusername
将用户主目录从默认修改为新文件夹:
usermod -d /target/directory username
编辑
shells
文件:并在末尾vi /etc/shells
添加/dev/null
修改文件
newusername
中的条目passwd
:在 之前vi /etc/passwd
添加,使条目如下所示:/./
newusername
newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null
编辑
/etc/proftpd/proftpd.conf
文件并取消注释该行DefaultRoot ~
答案4
将根文件夹权限设置为711使用您的根帐户。