diff --git a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/AbstractMount.java b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/AbstractMount.java index b8a0c556..274c728d 100644 --- a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/AbstractMount.java +++ b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/AbstractMount.java @@ -51,7 +51,11 @@ public int hashCode() { private boolean filesystemRoot; private boolean isDefault; protected boolean isImaginary; - + protected String username = "unknown"; + protected String group = "unknown"; + protected int uid = 0; + protected int gid = 0; + protected AbstractMount(String mount, String path) { this(mount, path, false, false); } @@ -121,4 +125,20 @@ public void setAttribute(String key, Object value) { public String toString() { return getMount() + " on " + getRoot(); } + + public String getUsername() { + return username; + } + + public String getGroup() { + return group; + } + + public int getUid() { + return uid; + } + + public int getGid() { + return gid; + } } diff --git a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMount.java b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMount.java index a77699f3..350e118d 100644 --- a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMount.java +++ b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMount.java @@ -60,6 +60,11 @@ public class VirtualMount extends AbstractMount { AbstractFile f = actualFileFactory.getFile(path); this.path = f.getAbsolutePath(); } + + this.uid = mountTemplate.getUid(); + this.gid = mountTemplate.getGid(); + this.username = mountTemplate.getUsername(); + this.group = mountTemplate.getGroup(); } diff --git a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountFile.java b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountFile.java index b60cb574..d9f8abb7 100644 --- a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountFile.java +++ b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountFile.java @@ -123,10 +123,10 @@ public SftpFileAttributes getAttributes() throws FileNotFoundException, bldr.withPermissions(builder.build()); - bldr.withUid(0); - bldr.withGid(0); - bldr.withUsername(System.getProperty("maverick.unknownUsername", "unknown")); - bldr.withGroup(System.getProperty("maverick.unknownUsername", "unknown")); + bldr.withUid(parentMount.getUid()); + bldr.withGid(parentMount.getGid()); + bldr.withUsername(System.getProperty("maverick.unknownUsername", parentMount.getUsername())); + bldr.withGroup(System.getProperty("maverick.unknownUsername", parentMount.getGroup())); bldr.withLastAccessTime(parentMount.lastModified()); bldr.withLastModifiedTime(parentMount.lastModified()); bldr.withCreateTime(parentMount.lastModified()); diff --git a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountTemplate.java b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountTemplate.java index 8e36fca6..ecd128b5 100644 --- a/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountTemplate.java +++ b/maverick-virtual-filesystem/src/main/java/com/sshtools/common/files/vfs/VirtualMountTemplate.java @@ -77,4 +77,24 @@ public boolean isChildOf(VirtualMountTemplate o2) { public long lastModified() { return lastModified; } + + public VirtualMountTemplate setUsername(String username) { + this.username = username; + return this; + } + + public VirtualMountTemplate setGroup(String group) { + this.group = group; + return this; + } + + public VirtualMountTemplate setUid(int uid) { + this.uid = uid; + return this; + } + + public VirtualMountTemplate setGid(int gid) { + this.gid = gid; + return this; + } }