#自從手機root後安裝Linux Deploy開始安裝了Debian9開始準備鼓搗ftp服務器(vsftpd)。linux
apt install vsftpd服務器
#以後整整一個月百度而來的猛如虎的各類操做各類坑,網絡
#且不說修改vsftpd.conf的各類參數,socket
#下載源碼修改編譯,安裝gdb調試,經過網絡教程禁用子進程改變uid gid的函數,修改源碼的secuil.c文件等等,函數
#用FileZilla鏈接時候永遠都是500 oops socketoop
#死的心都有了。就差下載源碼從新編譯內核了,可是我是新手,這麼高深的動做怎麼會?且不說手機上能說改就改linux內核?老大您就饒了我吧!ui
#以後,一個命令(strace)拯救了我,把我從gdb的苦海和vsftpd.dbg官方調試包中拖上岸。我此次成功解決問題全賴此命令。spa
#新手都能好好琢磨出來strace -v -f -s 2048 -p [vsftpd服務的pid],一點一點分析出了問題的眉目。在這裏,這個命令我就不贅述,網上詳解不少。我如今着重說解決方案:很短,就幾步而已調試
nano /etc/passwd教程
#找到nobody用戶把65534:65534改爲65534:3003而後存盤,就完事了。記得把
nano /etc/ftpusers
#裏面的「#root」註釋掉才能使用root用戶,而後爲了方便上傳刪寫文件
nano /etc/vsftpd.conf
#裏面最後加一行「write_enable=YES」,可是刪寫文件仍然老是被拒絕。即便重啓也無效。我後來按照百度教程,還不得不在/root下建立了一個目錄pub目錄改屬性
chmod 777 /root/pub
#才成功的能開始使用上傳和刪除操做,而後即便把pub刪了,重啓等等,均可以正常刪寫服務器內容了。彷彿只要在vsftpd.conf裏寫write_enable=YES一行就完事,可是一開始確實是被拒的。不知爲何。
#在此次探究中,我發現nobody用戶纔是vsftpd發生500 oops socket的關鍵之所在,而並非以前網上部分教程所提到的vsftpd沒有子進程建立權限,事實上根據下面的調試命令,我發現vsftpd是徹底具有子進程建立權限的,而建立出的nobody用戶子進程卻不具有網絡使用權限,因此我纔想到了修改nobody的所屬組,而後就完美解決了。
#這個命令就是發現上面緣由的關鍵strace -v -f -s 2048 -p [vsftpd服務的pid],有興趣鼓搗的能夠試試。可是輸出的內容很長,建議粘貼到word中查看。