linux创建用户配置sftp访问指定目录

Linux 发表时间:2021-12-02 11:31:31 作者:梁子亮 浏览次数:1590

首先安装sshd,一般服务器都自带,如果没有安装也可以yum或者apt-ge安装

配置sshd

vim /etc/ssh/sshd_config

在后面添加以下几行,注意要把原本的Subsystem sftp /usr/libexec/openssh/sftp-server这行配置要注释掉,不然重启sshd时会报错

Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /home/wwwroot/
ForceCommand internal-sftp

创建目录 /home/wwwroot 注意,注意,注意,重要的事件说三遍 /home/wwwroot的所属组和所属主都必须是root (包括home和wwwroot),且权限是755权限,不能是777权限(暂没留意,正常都是root全新的,所以此句可忽略)

接下来创建用户组和用户

groupadd sftp

接着设置用户为mysftp,给予/home/wwwroot目录的权限,注意执行后可能会报/home/wwwroot目录已存在的错,暂时无需理会

useradd -s /bin/nologin -d /data/sftp -g sftp mysftp

为mysftp用户创建密码

echo "123456" | passwd --stdin mysftp

重启sshd

systemctl restart sshd

完成后可以使用sftp软件例如vssh,或者terminal终端进行命令行链接测试,注意**为ip地址

sftp mysftp@**.**.**.**

期间可能会报错如 mysftp@**.**.**.**: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).,则需要修改sshd的配置文件

vim /etc/ssh/sshd_config
PasswordAuthentication yes
systemctl restart sshd

再次使用terminal终端进行命令行链接测试

sftp mysftp@**.**.**.**

输入密码,即可登录且只有/home/wwwroot目录权限

若使用ssh登录则提示没有权限,由于之前设置了nologin的缘故(This service allows sftp connections only.)

ssh mysftp@**.**.**.**

这时,mysftp用户即可SFTP登录,并且只能访问指定的目录。 但这时只能查看,不能上传。如果要实现上传,我们需要把当前目录的文件夹sftp用户和组权限给一下

chown mysftp:sftp /home/wwwroot/test

注意,若/home/wwwroot/test目录已存在,且里面已含有多级目录和文件,则需要递归给权限,不然只能上传新文件不能覆盖旧文件

chown -R mysftp:sftp /home/wwwroot/test

此时,mysftp用户即可实现上传和删除功能

若已创建的用户和组,想要删除,则

userdel -r 用户名
userdel -r mysftp
groupdel 组名
groupdel sftp
grep 用户名 /etc/group
grep mysftp /etc/group