Назад | Перейти на главную страницу

Sudo как другой пользователь и рабочий экран

Сегодня выяснилось, что рабочий экран от имени другого пользователя, с которым я работаю sudo, не будет работать!

т.е.

ssh bob@server         # ssh into server as bob
sudo su "monitor" -
screen                 # fails: Cannot open your terminal '/dev/pts/0'

У меня есть сценарий, который запускается от имени пользователя "монитора". Мы запускаем его в сеансе экрана, чтобы увидеть результат на экране. Проблема в том, что у нас есть несколько пользователей, которые входят в систему со своей учетной записью (например, bob, james, susie и т. Д.), А затем переходят sudo в пользователя «monitor». Предоставить им доступ к пользователю «монитор» не может быть и речи.

Попробуйте бежать script /dev/null как пользователь вы su to перед запуском экрана - это небольшая хитрость в гетто, но она должна порадовать экран.

Я использую функцию-оболочку вокруг screen для пользователей, которых я sudo su к. Это функция-оболочка, которую я добавил пользователю (ам) ~/.bashrc:

function screen() {
  /usr/bin/script -q -c "/usr/bin/screen ${*}" /dev/null
}

Это позволяет мне использовать все опции и параметры для screen что я мог бы захотеть использовать. Я подумываю о внедрении этой функции в масштабе всей системы.

Предполагая, что они все равно подключаются к хосту по SSH, вы можете добавить общедоступные ключи ssh для каждого пользователя, которому нужен доступ к учетной записи монитора, в файл ~ monitor / .ssh / authorized_keys. Затем на удаленной машине каждого пользователя они могут запускать

ssh -t monitor@remote.machine screen -RD

Предполагая, что мы говорим об этой ошибке:

$ sudo su - bob
$ screen
Cannot open your terminal '/dev/pts/5' - please check.

Вот однострочный текст (например, может использоваться как «псевдоним gobob»):

sudo su - bob -c "script -c bash /dev/null"'

Пояснение:

Это запустит оболочку (например, оболочку входа) от имени пользователя bob. Пользователь боб запускается script, которому предлагается вызвать bash (может быть тире или ksh ...), и копия сеанса отбрасывается.

Возможно, мне придется изменить разрешения на рассматриваемом устройстве или добавить монитор в группу, у которой есть разрешение на чтение этого устройства, это было бы моим первым желанием. Но вам придется взвесить последствия этого для безопасности.

Вы говорите, что делаете:

sudo su "monitor" -

Мне интересно узнать о конце тире. Я обычно делаю:

sudo su - username

Прочерк (согласно странице руководства su) указывает su «сделать оболочку оболочкой входа в систему». Это означает, что он будет исходить из всех обычных сценариев запуска оболочки и правильно устанавливать такие вещи, как PATH и HOME.

Я бы просто дал разрешение на чтение / запись «другому»:

sudo chmod o+rw /dev/pts/0

Тогда попробуй screen очередной раз

Я просто столкнулся с этой проблемой. Решил это с chmod +rw $(tty) перед запуском sudo. Проблема с этим решением заключается в том, что после этого любой может подключиться и следить за вашим терминалом.