解決 vsftpd: "500 OOPS: priv_sock_get_cmd"
最近結案了,開啟之前架好的 FTP server,準備上傳文件,卻發現不能登入 FTP server。在 FileZilla 上看到 client 的錯誤訊息是:
回應: 500 OOPS: priv_sock_get_cmd
在 server 端,/var/log/syslog
裡面看到:
Dec 25 16:46:21 portal kernel: [3212645.906540] type=1326 audit(1419497181.480:11): auid=4294967295 uid=65534 gid=65534 ses=4294967295 pid=22778 comm="vsftpd" sig=31 syscall=96 compat=0 ip=0x7fff19ffec9e code=0x0
原本以為是 chroot 設定錯誤,經過 google 一番後,找到了解答: VSFTPD: “500 OOPS: priv_sock_get_cmd”
原來是 vsftpd 3.0.0 以上的版本,搭配 Ubuntu 12.04(以上) x86_64 的 Kernel 時,會自動用到 seccomp 這個 kernel module。(如果我沒有翻譯錯的話)
但是 vsftpd 3.0.0 是個有很多 bug 的版本,所以…。
沒想到這麼剛好,三個條件我都具備了,哈哈。
portal home # vsftpd -v
vsftpd: version 3.0.2
portal home # uname -a
Linux portal 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
portal home # lsb_release -r -c
Release: 13.04
Codename: raring
解決方法
其實就兩個步驟:
- 新增
seccomp_sandbox=NO
到 /etc/vsftpd.conf
echo 'seccomp_sandbox=NO' >> /etc/vsftpd.conf
- 重啟 vsftpd
service vsftpd restart
收工!~