当前位置: 首页 > 知识库问答 >
问题:

如何使用Apache MINA SSHD阻止SFTP删除操作

史默
2023-03-14

我试图使用Apache Mina sshd创建一个自定义sftp服务器。到目前为止我的代码

 SshServer sshd = SshServer.setUpDefaultServer();
        sshd.setPort(PORT_NUMBER);
        sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(Paths.get("keys/private_key.ppk")));

        SftpSubsystemFactory factory = new SftpSubsystemFactory.Builder()
                .build();


        factory.addSftpEventListener(new BasicSftpEventListener());

        sshd.setSubsystemFactories(Collections.singletonList(factory));
        sshd.setShellFactory(new ProcessShellFactory("/bin/sh", "-i", "-l"));
        sshd.start();

如您所见,我实现了自己的SFTPEventListener:

public class BasicSftpEventListener implements SftpEventListener {

    @Override
    public void removing(ServerSession session, Path path) throws IOException {
        System.out.println("Removin");
    }

    @Override
    public void removed(ServerSession session, Path path, Throwable thrown) throws IOException {
        System.out.println("removed");
    }

多谢帮忙!

共有1个答案

何辰沛
2023-03-14

如果要阻止delete操作,则需要中断removere方法的异常流。这将告诉Mina停止并不删除文件。我建议使用java.lang.UnsupportedOperationException:

@Override
public void removing(ServerSession session, Path path) throws UnsupportedOperationException{
    throw new UnsupportedActionException("Removing files is not permitted.");
}
 类似资料:
  • 问题内容: 我目前正在尝试混淆一系列库。我的基础库包含几个使用类型参数的类和方法,由于Proguard混淆消除了类型参数,其他代码无法使用我的基础库。消除混淆消除了这些问题。我已经阅读了所有ProGuard使用文档,示例和故障排除信息,但无法找到有关如何处理类型参数或ProGuard剥离类型参数的任何文档。 构造函数类型参数问题: 库1包含以下类: 库2包含几个扩展上述类的类,但构造函数会引发编译

  • 问题内容: 我经历了这里列出的类似案例,但似乎没有用。 我使用MySQL Workbench与托管在另一台服务器上的数据库建立连接。尝试了几次,无法连接,然后出现此错误。我对我应该在哪里冲洗感到困惑。在PhpMyadmin下的SQL查询?Cos当我尝试输入以下命令时,它作为语法错误返回。我使用的是Windows操作系统,因此也没有输入我的外壳程序脚本。我现在正在通过Cpanel / phpmyad

  • 每当我尝试使用axios发送删除endpoint的请求时,都会出现以下错误: 通过CORS策略阻止从源http://localhost:3000在http://localhost:8080/api/payment_card/delete/1234123412343433处访问XMLHttpRequest:对预检请求的响应未通过权限改造检查:请求的资源上不存在“Access-Control-Allo

  • 我有一个线程A,在Guava缓存中插入一个新元素,由于大小策略,缓存将退出与键Y关联的元素。 不幸的是,Y的移除过程R需要很长时间,在Y被R处理的过程中(已经被逐出,但仍在R中),另一个线程B试图获取与密钥Y相关的数据。 基本上,R将尝试为键Y更新数据库,而当该值未更新时,线程B尝试访问数据库以获取与键Y关联的值,该值仍然是旧值。 问题是:在R执行其工作时,如何阻止线程B使用键Y访问元素?

  • 我已经设置了Kafka和zookeeper认证与SASL ACL和Kafka生产者和消费者的SSL双向认证,包括加密。 通过启用Kafka和zookeeper之间的SASL和ACL,它不允许未经授权的Kafka代理登录到zookeeper集群。但是,主题的创建和删除可以不受任何限制。 动物园管理员. properties zookeeper_jaas.conf 通过以下代码设置ACL 上面的代码正