linux Centos 6.5安装配置sftp 文件夹访问权限 根目录不可见
2018-01-03 17:52
387 查看
昨天折腾一晚上,给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
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太博大精深了,太无极限了。
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
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太博大精深了,太无极限了。
相关文章推荐
- 火星人软件安装指南 -- 配置火星人目录文件夹访问权限
- CentOS 6.5系统上安装SVN服务器端的方法及目录访问权限配置(转总结)
- apache 配置文件目录访问权限控制
- linux:sftp用户目录权限配置
- Linux CentOS 6.5安装与配置Tomcat-8
- centos 7开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录
- centos7 安装vsftpd和配置虚拟用户访问及权限分配
- Linux CentOS 6.5中安装与配置Tomcat-8方法
- apache主机(站点)配置,端口监听,目录访问权限及分布式权限
- linux CentOS 6.5 中安装与配置JDK-7
- IIS配置需要登陆才能访问的目录权限
- asp.net项目中通过Web.config配置文件及文件夹的访问权限!
- ubuntu下NFS安装与配置(实现两台linux之间的文件夹挂载与共享访问)
- asp.net项目中通过Web.config配置文件及文件夹的访问权限!
- apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法
- centos6.5直接yum安装nginx,并且支持php访问的配置
- Linux CentOS 6.5安装与配置Mysql(图)
- Linux CentOS 6.5 中安装与配置JDK-7
- Linux上设置用户通过SFTP访问目录的权限的方法
- CentOS一键完成MySQL安装、配置密码、修改ip访问权限