聆雨亭

道听途说Linux系列7 - sftp无法使用解决示例

2015-11-30

阅读:

字数:1660


“test-jb-setup”

1、问题提出

一个用了很久的服务器,最近发现无法用sftp连接了,但是scp和ssh还可以连,比较奇怪。按照网上的说法

    
service sshd restart  

无效

2、解决过程

  • 测试连接过程
  
sftp -v -P 1022 root@xxxxxx  

最后发现返回是

  
debug1: Exit status 126  
Connection closed  

有资料提示可能是权限问题,

  • 检查权限

到宿主机,找到

  
vim /etc/ssh/sshd_config  

找到SubSystem 这里指定了 sftp的服务器地址

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

通过ll命令查看权限

  
ll /usr/libexec/openssh/sftp-server  

发现没有任何权限,

  
chmod +x /usr/libexec/openssh/sftp-server   

提示权限不足 甚至 cp,mv等等命令都不行,

  • 临时方案

从其他服务器拷贝一个sftp-server过来,改个名字,修改sshd_config中的地址,暂时搞定了

  • 再起变化

今天要安装的时候,发现wget也提示没有权限

而且chmod等等都无效,没有任何权限,相比是被攻击了,这tm算降维攻击吗?快快成长呀

3、最终方案

终于在网上找到个资料,提到另外2个命令 lsattrchattr

  
lsattr /usr/libexec/openssh/sftp-server  

发现有一个i的标记。这个标记文件只读,可以通过

  
chattr -i /usr/libexec/openssh/sftp-server  

问题是这个文件不存在,然后通过另外一个服务器把这个文件拷贝到

  
scp /usr/bin/chattr root@xxxxxx:/usr/bin  

然后再chmod

  
chmod +x /usr/bin/wget  

4、参考

chattr 主要就是i的属性,表示只读 用 + 和 -号来增加或者删除属性

  • = :更新为指定参数设定。
  • A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
  • S:硬盘I/O同步选项,功能类似sync。
  • a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
  • c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
  • d:即no dump,设定文件不能成为dump程序的备份目标。
  • i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
  • j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
  • s:保密性地删除文件或目录,即硬盘空间被全部收回。
  • u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。 各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

Comments

Content