Linux下如何創(chuàng)建SFTP賬號
前置要求
確保可以使用 ssh,可以通過以下命令確認(rèn)OpenSSH服務(wù)器是否正在運(yùn)行:
sudo service ssh status
如果未運(yùn)行,先安裝 OpenSSH 服務(wù)器:
sudo apt-get install openssh-server
1.新增用戶 my_user,所屬組 my_group
(新增用戶) sudo useradd -g my_group -s /bin/false -d /my_directory/my_user my_user (修改密碼) sudo passwd my_user
my_user 為用戶名,my_group 為用戶組名,/my_directory/my_user 為自定義用戶家目錄。
2.修改配置
(打開配置文件) sudo vim /etc/ssh/sshd_config (編輯) 按 i (新增配置) Match User my_user ChrootDirectory /my_directory/my_user ForceCommand internal-sftp (保存并退出) 先按 esc,再輸入 :wq 回車 (重啟配置) sudo systemctl restart sshd
3.修改家目錄權(quán)限
(切換路徑) cd /my_directory (修改 my_user 文件夾的 owner 為 root) sudo chown root my_user (修改為 my_user 文件夾的權(quán)限為 755) sudo chmod 755 my_user
4.在家目錄下創(chuàng)建子目錄
因?yàn)榧夷夸浀乃鶎儆脩舯仨殲?root,否則無法登陸;
但是這樣會導(dǎo)致其他用戶無法上傳文件,所以需要在家目錄下建立自己的目錄。
(創(chuàng)建文件夾) sudo mkdir share (修改所屬用戶) sudo chown my_user:my_group share
至此,賬號創(chuàng)建完成,可以用命令或者 FileZilla 登陸,并上傳文件測試。
5.上述命令腳本化
可以將上述流程寫到一個腳本里,下次創(chuàng)建腳本時只需要執(zhí)行腳本就可以了。
- 5.1 創(chuàng)建
.sh文件
sudo vim sftp-conf.sh
- 5.2 按
i進(jìn)入編輯模式,復(fù)制粘貼如下代碼:
MAX_ATTEMPTS=3
attempt=1
password_match=false
while [ $attempt -le $MAX_ATTEMPTS ]; do
# 提示用戶輸入用戶名
echo "請輸入用戶名:"
read username
# 提示用戶輸入密碼
echo "請輸入密碼:"
read -s password1
echo "請再次輸入密碼:"
read -s password2
# 檢查密碼是否一致
if [ "$password1" != "$password2" ]; then
echo "兩次輸入的密碼不一致。"
else
echo "--------------------------------------------------"
echo "密碼輸入正確,執(zhí)行命令開始."
echo "新增SFTP用戶 $username..."
useradd -g my_group -s /bin/false -d /my_directory/$username $username
echo "設(shè)置密碼..."
echo "$username:$password1" | chpasswd
echo "修改配置文件..."
# 在配置文件中新增一行
sed -i '/# .sh append/a Match User '"$username"'\nChrootDirectory /my_directory/'"$username"'\nForceCommand internal-sftp' /etc/ssh/sshd_config
echo "切換路徑..."
cd /my_directory
echo "創(chuàng)建用戶文件夾..."
mkdir $username
echo "修改文件夾 owner 為 root..."
chown root $username
echo "修改為文件夾的權(quán)限為 755..."
chmod 755 $username
echo "進(jìn)入文件夾..."
cd $username
echo "創(chuàng)建 files 文件夾..."
mkdir files
echo "修改所屬用戶..."
chown $username:my_group share
echo "--------------------------------------------------"
echo "命令執(zhí)行完畢。賬戶創(chuàng)建完成,賬戶目錄為 /my_directory/$username"
password_match=true
break
fi
attempt=$((attempt + 1))
done
if [ "$password_match" = false ]; then
echo "密碼輸入錯誤次數(shù)超過限制。"
fi
- 5.3 按
esc退出編輯模式,輸入:wq保存并退出 - 5.4 運(yùn)行腳本
./sftp-conf.sh
按提示輸入賬號和密碼,即可完成創(chuàng)建賬號。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
通過 SSH 在遠(yuǎn)程 Linux 系統(tǒng)上運(yùn)行命令的方法
這篇文章主要介紹了通過 SSH 在遠(yuǎn)程 Linux 系統(tǒng)上運(yùn)行命令的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
LNMP下添加Discuz x2.5的偽靜態(tài)規(guī)則
今天一個找我配置過 lnmp 環(huán)境的用戶要搭建 Discuz 論壇,但是發(fā)現(xiàn)不支持偽靜態(tài),倡萌沒怎么折騰過 Discuz,百度下才知道,原來軍哥的 LNMP 環(huán)境包自帶的 DZ 規(guī)則不適用于 Discuz x2.5,記錄下對應(yīng)的偽靜態(tài)規(guī)則2016-09-09
Centos7.0安裝ceph(JEWEL)及以上版本的實(shí)例解析
這篇文章主要介紹了Centos7.0安裝ceph(JEWEL)及以上版本的實(shí)例解析,需要的朋友可以參考下2018-02-02
使用 Linux seq 命令生成數(shù)字序列(推薦)
seq命令用于以指定增量從首數(shù)開始打印數(shù)字到尾數(shù),即產(chǎn)生從某個數(shù)到另外一個數(shù)之間的所有整數(shù),并且可以對整數(shù)的格式、寬度、分割符號進(jìn)行控制。這篇文章主要介紹了使用 Linux seq 命令生成數(shù)字序列,需要的朋友可以參考下2020-01-01
Apache James數(shù)據(jù)庫存儲用戶信息的密碼加密問題及解決方案
集成java mail直接用明文帳號密碼連接就行了,因?yàn)閖ames會自己去加密驗(yàn)證,其他軟件通過pop3配置,密碼也是用明文就行了,這篇文章主要介紹了Apache James數(shù)據(jù)庫存儲用戶信息的密碼加密問題及解決方案,需要的朋友可以參考下2024-03-03

