ProFTPD/centOS 如何处理虚拟 ftp 用户的目录权限?

ProFTPD/centOS 如何处理虚拟 ftp 用户的目录权限?

在 proftpd/centos 上,我配置了虚拟用户的使用。我可以以虚拟用户身份登录,但我没有该用户的写权限。

proftpd.conf 如下所示:

ServerName                      "ftp01"
DefaultServer                   on
DefaultRoot                     ~
AuthPAMConfig                   proftpd
AuthOrder                       mod_auth_file.c  mod_auth_unix.c
RequireValidShell  off
AuthUserFile  /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group
AuthPAM off
User                            nobody
Group                           nobody
MaxInstances                    20
UseSendfile                     off

以下是ftpd.passwd的内容:

user1:hashfrompasswd:50:50::/var/ftp/user1:/bin/false

和 ftpd.group:

ftp:x:50:user1

ls -lah来自主目录的输出(设置权限为 755):

# ls -lah
insgesamt 44K
drwxr-xr-x. 10 root ftp      4,0K 27. Dez 11:19 .
drwxr-xr-x. 21 root root     4,0K  8. Jul 2013  ..
drwxr-xr-x.  3 ftp  user1    4,0K  7. Jan 15:04 user1

但是当我以 user1 身份连接到 ftp 服务器时,我可以连接并登录,但当我尝试放置文件或创建目录时,服务器拒绝访问。我该如何解决这个问题?

答案1

您的主目录具有权限 755,这意味着所有者(在本例中为 root)可以读、写、执行 (rwx),但组 (ftp) 只能读、执行 (rx)。

将目录的所有者更改为 ftp,或者为主目录添加组写权限(即:775)。

答案2

编辑!难以置信我第一次读的时候就错过了这个:

查看你的“Ls”目录列表。注意。最有可能的是SELinux. 将 temp 设置为 Permissive 并进行测试或者更好的是,设置一个安全上下文:

setsebool -P allow_ftpd_full_access on

在您的“ls -lah”中,您的用户/组所有权是错误的——但这不是问题!您的问题是,该目录需要由 Proftpd 正在运行的系统用户可写。这不是您为 FTP 登录创建的登录虚拟用户帐户。

在您的配置中,您已指定“守护进程”必须作为没人:没人,通过 User 和 Group 行

User                            nobody
Group                           nobody

将目录的所有权调整为 nobody:nobody,并将用户和组的权限设置为读写 (660)。作为最后的临时手段 [糟糕的行为,请非常小心!] 将目录权限设置为完全允许 ​​(777) - 并测试您的上传。一旦您知道它可以工作,并且是所有者/权限问题,请将其拨回。这将使您保持理智并防止将设备扔出窗外。

确保您确实有一个“nobody”用户,最后,确保虚拟用户使用的 GID 和 UID 与该系统用户相匹配。

相关内容