4

Ubuntu Server 12.04

На удаленном сервере, на котором я ssh, я настроил специального пользователя с:

sudo adduser --system --disabled-login --disabled-password --group suser

запустить некоторые функции обслуживания. Иногда я вхожу в сеанс входа в систему для suser с:

sudo su -l suser -s /bin/bash

для выполнения некоторых задач ... однако я особенно хочу иметь возможность запускать некоторые команды git через:

sudo su suser -c <COMMAND>

от моего реального пользователя и без логина к suser.

К сожалению, я не смог определить, КАК я это делаю. Я попробовал единственные способы, которые имеют смысл для меня:

sudo su suser -c git clone https://example.com/repos/project.git
sudo su suser -c "git clone https://example.com/repos/project.git"
   or even
sudo su suser -c mkdir /home/suser/test
sudo su suser -c "mkdir /home/suser/test"

но ничего не происходит и я возвращаюсь к подсказке. Кто-нибудь может помочь или объяснить, почему это невозможно?

1 ответ1

5

Проблема в том, что suser был создан с /bin/false качестве оболочки по умолчанию. Поэтому, когда вы пытаетесь запустить команды как suser через sudo , система пытается запустить их, используя /bin/false/ которая не является реальной оболочкой и завершается неудачей. Вы можете установить оболочку для suser или указать ее в командной строке при запуске sudo . В качестве альтернативы вы можете использовать параметр sudo -u .

  1. Используйте -u:

    sudo -u suser mkdir /home/suser/foo
    

    Это работает, потому что по умолчанию sudo использует /bin/bash (или то, что вы установили в качестве значения по умолчанию $SHELL ). Следовательно, он будет выполнять команду как suser но с использованием bash , поэтому команда выполняется правильно.

  2. Установить оболочку suser умолчанию:

    sudo chsh suser 
    

    Введите /bin/bash (или что вы предпочитаете) в появившейся подсказке. Теперь вы сможете запускать команды как suser:

    sudo su suser -c "mkdir /home/suser/test"
    
  3. Установите оболочку явно:

    sudo su suser -s /bin/bash -c "mkdir /home/suser/test"
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .