CentOS 7 新增用户只能访问特定目录-程序旅途
该图片由JLB1988Pixabay上发布

最近客户需要从服务器的一个目录中下载文件,从安全性考虑只允许访问这一个目录,下面是如何新建一个新的用户并限制访问特定的目录。

服务器是 CentOS 7,传输文件使用sftp协议,工具FileZilla。

新建用户

使用 adduser 命令创建一个用户 sftpuser1

adduser sftpuser1

关于 useradd 和 adduser 的区别可自行搜索

设置用户密码

passwd sftpuser1

禁止用户SSH登录

usermod -s /bin/false sftpuser1

usermod -s /usr/sbin/nologin sftpuser1

/bin/false什么也不做只是返回一个错误状态,然后立即退出。将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示。

nologin会礼貌的向用户显示一条信息,并拒绝用户登录:

This account is currently not available.

修改登入目录

usermod -d /data/sftpuser1 sftpuser1

这样用户登录时,默认进入 /data/sftpuser1 目录。确保 /data/sftpuser1 目录存在

设置 sshd_config

打开 ssh_config 文件

vi /etc/ssh/sshd_config

注释掉

# Subsystem     sftp    /usr/libexec/openssh/sftp-server

在下面添加

Subsystem sftp internal_sftp
Match User sftpuser1
ForceCommand internal-sftp
ChrootDirectory /data/sftpuser1/

重启 sshd 服务

systemctl restart sshd.service

注意事项

/data/sftpuser1 目录及所有的上级目录的 owner 都只能是 root ,且群组用户和其他用户不能有写入权限。如果需要写入权限,可以在 /data/sftpuser1 目录中新建一个目录,并赋予 777 权限