centos上自帶vsftpdphp
yum install -y vsftpdmysql
useradd -s /sbin/nologin virftplinux
/sbin/nologin //指定用戶的shell 表明用戶不能登陸系統nginx
vim /etc/vsftpd/vsftpd_login //內容以下,奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行sql
testuser1 aminglinux
local_root=/home/virftp/testuser1 anonymous_enable=NO write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO idle_session_timeout=600 data_connection_timeout=120 max_clients=10
auth sufficient/lib64/security/pam_userdb.sodb=/etc/vsftpd/vsftpd_login account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
chroot_local_user=YES guest_enable=YES guest_username=virftp virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vsftpd_user_conf allow_writeable_chroot=YES
1.在centos上默認自帶的ftp服務軟件包叫作vsftpd,vsftpd軟件包是可使用系統級別的用戶,(也就是假設建立了一個普通用戶hanfeng,設置一個密碼,這時候就能夠用vsftpd啓動這個服務,而後用hanfeng這個用戶去登錄,登陸的形式爲ftp,登陸進去後會進入到hanfeng這個用戶的家目錄下,但這樣操做會存在安全隱患)shell
2.安裝vsftpd包——>yum install -y vsftpdapache
[root@xuexi-001 ~]# yum install -y vsftpd
3.在安裝完成後建立一個普通用戶,目的是爲了讓虛擬用戶作一個映射的vim
[root@xuexi-001 ~]# useradd -s /sbin/nologin virftp
4.編輯 vim /etc/vsftpd/vsftpd_login 虛擬用戶的密碼文件,在密碼文件中定義用戶名和密碼windows
[root@xuexi-001 ~]# vim /etc/vsftpd/vsftpd_login 1,3行爲用戶名 2,4行爲密碼 testuser1 111111 user1 222222 保存退出
5.在編輯完密碼文件,而後給 /etc/vsftpd/vsftpd_login 文件作一個 600的權限設置,爲了確保密碼文件的安全,防止全部的用戶均可以讀取centos
[root@xuexi-001 ~]# chmod 600 /etc/vsftpd/vsftpd_login
6.將文本的密碼文件轉換爲計算機識別的二進制文件
[root@xuexi-001 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db [root@xuexi-001 ~]# ls -l /etc/vsftpd/ 總用量 36 -rw------- 1 root root 125 8月 3 2017 ftpusers -rw------- 1 root root 361 8月 3 2017 user_list -rw------- 1 root root 5030 8月 3 2017 vsftpd.conf -rwxr--r-- 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh -rw------- 1 root root 30 8月 6 22:11 vsftpd_login -rw-r--r-- 1 root root 12288 8月 6 22:12 vsftpd_login.db
7.這個vsftpd_login.db密碼是不能識別 cat命令 查看的,在上面的密碼文件是能夠自定義的
8.建立虛擬用戶所在的配置文件目錄,這個目錄也是自定義的,也是須要在配置文件中定義
[root@xuexi-001 ~]# mkdir /etc/vsftpd/vsftpd_user_conf
9.切換到 /etc/vsftpd/vsftpd_user_conf 文件下 cd /etc/vsftpd/vsftpd_user_conf
[root@xuexi-001 ~]# cd /etc/vsftpd/vsftpd_user_conf/ [root@xuexi-001 vsftpd_user_conf]#
10.建立第一個用戶的配置文件,用戶的配置文件名字有一點特殊性,須要和用戶的名字保持一致,好比在密碼配置文件中的用戶爲testuser1,那麼定義的配置文件用戶名稱就爲testuser1
配置文件內容 local_root=/home/virftp/testuser1 //指定虛擬用戶的家目錄 anonymous_enable=NO //是否容許匿名用戶 write_enable=YES //是否可寫 local_umask=022 //建立新文件目錄的默認權限 anon_upload_enable=NO //是否容許匿名用戶上傳 anon_mkdir_write_enable=NO //是否容許匿名用戶建立目錄和寫 idle_session_timeout=600 //鏈接ftp超時時間(秒) data_connection_timeout=120 //數據傳輸的超時時間(秒) max_clients=10 //最多容許同時幾個終端鏈接
[root@xuexi-001 vsftpd_user_conf]# vim testuser1 local_root=/home/virftp/testuser1 anonymous_enable=NO write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO idle_session_timeout=600 data_connection_timeout=120 max_clients=10 保存退出
11.建立虛擬用戶的家目錄
[root@xuexi-001 vsftpd_user_conf]# mkdir /home/virftp/testuser1
12.新建一個文件,在登陸的時候就能夠看到這個文件了
[root@xuexi-001 vsftpd_user_conf]# touch /home/virftp/testuser1/aming.txt
13.將權限作一個修改,由於最後映射成virftp 這個用戶,若virftp這個用戶沒有讀的權利那就是錯誤的,沒法正常的去上傳和下載
[root@xuexi-001 vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
14.定義密碼文件的路徑
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
最終以下
[root@xuexi-001 vsftpd_user_conf]# vi /etc/pam.d/vsftpd #%PAM-1.0 auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth 保存退出
15./etc/pam.d/vsftpd,它是一個用來認證的文件,在登陸FTP須要有一個認證的過程,認證的過程須要告訴它,經過什麼樣的形式去認證,認證的時候去哪裏找這個密碼庫
16.編輯 /etc/vsftpd/vsftpd.conf 主配置文件
[root@hf-01 vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf 將anonymous_enable=YES 改成 anonymous_enable=NO 將#anon_upload_enable=YES 改成 anon_upload_enable=NO ,並取消註釋符 將#anon_mkdir_write_enable=YES 改成 anon_mkdir_write_enable=NO ,並取消註釋符 並增長如下內容 chroot_local_user=YES guest_enable=YES guest_username=virftp virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vsftpd_user_conf allow_writeable_chroot=YES chroot_local_user=YES guest_enable=YES //打開虛擬用戶映射 guest_username=virftp //映射的用戶名 virtual_use_local_privs=YES //告訴服務,咱們如今用的虛擬用戶 user_config_dir=/etc/vsftpd/vsftpd_user_conf //定義虛擬用戶配置文件所在路徑 allow_writeable_chroot=YES 保存退出
增長的內容後面YES後面不能出現空格,不讓會報錯
17.更改完配置文件,去啓動vsftpd服務,啓動完並查看下進程和監聽的端口
[root@hf-01 vsftpd_user_conf]# systemctl start vsftpd [root@hf-01 vsftpd_user_conf]# ps aux |grep vsftpd root 3564 0.0 0.0 51136 564 ? Ss 06:49 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 3566 0.0 0.0 112676 984 pts/0 R+ 06:49 0:00 grep --color=auto vsftpd [root@hf-01 vsftpd_user_conf]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1607/master tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:40904 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1250/rpc.mountd tcp 0 0 0.0.0.0:37459 0.0.0.0:* LISTEN 1224/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1227/sshd tcp6 0 0 ::1:25 :::* LISTEN 1607/master tcp6 0 0 :::2049 :::* LISTEN - tcp6 0 0 :::41381 :::* LISTEN 1224/rpc.statd tcp6 0 0 :::35465 :::* LISTEN - tcp6 0 0 :::3306 :::* LISTEN 1643/mysqld tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::20048 :::* LISTEN 1250/rpc.mountd tcp6 0 0 :::21 :::* LISTEN 3564/vsftpd tcp6 0 0 :::22 :::* LISTEN 1227/sshd [root@hf-01 vsftpd_user_conf]#
18.FTP監聽的端口爲21端口,22端口是sshd,23端口是telnet(如今telnet幾乎沒人使用了)
###測試FTP
1.vsftpd服務已經啓動
2.這裏爲了方便測試,直接在linux上的FTP客戶端,爲lftp——>安裝包yum install -y lftp
[root@hf-01 ~]# yum install -y lftp
3.安裝完成以後,按以下輸入方式,而後回車輸入密碼口令,用ls命令就能夠查看到剛剛以前建立的文件,可見,已經鏈接成功
[root@hf-01 ~]# lftp testuser1@127.0.0.1 口令: lftp testuser1@127.0.0.1:~> ls -rw-r--r-- 1 1002 1002 0 Jan 17 22:26 aming.txt lftp testuser1@127.0.0.1:/>
4.能夠輸入 ? 查看可使用使用哪些命令
lftp testuser1@127.0.0.1:/> ? !<shell-command> (commands) alias [<name> [<value>]] attach [PID] bookmark [SUBCMD] cache [SUBCMD] cat [-b] <files> cd <rdir> chmod [OPTS] mode file... close [-a] [re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>] du [options] <dirs> exit [<code>|bg] get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args> help [<cmd>] history -w file|-r file|-c|-l [cnt] jobs [-v] [<job_no...>] kill all|<job_no> lcd <ldir> lftp [OPTS] <site> ln [-s] <file1> <file2> ls [<args>] mget [OPTS] <files> mirror [OPTS] [remote [local]] mkdir [-p] <dirs> module name [args] more <files> mput [OPTS] <files> mrm <files> mv <file1> <file2> [re]nlist [<args>] open [OPTS] <site> pget [OPTS] <rfile> [-o <lfile>] put [OPTS] <lfile> [-o <rfile>] pwd [-p] queue [OPTS] [<cmd>] quote <cmd> repeat [OPTS] [delay] [command] rm [-r] [-f] <files> rmdir [-f] <dirs> scache [<session_no>] set [OPT] [<var> [<val>]] site <site-cmd> source <file> torrent [-O <dir>] <file|URL>... user <user|URL> [<pass>] wait [<jobno>] zcat <files> zmore <files> lftp testuser1@127.0.0.1:/>
5.好比執行get aming.txt 命令,就會把aming.txt文件直接下載到當前目錄
lftp testuser1@127.0.0.1:~> get aming.txt lftp testuser1@127.0.0.1:/>
6.輸入quit 退出ftp
lftp testuser1@127.0.0.1:/> quit [root@hf-01 ~]#
7.在當前目錄直接ls命令查看,會看到aming.txt文件就是剛剛下載下來的
[root@hf-01 ~]# ls 111 1_sorft.txt 2.txt.bak amin bb.txt lll.sh 123 1.txt 3.txt aming.txt grep sed 1.cap 234 aa.txt anaconda-ks.cfg haha shell 1_heard.txt 2.txt admin awk id.txt [root@hf-01 ~]#
8.查詢在lftp中可執行的命令,經常使用命令:put、get xshell實現跟FTP的功能(兩種方案) 第一種方案:
1.在xshell中新建一個會話屬性,將名稱隨便填寫,協議改爲 sftp 協議,IP爲本機的IP,端口仍是22端口,由於走的仍是ssh協議
2.而後打開,輸入用戶名和密碼,默認是在root下
Type `help' to browse available commnands. sftp:/root> ls dr-xr-x--- 13 root root 4096 Jan 18 09:12 . dr-xr-xr-x 20 root root 282 Dec 14 21:06 .. -rw-r--r-- 1 root root 18 Dec 29 2013 .bash_logout -rw-r--r-- 1 root root 176 Dec 29 2013 .bash_profile -rw-r--r-- 1 root root 176 Dec 29 2013 .bashrc -rw-r--r-- 1 root root 100 Dec 29 2013 .cshrc -rw-r--r-- 1 root root 129 Dec 29 2013 .tcshrc -rw------- 1 root root 1422 Oct 19 07:00 anaconda-ks.cfg drwx------ 2 root root 80 Oct 18 23:58 .ssh -rw------- 1 root root 29340 Jan 16 23:47 .bash_history drwxr-xr-x 3 root root 110 Dec 5 21:23 111 -rw-r--r-- 1 root root 184 Dec 9 17:54 123.txt -rw-r--r-- 1 root root 4461632 Dec 9 18:00 aaa.txt -rw-r--r-- 1 root root 4464640 Dec 9 18:04 aaa.txt.tar drwxr-xr-x 2 root root 58 Dec 10 21:11 aaaaa -rw-r--r-- 1 root root 10240 Dec 12 19:59 chamlinux.tar -rw-r--r-- 1 root root 20395803 Dec 15 15:04 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz drwxr-xr-x 2 root root 6 Dec 16 00:09 apache -rw------- 1 root root 1024 Jan 8 23:30 .rnd -rw------- 1 root root 1978 Jan 16 01:15 .mysql_history -rw-r--r-- 1 root root 490 Nov 17 14:21 1.txt -rw------- 1 root root 8372 Jan 18 09:06 .viminfo drwxr-xr-x 3 root root 18 Jan 18 09:12 .config -rw-r--r-- 1 root root 31 Nov 17 14:42 2.txt -rwxrwxrwx 1 user1 test 231 Dec 9 17:49 a.txt drwxrwxrwx 2 root user1 19 Dec 12 19:57 chamlinux drwxr-xr-x 3 root root 65 Nov 26 13:52 grep drwxr-xr-x 2 root root 70 Nov 26 14:20 sed drwxr-xr-x 2 root root 35 Nov 22 22:07 awk -rw-r--r-- 1 root root 8638793 Oct 21 03:39 httpd-2.4.29.tar.gz drwxr-xr-x 3 root root 19 Jan 18 09:12 .local drwxr----- 3 root root 19 Nov 27 18:56 .pki sftp:/root> cd /tmp/ sftp:/tmp> get php-fcgi.sock/ sftp: cannot open /tmp/php-fcgi.sock/ to read sftp:/tmp> get user.sql Fetching /tmp/user.sql to user.sql sftp: received 6.83 KB in 0.08 seconds
第二種方案
輸入ctrl+cat+f
1.pure-ftpd 比vftpd更加的輕量,更加簡單
2.首先須要安裝pure-ftpd——>yum install -y pure-ftpd,但有時會提示pure-ftpd不存在,那是由於你缺乏epel擴展源——>yum install -y epel-release
[root@xuexi-001 ~]# yum install -y pure-ftpd
3.安裝完以後,更改 /etc/pure-ftpd/pure-ftpd.conf 配置文件,找到pureftpd.pdb這行,把行首的# 號 刪除,目的是爲了把密碼配置文件要指定
[root@xuexi-001 ~]# vi /etc/pure-ftpd/pure-ftpd.conf 搜索/pureftpd.pdb行首的 #號 刪除 PureDB /etc/pure-ftpd/pureftpd.pdb 保存退出
4.由於pure-ftpd也屬於ftp軟件,也會監聽21端口,因此須要先關閉以前vsftpd監聽打開的21端口,不然就會報錯
[root@xuexi-001 ~]# systemctl stop vsftpd
5.而後再啓動pure-ftpd服務,並查看端口,查看pure-ftpd服務
[root@xuexi-001 ~]# systemctl start pure-ftpd [root@xuexi-001 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:38124 0.0.0.0:* LISTEN 952/rpc.statd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 543/rpcbind tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1141/nginx: master tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 956/rpc.mountd tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2045/pure-ftpd (SER tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 940/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1189/master tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1141/nginx: master tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:46056 0.0.0.0:* LISTEN - tcp6 0 0 :::111 :::* LISTEN 543/rpcbind tcp6 0 0 :::20048 :::* LISTEN 956/rpc.mountd tcp6 0 0 :::21 :::* LISTEN 2045/pure-ftpd (SER tcp6 0 0 :::38773 :::* LISTEN - tcp6 0 0 :::22 :::* LISTEN 940/sshd tcp6 0 0 ::1:25 :::* LISTEN 1189/master tcp6 0 0 :::2049 :::* LISTEN - tcp6 0 0 :::60356 :::* LISTEN 952/rpc.statd tcp6 0 0 :::3306 :::* LISTEN 1336/mysqld
6.建立測試目錄,爲了給pure-ftpd用戶使用,再建立用戶
[root@xuexi-001 ~]# mkdir /data/ftp [root@xuexi-001 ~]# useradd -u 1010 pure-ftp
7.把/data/ftp的屬主和屬組改爲pure-ftp
[root@xuexi-001 ~]# chown -R pure-ftp:pure-ftp /data/ftp
8.用pure-pw useradd 命令建立一個用戶
[root@xuexi-001 ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp Password: //密碼爲 111111 Enter it again:
9.可使用pure-pw --help查看該命令支持那些用法
10.命令pure-pw mkdb,是用來把密碼生成系統,也就是pure-ftpd服務所識別的一種文件
[root@xuexi-001 ~]# pure-pw mkdb
pure-ftpd 創建虛擬用戶數據
11.查看命令說明文件,命令pure-pw list/userdel/usermod/passwd 和pure-pw --help 命令同樣的用戶
1.先在/data/ftp/目錄下建立一個文件
[root@xuexi-001 ~]# touch /data/ftp/123.txt
2.使用pure-ftpd
[root@xuexi-001 ~]# lftp ftp_usera@127.0.0.1 口令: lftp ftp_usera@127.0.0.1:~>
3.能夠查看到剛建立的123.txt文件,uid和gid爲root
lftp ftp_usera@127.0.0.1:~> ls drwxr-xr-x 2 1010 pure-ftp 20 Jan 19 04:51 . drwxr-xr-x 2 1010 pure-ftp 20 Jan 19 04:51 .. -rw-r--r-- 1 0 0 0 Jan 19 04:51 123.txt lftp ftp_usera@127.0.0.1:/>
4.退出pure-ftpd,只須要輸入 quit命令 便可
5.這時咱們改變123.txt文件的屬主和屬組
[root@xuexi-001 ~]# chown -R pure-ftp:pure-ftp /data/ftp/123.txt
6.在登陸pure-ftpd中去查看123.txt文件的屬主和屬組,會看到屬主爲uid,屬組映射爲系統中組的名字pure-ftpd
[root@xuexi-001 ~]# lftp ftp_usera@127.0.0.1 口令: lftp ftp_usera@127.0.0.1:~> ls drwxr-xr-x 2 1010 pure-ftp 21 Aug 23 15:42 . drwxr-xr-x 2 1010 pure-ftp 21 Aug 23 15:42 .. -rw-r--r-- 1 1010 pure-ftp 0 Aug 23 15:42 123.txt lftp ftp_usera@127.0.0.1:/>