自动创建sftp站点账号shell

Elysian
2021-12-20 / 0 评论 / 56 阅读 / 正在检测是否收录...
#!/bin/bash
#站点目录,用户名根据站点目录生成,多个站点用空格隔开
#例web="test1 test2",生成的用户为sftp_test1 sftp_test2
web="chinaoa sgj"
user_dir="/home/public_html/"
ssh_dir="/etc/ssh/sshd_config"

#配置权限,属主必须为root,权限必须为755,facl也不行
chown root.root ${user_dir}
chmod 755 ${user_dir}

#设置sebool值
if [[ `getenforce` == "Enforcing" ]];then
setsebool ssh_chroot_full_access 1
fi

#配置ssh,开启internal-sftp
if [[ `grep -w internal-sftp ${ssh_dir} | wc -l` -eq 0 ]];then
    sed -i "s/Subsystem/#Subsystem/g" ${ssh_dir}
    echo "Subsystem sftp internal-sftp" >>${ssh_dir}
fi

for user in ${web};do
    if [[ `grep -w "Match user sftp_${user}" ${ssh_dir} | wc -l` -eq 0 ]];then
#!/bin/bash
#站点目录,用户名根据站点目录生成,多个站点用空格隔开
#例web="test1 test2",生成的用户为sftp_test1 sftp_test2
web="chinaoa sgj"
user_dir="/home/public_html/"
ssh_dir="/etc/ssh/sshd_config"

#配置权限,属主必须为root,权限必须为755,facl也不行
chown root.root ${user_dir}
chmod 755 ${user_dir}

#设置sebool值
if [[ `getenforce` == "Enforcing" ]];then
setsebool ssh_chroot_full_access 1
fi

#配置ssh,开启internal-sftp
if [[ `grep -w internal-sftp ${ssh_dir} | wc -l` -eq 0 ]];then
    sed -i "s/Subsystem/#Subsystem/g" ${ssh_dir}
    echo "Subsystem sftp internal-sftp" >>${ssh_dir}
fi

for user in ${web};do
    if [[ `grep -w "Match user sftp_${user}" ${ssh_dir} | wc -l` -eq 0 ]];then
Match user sftp_${user}
ChrootDirectory ${user_dir}
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
### END ###
EOF
fi

#添加用户
if [[ `grep -w "sftp_${user}" /etc/passwd | wc -l` -eq 0 ]];then
    useradd -M -s /bin/false sftp_${user}
    read -s -t 30 -p "请在30S内输入站点${i}用户密码: " password
    echo "${password}" |passwd --stdin sftp_${user}
    echo "用户生成完毕,用户名为: sftp_${user}"
else
    echo "用户sftp_${user}已存在,请检查"
fi

#赋权对应目录给用户
setfacl -R -d -m u:sftp_${user}:rwx ${user_dir}${user}
setfacl -R -m u:sftp_${user}:rwx ${user_dir}${user}

#去掉不该有的目录权限,增加安全
cd ${user_dir}
setfacl -R -d -m u:sftp_${user}:--- `ls ${user_dir} | grep -v "${user}"`
setfacl -R -m u:sftp_${user}:--- `ls ${user_dir} | grep -v "${user}"`
done

#重启ssh服务
service sshd restart

#人性化输出
echo "请使用sftp进行连接,端口号:`netstat -anltp | grep LISTEN | grep sshd | grep "0.0.0.0" | awk '{print $4}' | awk -F: '{print $2}'`"
0

评论

博主关闭了所有页面的评论