linux Centos 6.5安装配置sftp 文件夹访问权限 根目录不可见

昨天折腾一晚上,给linux服务器设立一个厂商的sftp账号,让他只能访问这个文件夹,看不到我服务器的其他内容,所以还要限制它shell登录,步骤详细如下:

1、创建sftp组

groupadd sftp

2、创建一个sftp用户,用户名为andy

useradd -g sftp -s /bin/false amy

3、修改密码为haoroot

passwd amy

4、sftp组的用户的home目录统一指定到/data/sftp下

mkdir -p /data/sftp/amy 

5、指定andy的home为/data/sftp/amy

扫描二维码关注公众号,回复: 2000962 查看本文章

 usermod -d /data/sftp/amy amy

6、配置sshd_config

vi /etc/ssh/sshd_config

输入/Subsystem搜索到下列内容,然后注释

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

在文件结尾处添加

 Subsystem       sftp   internal-sftp

Match Group sftp

ChrootDirectory /data/sftp/%u

ForceCommand    internal-sftp

AllowTcpForwarding no

X11Forwarding no

然后按Esc ,输入: wq保存配置文件。

7、设定Chroot目录权限 

chown root:sftp /data/sftp/amy

chmod 755 /data/sftp/amy

8、建立SFTP用户登入后可写入的目录

mkdir /data/sftp/amy/upload

chown amy:sftp /data/sftp/amy/upload 

chmod 755 /data/sftp/amy/upload

9、修改/etc/selinux/config

vi /etc/selinux/config

#SELINUX=enforcing

#改为

#SELINUX=disabled

10、关闭SELINUX生效

输入命令

setenforce 0

11、重启sshd服务

 service sshd restart


到此为止,不出意外是可以登录的了。

但是!!!意外就在这个时候发生了。。。死活连不上!就是连不上!!报错如下:

> Write failed: Broken pipe

> Couldn't read packet: Connection resetby peer

查看/var/log/secure,发现如下一个错误

fatal: bad ownership or modes for chrootdirectory component "/data/"

这大概就是“目录的属主和权限配置不当”的意思。“在sftp配置中,ChrootDirectory /var/www/project,参数限定用户登录sftp后的活动范围。这个参数配置要求比较严格,需要限制目录的每个上级目录的属主都是root,例如/var/www/project,它就要求/ /var /var/www三个目录的owner都是root。如果不好更改,可以用软链接的形式实现,例如 ln -s /var/www/project /home/project ”,这段话是我参考的,试用了但是真的软连接也没有卵用。过了3个小时,我就陷入这个怪圈。


之后,经大神提示,换了个路径,一样的步骤后,可以登录了。

冷笑一声,继续找原因。

原来是我的/data/的空间是另一个服务器的硬盘挂载到我的服务器的,再怎么更改属性也不管用。


还有一个问题,我发现就是用户名和文件夹名也要统一(比如),不然也是进不去滴,这个很多教程里没说~


这下好了,智商受到了碾压,也吸取了深深的教训。


感慨:linux太博大精深了,太无极限了。



猜你喜欢

转载自blog.csdn.net/caihuashen/article/details/78963919