在 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 与该系统用户相匹配。