CentOS 搭建 Pure-FTP

來杯可樂不加糖發表於2019-12-26

專案開發過程中部分外包,需要限制ftp使用者在自己的目錄,在21埠下沒有問題,但當ftp使用者用sftp登入時,還是可以訪問上級目錄,於是禁止該ftp使用者ssh登入,切斷22埠的通訊。

#安裝擴充套件源(預設無pure-ftpd)
yum install -y epel-release
yum install -y pure-ftpd
#建立使用者和使用者組
groupadd ftpgroups
useradd ftp_user -g ftpgroups -s /sbin/nologin -d /dev/null //禁止登入
#建立虛擬使用者(若使用pureftpd.pdb校驗)
pure-pw useradd ftp_user -u ftp_user -d /data/www
pure-pw mkdb
#配置檔案
vim /etc/pure-ftpd/pure-ftpd.conf
PureDB  /etc/pure-ftpd/pureftpd.pdb #若選擇PureDB則取消註釋
AnonymousOnly no  #關閉匿名訪問許可權

PureDB方式

#建立虛擬使用者
pure-pw useradd ftptest -u ftp_user -d /data
pure-pw mkdb

#管理使用者
pure-pw useradd 新增使用者
pure-pw userdel 刪除使用者
pure-pw usermod 修改使用者
pure-pw show 檢視使用者詳細資訊
pure-pw list 檢視所有使用者設定
pure-pw mkdb 生成資料檔案

MySQL方式

#建立資料庫
CREATE DATABASE ftpdb;
CREATE TABLE `users` (
  `User` varchar(16) NOT NULL DEFAULT '',
  `status` enum('0','1') NOT NULL DEFAULT '0',
  `Password` varchar(64) NOT NULL DEFAULT '',
  `Uid` varchar(11) NOT NULL DEFAULT '-1',
  `Gid` varchar(11) NOT NULL DEFAULT '-1',
  `Dir` varchar(128) NOT NULL DEFAULT '',
  `ULBandwidth` smallint(5) NOT NULL DEFAULT '0',
  `DLBandwidth` smallint(5) NOT NULL DEFAULT '0',
  `comment` tinytext NOT NULL,
  `ipaccess` varchar(15) NOT NULL DEFAULT '*',
  `QuotaSize` smallint(5) NOT NULL DEFAULT '0',
  `QuotaFiles` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`User`),
  UNIQUE KEY `User` (`User`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#建立使用者
create user 'user'@'127.0.0.1' identified by 'passwd';
GRANT ALL PRIVILEGES ON `ftpdb`.* TO 'user'@'127.0.0.1' WITH GRANT OPTION;

#檢視 ftp_user的USERID和GROUPID資訊
cat /etc/passwd   #找到ftp_user  對應的1004為UID,1001為GID
ftp_user:x:1004:1001::/data:/bin/bash

#SQL管理(增、刪、改、查)
INSERT INTO `users` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('ftp_user', '1', MD5('passwd'), '1004', '1001', '/data/www', '0', '0', '', '*', '0', '0');

#修改pureftpd-mysql.conf
MYSQLServer     127.0.0.1 #MySQL地址
MYSQLPort       3306   #MySQL埠號
MYSQLUser       user   #MySQL使用者
MYSQLPassword   passwd  #使用者密碼
MYSQLDatabase   ftpdb    #資料庫
MYSQLCrypt      md5      #驗證方式

限制訪問

#限制ftp使用者登入ssh(建議不要限制root)
usermod -s /usr/sbin/nologin ftp_user
#若要恢復
usermod -s /bin/bash ftp_user

Q1:解決CentOS下PureFtp出現“資料 Socket 錯誤 連線已超時”錯誤

檢視 /etc/sysconfig/iptables
Centos 搭建Pure-FTP
#檢視pureftpd.conf

PassivePortRange 20000 30000

#新增規則:

iptables -A INPUT -m  state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT  
#儲存防火牆規則,並重啟

systemctl restart iptables

Q2:解決CentOS下PureFtp出現“530”錯誤

1、驗證方式有問題未開啟(配置不正確)

2、賬號密碼有問題

1、Linux中搭建pure-ftp及配置詳解

2、centos pure-ftpd配置及錯誤解決

來杯可樂不加糖。

相關文章