最近結案了,開啟之前架好的 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"

原來是 vsFTP 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

解決方法

其實就兩個步驟:

  1. 新增 seccomp_sandbox=NO/etc/vsftpd.conf

    echo 'seccomp_sandbox=NO' >> /etc/vsftpd.conf
    
  2. 重啟 vsftpd

    service vsftpd restart
    

收工!~

Comments

comments powered by Disqus