FTP和SFTP搭建
本次採用本地使用者登入訪問,也可以建立虛擬使用者訪問
1.目錄和使用者規劃:使用者:ftpuser 家目錄 :/ftpdata
建立ftp使用者指定家目錄並且禁止登入系統:useradd ftpuser -d /ftpdata -s /sbin/nologin
修改所屬主組 : chown -R ftpuser:ftpuser /ftpdata
2.rpm 安裝vsftpd
3.編輯配置檔案 vi /etc/vsftpd/vsftpd.conf
修改引數
anonymous_enable=NO #禁止匿名使用者登入
write_enable=YES #可寫
chroot_local_user=YES #開啟監牢機制(限制使用者只能登入家目錄)
4.重啟 service vsftpd restart
5.測試
SFTP搭建
# ssh -V
假設,有一個名為sftp的組,這個組中的使用者只能使用sftp,不能使用ssh,且sftp登入後只能在自己的home目錄下活動
1、建立sftp組
# groupadd sftp
2、建立一個sftp使用者,名為mysftp
# useradd -g sftp -s /bin/false mysftp
# passwd mysftp
3、sftp組的使用者的home目錄統一指定到/home下,按使用者名稱區分,這裡先新建一個mysftp目錄,然後指定mysftp的home為/home/mysftp
# mkdir -p /home/mysftp
# usermod -d /home/mysftp mysftp
4、配置sshd_config
編輯 /etc/ssh/sshd_config
# vim /etc/ssh/sshd_config
找到如下這行,並註釋掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
新增如下幾行
Subsystem sftp internal-sftp #這行指定使用sftp服務使用系統自帶的internal-sftp
Match Group sftp #這行用來匹配sftp組的使用者,如果要匹配多個組,多個組之間用逗號分割 當然,也可以匹配使用者:Match User my
ChrootDirectory /data/sftp/%u #用chroot將使用者的根目錄指定到/data/sftp/%u,%u代表使用者名稱,這樣使用者就只能在/data/sftp/%u下活動
ForceCommand internal-sftp #指定用系統sftp
AllowTcpForwarding no
X11Forwarding no #這兩行,如果不希望該使用者能使用埠轉發的話就加上,否則刪掉
5、設定Chroot目錄許可權
# chown root:sftp /home/mysftp
# chmod 775 /home/mysftp
錯誤的目錄許可權設定會導致在log中出現”fatal: bad ownership or modes for chrootdirectory XXXXXX”的內容
目錄的許可權設定有兩個要點:
1、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是root
照上面設定後,在重啟sshd服務後,使用者mysftp已經可以登入,但使用chroot指定根目錄後,根應該是無法寫入的,所以要新建一個目錄供mysftp上傳檔案。這個目錄所有者為mysftp,所有組為sftp,所有者有寫入許可權,而所有組無寫入許可權 # mkdir /home/mysftp/upload # chown mysftp:sftp /home/mysftp/upload # chmod 755 /home/mysftp/upload
2、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止都不可以具有群組寫入許可權
6、/重啟sshd服務
# service sshd restart
到這裡,mysftp已經可以通過sftp客戶端登入並可以上傳檔案到upload目錄。
如果還是不能在此目錄下上傳檔案,提示沒有許可權,檢查SElinux是否關閉,可以使用如下指令關閉SElinux
修改/etc/selinux/config檔案中的SELINUX="" 為 disabled,然後重啟。