使用 JSch 使用 SFTP 或 SCP 更改文件权限

sun*_*leo 2 java file-permissions jsch

我有一个用户帐户,但在尝试使用此帐户时,出现 rssh 异常。是否有可能使用除ChannelExec. 根据例外情况,我了解到此帐户无法用于ChannelExec授予目录或文件的权限。因此,该帐户是否有任何其他方式可以授予文件权限,而无需访问该用户帐户rssh。请给你想法。

代码 :

channelSftp = (ChannelSftp) channel;
ChannelExec channelexe = (ChannelExec) session.openChannel("exec");
channelexe.setCommand("chmod 777 -R " + depDir);                
channelexe.connect();

System.out.println("channelexe.getExitStatus:"+channelexe.getExitStatus());
Run Code Online (Sandbox Code Playgroud)

输出 :

channelSftp = (ChannelSftp) channel;
ChannelExec channelexe = (ChannelExec) session.openChannel("exec");
channelexe.setCommand("chmod 777 -R " + depDir);                
channelexe.connect();

System.out.println("channelexe.getExitStatus:"+channelexe.getExitStatus());
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 5

无需为此使用“exec”通道。

使用ChannelSftp.chmod

public void chmod(int permissions, String path)
Run Code Online (Sandbox Code Playgroud)

请注意,该方法将权限视为整数。因此您不能使用777,因为这是权限的八进制表示形式。

等效的十进制表示形式是511(= 7*8^2 + 7*8^1 + 7*8^0)。

另请参见十进制到八进制的转换


虽然ChannelSftp.chmod不能递归地设置权限。SFTP 协议不支持任何类型的递归操作。