一: FTP Centos7中預設已經安裝了sshd服務(sftp), vsftpd需要手動安裝 1、安裝並啟動FTP服務 1.1 安裝vsftpd 使用 yum 安裝 vsftpd yum install -y vsftpd 1.2 啟動vsftpd 安裝完成後, 啟動vsftpd服務 : ser ...
一: FTP
Centos7中預設已經安裝了sshd服務(sftp), vsftpd需要手動安裝
1、安裝並啟動FTP服務
1.1 安裝vsftpd
使用 yum 安裝 vsftpd
yum install -y vsftpd
1.2 啟動vsftpd
安裝完成後, 啟動vsftpd服務 :
service vsftpd start
啟動後, 可以看到系統已經監聽了 21 埠(Ubuntu下命令為: lsof -i:21)
netstat -nltp | grep 21
此時, 訪問ftp://IPaddr 就可瀏覽主機上的 /var/ftp目錄了
2、配置 FTP 許可權
2.1 瞭解 vsftpd 配置
vsftpd 的配置目錄為 /etc/vsftpd, 包含下列的配置文件 :
a. vsftpd.conf 為主要配置文件
b. ftpusers 配置禁止訪問 FTP 伺服器的用戶列表
c. user_list 配置用戶訪問控制
2.2 阻止匿名訪問和切換根目錄
匿名訪問和切換目錄都會給伺服器帶來安全風險, 我們把這兩個功能關閉.
編輯 /etc/vsftpd/vsftpd.conf, 找到下麵兩處配置並修改:
# 禁用匿名用戶 YES 改為NO
anonymous_enable=NO
# 禁止切換根目錄 刪除或#
chroot_local_user=YES
編輯完成後保存配置, 重新啟動 FTP 服務
service vsftpd restart
2.3 創建 FTP 用戶
創建一個用戶 ftpuser
useradd ftpuser
為用戶 ftpuser 設置密碼
passwd ftpuser 或 echo "new_password" | passwd ftpuser --stdin
2.4 限制該用戶僅能通過FTP訪問
限制用戶 ftpuser 只能通過 FTP 訪問伺服器, 而不能直接登錄伺服器
usermod -s /sbin/nologin ftpuser
2.5 為用戶分配主目錄
為用戶 ftpuser創建主目錄並約定
/data/ftp 為主目錄, 該目錄不可上傳文件
/data/ftp/pub 文件只能上傳到該目錄下
在/data中創建相關的目錄
mkdir -p /data/ftp/pub
設置訪問許可權
chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub
設置為用戶的主目錄
usermod -d /data/ftp ftpuser
3、OK
至此, FTP服務已經搭建完成, 可以使用各種第三方客戶端來測試訪問FTP伺服器
訪問前, 記得關閉防火牆
service firewalld stop
如果需要使用root登錄連接FTP服務, 需要配置 /etc/vsftpd/user_list 和 /etc/vsftpd/ftpusers, 將文件中的root註釋
二: SFTP
1、創建用戶組 sftp
groupadd sftp
2、創建用戶 test
useradd -G sftp -s /sbin/nologin test
-s 禁止用戶ssh登錄
-G 加入sftp用戶組
3、創建密碼
passwd test
4、修改配置文件 sshd_config
vim /etc/ssh/sshd_config
將下麵這行註釋
# Subsystem sftp /usr/libexec/openssh/sftp-server
然後在末行加入:
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
說明:
Match Group sftp 匹配sftp用戶組中的用戶
ChrootDirectory %h 只能訪問預設的用戶目錄(自己的目錄), 例如 /home/test
5、設置目錄許可權
chown root:sftp /home/test
chgrp -R sftp /home/test
chmod -R 755 /home/test
# 設置用戶可以上傳的目錄, 該用戶下允許用戶上傳刪除修改文件及文件夾
mkdir /home/test/upload
chown -R test:sftp /home/test/upload
chmod -R 755 /home/test/upload
6、解決報錯問題
修改 /etc/selinux/config 中SELINUX 為 disabled
7、使用sftp客戶端連接伺服器
使用第三方客戶端連接sftp伺服器, 或者使用Python中的paramiko模塊連接