Class ProcessShellFactory

  • All Implemented Interfaces:
    ShellFactory
    Direct Known Subclasses:
    InteractiveProcessShellFactory

    public class ProcessShellFactory
    extends AbstractLoggingBean
    implements ShellFactory
    A Factory of Command that will create a new process executing the given command in an OS shell.

    Caveat: Apache MINA SSHD does not provide privilege separation, and SSH users are by default not tied to OS users. The OS shell will run as the same OS user the process using Apache MINA SSHD runs. The shell will have the same access rights as the Apache MINA SSHD server process itself.

    It is in general not recommended to use this class as is in a production server.

    • Field Detail

      • command

        private java.lang.String command
      • elements

        private java.util.List<java.lang.String> elements
    • Constructor Detail

      • ProcessShellFactory

        public ProcessShellFactory()
      • ProcessShellFactory

        public ProcessShellFactory​(java.lang.String command,
                                   java.lang.String... elements)
      • ProcessShellFactory

        public ProcessShellFactory​(java.lang.String command,
                                   java.util.List<java.lang.String> elements)
    • Method Detail

      • getCommand

        public java.lang.String getCommand()
        Returns:
        The original unparsed raw command
      • getElements

        public java.util.List<java.lang.String> getElements()
        Returns:
        The parsed command elements
      • setCommand

        public void setCommand​(java.lang.String command,
                               java.lang.String... elements)
      • setCommand

        public void setCommand​(java.lang.String command,
                               java.util.List<java.lang.String> elements)
      • resolveEffectiveCommand

        protected java.util.List<java.lang.String> resolveEffectiveCommand​(ChannelSession channel,
                                                                           java.lang.String rawCommand,
                                                                           java.util.List<java.lang.String> parsedElements)
        Determines the shell command to run. On Windows cmd.exe /C is used; on other systems /bin/sh -c.
        Parameters:
        channel - ChannelSession the shell will be executed in
        rawCommand - the shell command passed
        parsedElements - legacy; unused
        Returns:
        a list containing the full command to run to execute the given rawCommand