Переключиться на другого пользователя вместо root при использовании sudo

Если вы хотите подключиться к серверу с помощью ssh через VPN, поскольку вашей компании требуется VPN-подключение для доступа к серверу, есть еще один способ обойти VPN. Во-первых, вам нужно подключиться к вашему серверу с помощью VPN. Затем запустите ngrok , чтобы открыть обратный ssh ​​(. Это правильный термин?)

ngrok tcp 22

Это даст вам адрес и порт. Обычно это выглядит так:0.tcp.eu.ngrok.io:12345. Теперь вы можете остановить VPN и ssh на своем сервере, используя указанный выше адрес и порт.

ssh yourname@0.tcp.eu.ngrok.io -p 12345

2
14.07.2020, 08:15
2 ответа

Вы можете использовать sudoс переключателем -u.

Пример:

sudo -u tomcat whoami
2
18.03.2021, 23:20

Вы не можете легко сделать то, что вы просите (, т. е. заставить sudo startup.shработать как именованный не -пользователь root ). Однако вы можете сделать одно или оба из следующих

  1. Предложите пользователям использовать sudo -u tomcat /path/to/startup.shвместо sudo /path/to/startup.shи в любом случае запретите последний

    Добавьте эту строку в свойsudoers(помните visudo), чтобы tomcatздесь была целевая учетная запись пользователя. Измените первый ALLна список пользователей, если есть только определенные люди, которым разрешено запускать скрипт в качестве целевого пользователя

    .
     ALL    ALL=(tomcat) /path/to/startup.sh
    
  2. Заставьте скрипт выполнять sudoи запретите sudo -u rootдля скрипта. Вам понадобится #1 (выше ). Убедитесь, что tomcatздесь соответствует tomcatв sudoers.

     #!/bin/bash
     #
     targetUser=tomcat
    
     if [[ $UID -ne "$(id -u "$targetUser")" ]]
     then
         exec sudo -u "$targetUser" "$0" "$@"
         exit 1
     fi
    
     #...script continues but as the $targetUser...
    

    Это позволяет запускать/path/to/startup.sh(или даже просто startup.sh, если он находится в $PATH), и не беспокоиться о части sudo.

5
18.03.2021, 23:20

Теги

Похожие вопросы