1. 程式人生 > >linux開啟FTP以及添加用戶配置權限,只允許訪問自身目錄,不能跳轉根目錄

linux開啟FTP以及添加用戶配置權限,只允許訪問自身目錄,不能跳轉根目錄

x86 改變 2.3 連接不上 ssh 開機啟動 mct enable The

linux開啟FTP以及添加用戶配置權限,只允許訪問自身目錄,不能跳轉根目錄
1.切換到root用戶

2.查看是否安裝vsftp,我這個是已經安裝的。

[root@localhost vsftpd]# rpm -qa |grep vsftpd
vsftpd-3.0.2-11.el7_2.x86_64
3.如果沒有發現,則安裝。

yum install vsftpd* -y
4.啟動vsftpd服務,以及重啟命令(centos7.0以上版本)

[root@localhost vsftpd]# /bin/systemctl start vsftpd.service
[root@localhost vsftpd]# /bin/systemctl restart vsftpd.service

低版本試一下這些命令:

/etc/init.d/vsftpd restart
啟動ftp命令  #service vsftpd start

停止ftp命令  #service vsftpd stop

重啟ftp命令  #service vsftpd restart
設置自啟:chkconfig vsftpd on

5.測試一下能否登錄FTP了,先安裝一個ftp客戶端組件。

yum -y install ftp
嘗試登錄一下

ftp localhost
輸入用戶名ftp,密碼隨便(因為默認是允許匿名的)

登錄成功,就代表ftp服務可用了。

但是,外網是訪問不了的,所以還要繼續配置。

6.取消匿名登錄

vi /etc/vsftpd/vsftpd.conf

把第一行的 anonymous_enable=YES ,改為NO

重啟

[root@localhost vsftpd]# /bin/systemctl restart vsftpd.service
7.創建一個組,用於存放ftp用戶

groupadd ftpgroups
8.創建ftp用戶,並加入ftpgroups組,/home/ftp是自己建的目錄,不存在就自己創建一個

useradd -d /home/ftp/ftptest -g ftpgroups ftptest
設置密碼

passwd ftptest
設置不允許用於用戶登錄

usermod -s /sbin/nologin ftptest

可以看到已經建好了

[root@localhost vsftpd]# ls /home/ftp

ftpn ftptest
這時候重啟一下vsftpd服務

/bin/systemctl restart vsftpd.service
登錄一下看,可以登錄了,但是發現也能訪問上層目錄,甚至根目錄,這不是我們希望的,修改一下配置文件讓其只能訪問自身目錄

vi /etc/vsftpd/vsftpd.conf
如下設置

chroot_local_user=YES
chroot_list_enable=YES

(default follows)

chroot_list_file=/etc/vsftpd/chroot_list
另外,從2.3.5之後,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!如果檢查發現還有寫權限,就會報該錯誤。

要修復這個錯誤,可以用命令chmod a-w /home/user去除用戶主目錄的寫權限,註意把目錄替換成你自己的。或者你可以在vsftpd的配置文件中增加下列項:

allow_writeable_chroot=YES

好了,這樣就只能訪問自身所屬目錄。

如果希望某個用戶可以訪問根目錄,把用戶名加入

/etc/vsftpd/chroot_list
不存在就創建這個文件,一行一個用戶名。

如果還是登陸不了ftp,那很有可能是selinux的問題,這個東西把他關掉就行

vi /etc/selinux/config

SELINUX=enforcing 設置成SELINUX=disabled

重啟一下服務器

reboot

重啟完了別忘了把vsftpd服務打開,默認是自啟的。

如果連接不上,很可能是防火墻阻止了,嘗試關閉防火墻

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
firewall-cmd --state #查看默認防火墻狀態(關閉後顯示notrunning,開啟後顯示running)

如果出現遠程文件夾無法顯示的情況,請使用主動模式連接,在你的ftp工具上設置。

vsftpd.conf文件參數中文解釋請移步:

匿名用戶配置

anonymous_enable=YES # 是否允許匿名ftp,如否則選擇NO
anon_upload_enable=YES # 匿名用戶是否能上傳
anon_mkdir_write_enable=YES # 匿名用戶是否能創建目錄
anon_other_write_enable=YES # 修改文件名和刪除文件

本地用戶配置

local_enable=YES # 是否允許本地用戶登錄
local_umask=022 # umask 默認755
write_enable=YES
chroot_local_user=YES # 本地用戶禁錮在宿主目錄中

chroot_list_enable=YES # 是否將系統用戶限止在自己的home目錄下
chroot_list_file=/etc/vsftpd.chroot_list # 列出的是不chroot的用戶的列表

chown_upload=YES # 是否改變上傳文件的屬主
chown_username=username # 如果是需要輸入一個系統用戶名

userlist_enable=YES
userlist_deny=NO

deny_email_enable=YES # 是否允許禁止匿名用戶使用某些郵件地址
banned_email_file=/etc/vsftpd.banned_emails # 禁止郵件地址的文件路徑

ftpd_banner=Welcome to chenlf FTP service. # 定制歡迎信息
dirmessage_enable=YES # 是否顯示目錄說明文件, 需要收工創建.message文件
message_file= # 設置訪問一個目錄時獲得的目錄信息文件的文件名,默認是.message

xferlog_enable=YES # 是否記錄ftp傳輸過程
xferlog_file=/var/log/vsftpd.log # ftp傳輸日誌的路徑和名字
xferlog_std_format=YES # 是否使用標準的ftp xferlog模式

ascii_upload_enable=YES # 是否使用ascii碼方式上傳文件
ascii_download_enable=YES # 是否使用ascii碼方式下載文件

connect_from_port_20=YES # 是否確信端口傳輸來自20(ftp-data)

nopriv_user=ftpsecure # 運行vsftpd需要的非特權系統用戶默認是nobody

async_abor_enable=YES # 是否允許運行特殊的ftp命令async ABOR.

FTP服務器的資源限制

idle_session_timeout=600 # 設置session超時時間
data_connection_timeout=120 # 設置數據傳輸超時時間

max_clients=50 # 用戶最大連接數 默認是0不限止
max_per_ip=5 # 每個IP地址最大連接數

anon_max_rate=102400 # 匿名的下載速度 KB
local_max_rate=102400 # 普通用戶的下載速度 KB

其他配置文件

/etc/xinetd.d/vsftpd

service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd

server_args =

log_on_success += DURATION USERID

log_on_failure += USERID

nice = 10
disable = no
}

/etc/pam.d/vsftpd
PAM 認證

/etc/vsftpd.chroot_list
此文件包含對服務器上所有FTP內容有權限的用戶名。對其他用戶來說,他們在服務器上的主目錄對他們顯示為根目錄。

/etc/shells
在允許本地用戶登錄之前,系統默認檢查是否有有效的用戶 shell。以防 PAM 認證不可用的情況。
/etc/ftpusers
此文件包含禁止FTP登錄的用戶名,通常有 "root", "uucp", "news" 之類,因為這些用戶權限太高,登錄 FTP 誤操作危險性大。

防火墻設置

如果是用默認的SuSEFirewall2,在 YaST-系統-/etc/sysconfig 編輯器,network-SuSEfirewall2

把 ftp 添加到 FW_SERVICES_EXT_TCP,比如你還要打開 ssh 那麽

FW_SERVICES_EXT_TCP "ftp ssh"

如果你需要被動模式 FTP 和 nat,在 YaST-系統-/etc/sysconfig 編輯器,network-SuSEfirewall2

FW_LOAD_MODULES "ip_conntrack_ftp ip_nat_ftp"

另一種方式直接修改防火墻配置文件:

cd /etc/sysconfig/

vi SuSEfirewall2

FW_SERVICES_EXT_TCP "ftp 21 telnet 23"

rcSuSEfirewall2 restart

linux開啟FTP以及添加用戶配置權限,只允許訪問自身目錄,不能跳轉根目錄