You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2018/05/25 11:34:00 UTC
[jira] [Commented] (SSHD-825) Add support for non-chrooted SFTP
users with a virtual filesystem
[ https://issues.apache.org/jira/browse/SSHD-825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16490587#comment-16490587 ]
Guillaume Nodet commented on SSHD-825:
--------------------------------------
What about the following patch:
{code:java}
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
index 5b809a5e..369d1b20 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
@@ -35,7 +35,6 @@ import java.nio.file.NotDirectoryException;
import java.nio.file.Path;
import java.util.Collection;
import java.util.Comparator;
-import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
@@ -145,7 +144,7 @@ public class SftpSubsystem
protected Future<?> pendingFuture;
protected byte[] workBuf = new byte[Math.max(DEFAULT_FILE_HANDLE_SIZE, Integer.BYTES)];
protected FileSystem fileSystem = FileSystems.getDefault();
- protected Path defaultDir = fileSystem.getPath(System.getProperty("user.dir"));
+ protected Path defaultDir = fileSystem.getPath("").toAbsolutePath().normalize();
protected int version;
protected ServerSession serverSession;
@@ -236,11 +235,7 @@ public class SftpSubsystem
public void setFileSystem(FileSystem fileSystem) {
if (fileSystem != this.fileSystem) {
this.fileSystem = fileSystem;
-
- Iterable<Path> roots = Objects.requireNonNull(fileSystem.getRootDirectories(), "No root directories");
- Iterator<Path> available = Objects.requireNonNull(roots.iterator(), "No roots iterator");
- ValidateUtils.checkTrue(available.hasNext(), "No available root");
- this.defaultDir = available.next();
+ this.defaultDir = fileSystem.getPath("").toAbsolutePath().normalize();
}
}
{code}
This default directory for the SftpSubsystem would default to the default directory of the FileSystem. You would still have to implement a custom FileSystemFactory, but this would be easier to figure out imho.
Toughts ?
> Add support for non-chrooted SFTP users with a virtual filesystem
> -----------------------------------------------------------------
>
> Key: SSHD-825
> URL: https://issues.apache.org/jira/browse/SSHD-825
> Project: MINA SSHD
> Issue Type: Improvement
> Affects Versions: 1.7.0
> Reporter: Quinn Stevenson
> Priority: Minor
> Fix For: 2.0.0
>
>
> When the SshServer is configured for SFTP with a VirtualFileSystemFactory, the user is always chrooted to either the defaultHomeDir or the specific homeDir for the user.
> However, in order to simulate systems that are configured such that users are not chrooted, there should be a way to configure the system with a virtual root and a home directory for the use in that virtual root that is also the initial directory for the user when they login.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)