Сегодня выяснилось, что рабочий экран от имени другого пользователя, с которым я работаю 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. Проблема с этим решением заключается в том, что после этого любой может подключиться и следить за вашим терминалом.