我是编程方面的新手,我想在这个论坛寻求帮助,因为我已经在几个地方搜索过了,但都没有找到。
我在 Digitalocean 上有一个安装了 serverpilot 的 Ubuntu 服务器。我在那里创建的唯一用户是“serverpilot”,但一位程序员要求访问我在此服务器上安装的一个站点。他将在那里编写一个模板并对数据库进行一些修改,由于我不想让“serverpilot”用户登录,我请他花一些时间创建一个特定的 FTP 用户,仅供他访问此站点(其文件夹和子文件夹)。我一直在研究如何做到这一点,我测试了一些教程,但我仍然陷入困境。
我设法安装了 vsftpd,然后开始卷曲。
我希望这个新的 ftp 用户只能访问目录“/srv/users/serverpilot/apps/cronegame2/public”中的特定站点,这样他就可以访问其文件夹、子文件夹、数据库并能够修改它们,仅此而已。并且他只能通过端口 21 登录,因此他无法访问 ROOT。
请帮助我实现这一目标。
答案1
要使 FTP 用户具有对特定网站目录的有限访问权限,您可以按照以下步骤操作:
为 FTP 访问创建新用户:
sudo adduser ftpuser
为新用户设置密码。
为 FTP 访问创建一个新组:
sudo groupadd ftpaccess
将 FTP 用户添加到新组:
sudo usermod -aG ftpaccess ftpuser
将网站目录的所有权更改为新组:
sudo chown -R serverpilot:ftpaccess /srv/users/serverpilot/apps/cronegame2/public
更改网站目录的权限,允许新组读取、写入和执行:
sudo chmod -R g+rwx /srv/users/serverpilot/apps/cronegame2/public
配置 vsftpd 仅允许访问特定目录并限制对根目录的访问:
编辑该/etc/vsftpd.conf
文件并在末尾添加以下几行:
# Allow access only to the specific directory
chroot_local_user=YES
local_root=/srv/users/serverpilot/apps/cronegame2/public
# Restrict access to the root directory
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.allowed_users
最后创建 /etc/vsftpd.allowed_users 文件并将 FTP 用户添加到其中:
sudo sh -c "echo 'ftpuser' >> /etc/vsftpd.allowed_users