Shell指令碼搭建FTP伺服器(vsftpd)_linux shell

來源:互聯網
上載者:User

各種知識點都寫在注釋裡。

只需要 sudo $PATH/ftpsetup.sh即可,預設以test/test為使用者名稱密碼登入,登入後的根目錄唯讀,子目錄writable可寫。

Ubuntu 13和Linux Mint 15上測試ok。

複製代碼 代碼如下:

#!/bin/bash
# by liuhx 2013-Nov-04.
# 設定ftp環境的指令碼。ftp的根目錄為唯讀,其下的writable目錄為可寫

# 可自訂以下四項
# ftp使用者名稱
userName="test"
# ftp密碼
password="test"
# ftp根目錄,末尾不要加/
ftp_dir="$HOME/ftp"
# 可寫目錄的目錄名
writable="writable"


# 如果沒有加sudo,提示錯誤並退出
if [ "x$(id -u)" != x0 ]; then 
  echo "Error: please run this script with 'sudo'." 
  exit 1
fi

# 核心工具,vsftpd。 -y是對所有提示都回答yes
sudo apt-get -y install vsftpd
# db-util是用來產生使用者列表資料庫的工具
sudo apt-get -y install db-util

# 以下步驟參考https://help.ubuntu.com/community/vsftpd
# 建立使用者名稱和密碼的資料庫,以單數行為使用者名稱,雙數行為密碼記錄
cd /tmp
printf "$userName\n$password\n" > vusers.txt
db_load -T -t hash -f vusers.txt vsftpd-virtual-user.db
sudo cp -f vsftpd-virtual-user.db /etc/
cd /etc
chmod 600 vsftpd-virtual-user.db
if [ ! -e vsftpd.conf.old ]; then
 sudo cp -f vsftpd.conf vsftpd.conf.old
fi

# 建立PAM file。bash的here-document,直接輸出這些內容覆蓋原檔案
(sudo cat <<EOF
auth       required     pam_userdb.so db=/etc/vsftpd-virtual-user
account    required     pam_userdb.so db=/etc/vsftpd-virtual-user
session    required     pam_loginuid.so
EOF
) > pam.d/vsftpd.virtual

# 擷取當前的使用者名稱,不能用whoami或$LOGNAME,否則得到的是root
owner=`who am i| awk '{print $1}'`

# 建立vsftpd的設定檔。
(sudo cat <<EOF
listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
local_umask=000
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
hide_ids=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd.virtual
guest_enable=YES
user_sub_token=$USER
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
EOF
) > vsftpd.conf
sudo echo "local_root=$ftp_dir" >> vsftpd.conf
# 虛擬使用者需要映射為本機使用者,設為自己,避免許可權問題,但同時也令自己對ftp根目錄不可寫
sudo echo "guest_username=$owner" >> vsftpd.conf


# 設定了每個虛擬使用者只可以瀏覽其根及子目錄(否則可訪問磁碟根目錄),
# 這樣會被要求根目錄不可寫,所以建立一個writable的子目錄
mkdir "$ftp_dir"
mkdir "$ftp_dir/$writable"
sudo chmod a-w "$ftp_dir"
sudo chown -R $owner:$owner $ftp_dir

sudo /etc/init.d/vsftpd restart

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.