如何在Ubuntu建立只能用sftp的帳號
在這個情況中,我需要讓其他成員可以登入我的系統,以便更新網頁,而且為安全起見,這個帳號只能用於有加密的sftp來更新網頁,我會以chroot方法,限制該帳號不可有其他功能。
以下例子中,我會以newuser作為帳號名稱,你可以按需要改其他名字,例如:team100。
首先,是建立使用者和設定密碼:
sudo useradd -s /usr/lib/sftp-server newuser
sudo passwd newser
再來是建立使用者home directory,以及讓他可以上傳網頁的地方:sudo passwd newser
sudo mkdir -p /home/newuser/uploads
sudo chown newuser:newuser /home/newuser/uploads
接著,就是限制使用者操作的部分。sudo chown newuser:newuser /home/newuser/uploads
請在/etc/shells裏加這一行,配合之前的設定,讓使用者登入後只能用sftp:
sudo -i
echo "/usr/lib/sftp-server" >> /etc/shells
exit
然後,是修改ssh config檔。echo "/usr/lib/sftp-server" >> /etc/shells
exit
請確保/etc/ssh/sshd_config裏有這一行,保證已經開放sftp功能:
Subsystem sftp internal-sftp
在/etc/ssh/sshd_config最底部加入這幾行,用來使ssh server限制newuser使用者只可用sftp:
Match User newuser ChrootDirectory %h AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp重啟openssh-server,讓你新的設定生效:
sudo /etc/init.d/ssh restart
Openssh這部分就完成了,接下來是apache部分,如果你沒有更新網頁的需要,請直接忽略。記得剛才我們設定了/home/newuser/uploads嗎?該使用者帳號只能把它的資料上傳到/home/newuser/uploads這個目錄,我們要做的,就是讓apache可以使用這個目錄的資料。
修改路徑權限,讓apache可以讀取:
sudo chmod 755 /home/newuser /home/newuser/uploads
現在,我要讓這個目錄,可以在瀏覧器用 http://localhost/oursite 瀏覽:
sudo ln -s /home/newuser/uploads /var/www/oursite
現在,用sftp把網頁上傳,就能用瀏覽器看到,完成了!
如何還原:
一搬教學網站有個問題,就是不會教你如何還原,我會!首先,用root權限開啟文字編輯器,在/etc/ssh/sshd_config中,刪除:
Match User newuser ChrootDirectory %h AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp再用root權限編輯/etc/shells,刪除:
/usr/lib/sftp-server
再執行:
sudo rm /var/www/oursite sudo rm -rf /home/newuser/ #注意:這行會把你的網頁都刪除,請確定你需要這樣做才執行;否則,請忽略這行 sudo userdel newser sudo /etc/init.d/ssh restart完成! 參考:Ubuntu SFTP-Only Account How-to
留言
張貼留言