我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加、修改、删除操作,并且只能使用sftp登录服务器,不能用ssh操作。这些可以通过配置sftp服务实现。
创建新用户www,禁止ssh登录,不创建家目录
[root@local ~]# useradd -s /sbin/nologin -M www
[root@local ~]# passwd www
更改用户 www 的密码 。
新的 密码:
passwd:所有的身份验证令牌已经成功更新。
创建用户的根目录,用户就只能在此目录下活动
mkdir /var/www
设置目录权限,目录的权限设定有两个要点:
目录开始一直往上到系统根目录为止的目录拥有者都只能是root
目录开始一直往上到系统根目录为止都不可以具有群组写入权限
[root@local ~]# chown root:root /var/www
[root@local ~]# chmod 755 /var/www
如果是777,www用户就可以新建文件夹。如果是755,www用户就不可以新建文件夹。
配置sshd_config
vim /etc/ssh/sshd_config
修改一下内容
# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User www
ChrootDirectory /var/www
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
重启sshd服务
systemctl restart sshd.service
创建目录测试
[root@local ~]# mkdir /var/www/tpadmin
[root@local ~]# chown www:www /var/www/tpadmin
[root@local ~]# chmod 777 /var/www/tpadmin