Linux
ubuntu ftp 500 OOPS:prctl PR_SET_SECCOMP 失敗
我剛剛在我的 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
該消息指示
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
手冊頁引用:PR_SET_SECCOMP(自 Linux 2.6.23 起)
為呼叫執行緒設置安全計算(seccomp)模式,以限制可用的系統呼叫。seccomp 模式通過 選擇
arg2
。(seccomp 常量定義在<linux/seccomp.h>
…
arg2
設置為(從SECCOMP_MODE_FILTER
Linux 3.5 開始)允許的系統呼叫由指向 arg3 中傳遞的伯克利包過濾器的指針定義。這個參數是一個指向struct sock_fprog
; 它可以設計為過濾任意系統呼叫和系統呼叫參數。僅當核心配置為CONFIG_SECCOMP_FILTER
啟用時,此模式才可用。您應該能夠通過將 vsftpd 配置為不啟用seccomp 模式來解決此問題。
使用 中的
seccomp_sandbox=no
選項vsftpd.conf
。該選項似乎沒有記錄。
但你似乎已經有了那套。這可能表明您
vsftpd.conf
實際上沒有被使用。或者您設置選項後沒有重新啟動 vsftpd。如果您確實設置了該選項,則您永遠不會收到錯誤消息,正如您在上面的程式碼片段中看到的那樣(您的 vsftpd 3.0.2 的程式碼)。