銳捷網路技能大賽-雲平臺部分-CentOS部分04-[FTP]

2020-10-27 11:00:03

銳捷網路技能大賽-雲平臺部分-CentOS部分04-[FTP]

宣告:寫這些比賽的文章只是便於有些地區上進同學學習,博主本人只是出於好心,因此,博主沒有對個人服務的義務,更何況一分錢都得不到,之所以這樣講是因為某些加我問問題的同學態度惡劣,因此我刪除了很多地方我本人的聯絡方式,這個比賽本身和我一點關係都沒有,只與你自己個人學習能力有關,看不看得懂和我一點關係都沒有,懂的人自然都懂,我盡力了,你們隨意!


實在解決不了當然我也可以提供一些付費業務
原因1:太多人問我
原因2:有些同學素質沒那麼高尚


FTP

樣題內容

2019年G卷

設定FTP服務,建立兩個基於埠號的FTP站點

第一個FTP站點需求如下:

  • 使用虛擬使用者認證方式,建立使用者virtftp, shell為/sbin/nologin,並將虛擬使用者對映至virtftp使用者。
  • 監聽21號埠
  • 設定虛擬使用者的主目錄為/data/ftp_data且在目錄下建立ftp_test空檔案。
  • 將/data/ftp_data屬主屬組更改為virtftp,並且屬主有寫許可權。
  • 關閉PASV模式的安全檢查。
  • 設定使用者端最大連線數為100,每個IP允許3個連線數。
  • 設定被動模式的埠範圍為9000-9200。
  • ftpuser虛擬使用者可以下載與上傳檔案
  • ftpadmin虛擬使用者可以下載與上傳檔案以及刪除重新命名操作,上傳檔案的umask為022。

組態檔要求:

/etc/pam.d/vsftpd.vu,(pam組態檔)

/etc/vsftpd/vlogin.db, (使用者資料庫)

/etc/vsftpd/ftp_user (該目錄下ftp使用者許可權設定目錄)

第二個FTP站點需求如下:

  • 建立普通使用者tom
  • 監聽2121號埠
  • 設定本地使用者的根目錄為/data/web_data。
##使用虛擬使用者認證方式,建立使用者virtftp, shell為/sbin/nologin,並將虛擬使用者對映至virtftp使用者
[root@localhost ~]# useradd  -M -d /data/ftp_data -s /sbin/nologin virtftp
[root@localhost ~]# cat /etc/passwd | grep virtftp
virtftp:x:1000:1000::/data/ftp_data:/sbin/nologin
[root@localhost ~]# mkdir /data/ftp_data
[root@localhost ~]# cd !$
cd /data/ftp_data
[root@localhost ftp_data]# touch ftp_test
##將/data/ftp_data屬主屬組更改為virtftp,並且屬主有寫許可權
[root@localhost ftp_data]# chown -R virtftp:virtftp /data/ftp_data
[root@localhost ftp_data]# chmod u+w !$
chmod u+w /data/ftp_data
[root@localhost ftp_data]# setfacl -m u:virtftp:rwx /data/ftp_data/
[root@localhost ftp_data]# getfacl !$
getfacl /data/ftp_data/
getfacl: Removing leading '/' from absolute path names
# file: data/ftp_data/
# owner: virtftp
# group: virtftp
user::rwx
user:virtftp:rwx
group::r-x
mask::rwx
other::r-x
###/etc/pam.d/vsftpd.vu,(pam組態檔)
[root@localhost vsftpd]# cd /etc/pam.d/
[root@localhost pam.d]# ls
chfn                 login             postlogin     smartcard-auth     sudo            vlock
chsh                 other             postlogin-ac  smartcard-auth-ac  sudo-i          vsftpd
config-util          passwd            remote        smtp               su-l
crond                password-auth     runuser       smtp.postfix       system-auth
fingerprint-auth     password-auth-ac  runuser-l     sshd               system-auth-ac
fingerprint-auth-ac  polkit-1          samba         su                 systemd-user
[root@localhost pam.d]# vim vsftpd 
[root@localhost pam.d]# mv vsftpd vsftpd.bak
[root@localhost pam.d]# vim vsftpd.vu
[root@localhost pam.d]# cat vsftpd.vu 
auth                 required     pam_userdb.so   db=/etc/vsftpd/vlogin 
account              required     pam_userdb.so   db=/etc/vsftpd/vlogin
[root@localhost pam.d]# 

[root@localhost vsftpd]# grep ^[^#] /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
#下面幾乎都要新增
listen_port=21
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=virtftp
user_config_dir=/etc/vsftpd/ftp_user
allow_writeable_chroot=YES
pasv_promiscuous=YES
max_clients=100
max_per_ip=3
pasv_enable=YES
pasv_min_port=9000
pasv_max_port=9200
##/etc/vsftpd/ftp_user (該目錄下ftp使用者許可權設定目錄)
[root@localhost vsftpd]# tail /etc/vsftpd/ftp_user/*
==> /etc/vsftpd/ftp_user/ftpadmin <==
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022

==> /etc/vsftpd/ftp_user/ftpuser <==
anon_upload_enable=YES
[root@localhost vsftpd]# 
##/etc/vsftpd/vlogin.db, (使用者資料庫)
[root@localhost vsftpd]# vim vlogin.txt
[root@localhost vsftpd]# cat vlogin.txt 
ftpuser
123456
ftpadmin
123456
[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vlogin.txt  /etc/vsftpd/vlogin.db
[root@localhost vsftpd]# chmod 700 /etc/vsftpd/vlogin.db 
[root@localhost vsftpd]# setenforce 0
[root@localhost vsftpd]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@localhost vsftpd]# chmod 777 /data/ftp_data/
####驗證測試
[root@localhost vsftpd]# ftp 192.168.71.129
Connected to 192.168.71.129 (192.168.71.129).
220 (vsFTPd 3.0.2)
Name (192.168.71.129:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,71,129,35,158).
150 Here comes the directory listing.
-rw-r--r--    1 1000     1000            0 Sep 12 16:03 ftp_test
226 Directory send OK.
ftp> put vlogin.db 
local: vlogin.db remote: vlogin.db
227 Entering Passive Mode (192,168,71,129,35,204).
150 Ok to send data.
226 Transfer complete.
12288 bytes sent in 3.1e-05 secs (396387.10 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (192,168,71,129,35,134).
150 Here comes the directory listing.
-rw-r--r--    1 1000     1000            0 Sep 12 16:03 ftp_test
-rw-------    1 1000     1000        12288 Sep 12 17:24 vlogin.db
226 Directory send OK.
[root@localhost vsftpd]# ftp 192.168.71.129
Connected to 192.168.71.129 (192.168.71.129).
220 (vsFTPd 3.0.2)
Name (192.168.71.129:root): ftpadmin
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,71,129,35,100).
150 Here comes the directory listing.
-rw-r--r--    1 1000     1000            0 Sep 12 16:03 ftp_test
-rw-------    1 1000     1000        12288 Sep 12 17:24 vlogin.db
226 Directory send OK.
ftp> rename vlogin.db rename.txt
350 Ready for RNTO.
250 Rename successful.
ftp> ls
227 Entering Passive Mode (192,168,71,129,35,69).
150 Here comes the directory listing.
-rw-r--r--    1 1000     1000            0 Sep 12 16:03 ftp_test
-rw-------    1 1000     1000        12288 Sep 12 17:24 rename.txt
226 Directory send OK.
ftp> 
# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vlogin.db