我刚刚在我的 ubuntu 14 服务器上安装了 vsftp。我也使用sudo apt-get install
命令安装了 vsftp。然后重新启动了 ftp 服务器,但它拒绝了所有连接,因为这个错误,500 OOPS: prctl PR_SET_SECCOMP failed
请看这里。
aysael@srv:~$ sudo ftp
ftp> open 127.0.0.1
Connected to 127.0.0.1.
500 OOPS: prctl PR_SET_SECCOMP failed
这是我的配置文件/etc/vsftpd.conf
seccomp_sandbox=no
listen=YES
# Allow anonymous FTP? (Disabled by default)
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
dirmessage_enable=YES
#
# If enabled, vsftpd will display directory listings with the time
# in your local time zone. The default is to display GMT. The
# times returned by the MDTM FTP command are also affected by this
# option.
use_localtime=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
ftpd_banner=Welcome to blah FTP service.
secure_chroot_dir=/var/run/vsftpd/empty
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# This option specifies the location of the RSA key to use for SSL
# encrypted connections.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
- Linux srv 2.6.32-042stab108.2 #1 SMP 2015 年 5 月 12 日星期二 18:07:50 MSK x86_64 x86_64 x86_64 GNU/Linux
- vsftpd:版本 3.0.2
- Ubuntu 14.04.1 LTS
答案1
该消息表明prctl(PR_SET_SECCOMP, ...)
呼叫失败。
if (!tunable_seccomp_sandbox)
{
return;
}
...
ret = prctl(PR_SET_SECCOMP, 2, &prog, 0, 0);
if (ret != 0)
{
die("prctl PR_SET_SECCOMP failed");
}
当您的内核没有CONFIG_SECCOMP_FILTER
启用时,就会发生这种情况。
引自prctl
手册页:
设定安全组件(自 Linux 2.6.23 起)
设置调用线程的安全计算 (seccomp) 模式,以限制可用的系统调用。seccomp 模式通过 选择
arg2
。(seccomp 常量在<linux/seccomp.h>
...
arg2
设置为(SECCOMP_MODE_FILTER
自 Linux 3.5 起) 时,允许的系统调用由传入 arg3 的 Berkeley 数据包过滤器指针定义。此参数是指向 的指针struct sock_fprog
;它可以被设计为过滤任意系统调用和系统调用参数。仅当内核配置为CONFIG_SECCOMP_FILTER
启用时,此模式才可用。
您可以通过配置 vsftpd 不启用来解决这个问题seccomp 模式。
使用seccomp_sandbox=no
中的选项vsftpd.conf
。
该选项似乎没有记录。
但您似乎已经设置了该选项。这可能表明您的选项vsftpd.conf
实际上未被使用。或者您自设置该选项以来没有重新启动 vsftpd。
如果您确实设置了选项,则您永远不会收到错误消息,如您在上面的代码片段中所看到的(vsftpd 3.0.2 的代码)。