在一些生產環境中,有時,用戶須要傳數據到服務器,可是配置 ftp 服務比較麻煩,此時,咱們能夠爲用戶建立 sftp 帳戶,讓用戶使用 sftp 來上傳下載所需的數據。sftp 帳號即爲系統帳號,將帳戶密碼給用戶,用戶除了能登陸 sftp 上傳下載數據外,還能夠訪問系統中的其餘目錄,由此,給咱們的系統帶來了安全隱患,咱們須要把 sftp 用戶限制在特定的目錄中。linux
SFTP 用戶 wzlinux
須要對 /home/data/www/www.wzlinux.com
擁有讀寫權限,而且只限制在此目錄操做。apache
groupadd sftp useradd -g sftp -s /bin/false wzlinux
設置密碼安全
passwd wzlinux
修改/etc/ssh/sshd_config
,最後添加以下內容,咱們限制的操做目錄爲/home/data/www/www.wzlinux.com/
。bash
Match User wzlinux PasswordAuthentication yes ChrootDirectory /home/data/www/www.wzlinux.com AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp
重啓 ssh 服務服務器
systemctl restart sshd
首先目錄/home/data/www/
的屬主必須是 root,也就是說被限制的目錄上一級目錄的屬主必須是root,屬組能夠是其餘用戶。ssh
chown root.root /home/data/www/ chown root.sftp /home/data/www/www.wzlinux.com chmod 755 /home/data/www/www.wzlinux.com
通過上面的設置後用戶可正常瀏覽下載目錄中的文件,可是用戶沒法上傳文件,由於目錄www.wzlinux.com
的屬主是root,其餘用戶沒有寫入權限,並且目錄的最高權限是 755。ide
若是須要有寫入的權限,咱們須要在目錄www.wzlinux.com
下面再建立目錄,而後賦予目錄用戶的屬主屬組權限。rest
mkdir /home/data/www/www.wzlinux.com/upload chown wzlinux.sftp /home/data/www/www.wzlinux.com/upload
由此咱們能夠得到對目錄upload
的上傳權限,可是對www.wzlinux.com
的目錄是沒有寫入權限的,那如何給www.wzlinux.com
也賦予寫入權限呢? 我尚未解決。code
給予兩個用戶 acl 的權限,同時給予,並設定爲默認權限,好比sftp的用戶是 wzlinux,apache 的用戶是 www,文件目錄是 /home/data/www/www.wzlinux.com 。it
setfacl -d -m u:wzlinux:rwx -R /home/data/www/www.wzlinux.com setfacl -d -m u:www:rwx -R /home/data/www/www.wzlinux.com