#!/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}'`"
版权属于:
Elysian
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论