|
|
|
@ -22,6 +22,7 @@ import (
|
|
|
|
|
"os"
|
|
|
|
|
"os/exec"
|
|
|
|
|
"os/user"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
"runtime"
|
|
|
|
|
"strings"
|
|
|
|
|
"syscall"
|
|
|
|
@ -119,6 +120,8 @@ func beIncubator(args []string) error {
|
|
|
|
|
euid := uint64(os.Geteuid())
|
|
|
|
|
// Inform the system that we are about to log someone in.
|
|
|
|
|
// We can only do this if we are running as root.
|
|
|
|
|
// This is best effort to still allow running on machines where
|
|
|
|
|
// we don't support starting session, e.g. darwin.
|
|
|
|
|
sessionCloser, err := maybeStartLoginSession(logf, uint32(*uid), *localUser, *remoteUser, *remoteIP, *ttyName)
|
|
|
|
|
if err == nil && sessionCloser != nil {
|
|
|
|
|
defer sessionCloser()
|
|
|
|
@ -334,6 +337,8 @@ func (srv *server) startWithPTY(cmd *exec.Cmd, ptyReq ssh.Pty) (ptyFile *os.File
|
|
|
|
|
updateStringInSlice(cmd.Args, "--has-tty=false", "--has-tty=true")
|
|
|
|
|
if ptyName, err := ptyName(ptyFile); err == nil {
|
|
|
|
|
updateStringInSlice(cmd.Args, "--tty-name=", "--tty-name="+ptyName)
|
|
|
|
|
fullPath := filepath.Join("/dev", ptyName)
|
|
|
|
|
cmd.Env = append(cmd.Env, fmt.Sprintf("SSH_TTY=%s", fullPath))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ptyReq.Term != "" {
|
|
|
|
|