專案開發過程中部分外包,需要限制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
#檢視pureftpd.confPassivePortRange 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、賬號密碼有問題
本作品採用《CC 協議》,轉載必須註明作者和本文連結