批量创建独立sftp用户的shell脚本
我的目的是满足每一个用户只能访问它自己的目录下的upload文件夹,不能离开自己的目录
因为我只要一个组,因此把用户组在代码里写死了,这个组叫sftpusers
手动创建一下(如果需要批量创建不同组用户,代码修改一下即可)
groupadd sftpusers
创建文件1.sh
内容为
#!/bin/bash name=$1 pass=$2 useradd -s /bin/false -g sftpusers $name if [ $? -eq 0 ];then echo -e "\033[32muser ${name}: create success\033[0m" else echo -e "\033[31muser ${name}: create false\033[0m" exit 1 fi echo $pass | passwd $name --stdin &>/dev/null if [ $? -eq 0 ];then echo -e "\033[32mpasswd ${name} create success!!!" else echo -e "\033[31mpasswd ${name} create false\033[0m" fi mkdir /home/$name/upload if [ $? -eq 0 ];then echo -e "\033[32mcreate /upload success!!!" else echo -e "\033[31mcreate /upload false\033[0m" fi chown root /home/$name chmod 755 /home/$name chown $name /home/$name/upload chmod 755 /home/$name/upload if [ $? -eq 0 ];then echo -e "\033[32mroot right success!!!" else echo -e "\033[31mroot right false\033[0m" fi echo -e "\033[33mname:$1 \033[0m" echo -e "\033[33mpasswd:$2 \033[0m" bash
给权限
chmod u+x 1.sh
编辑 /etc/ssh/sshd_config文件
找到subsystem这个配置项,将其修改为 subsystem sftp internal-sftp 文件末尾加上 match group sftpusers chrootdirectory %h forcecommand internal-sftp allowtcpforwarding no
执行
./1.sh 用户名 密码
这样就创建好了,用户登入后根目录为/home/用户名 它只对里面的upload文件夹有操作权限,这样就防止逃逸