Сегодня выяснилось, что запуск экрана от имени другого пользователя, в который я могу войти, не будет работать!
т.е.
ssh bob@server # ssh into server as bob
sudo su "monitor" -
screen # fails: Cannot open your terminal '/dev/pts/0'
У меня есть скрипт, который запускается как «монитор» пользователя. Мы запускаем его в сеансе экрана, чтобы увидеть результат на экране. Проблема в том, что у нас есть ряд пользователей, которые входят в систему со своей учетной записью (например, bob, james, susie и т. Д.), А затем они переходят в пользователя «monitor». Предоставление им доступа к «монитору» пользователя не может быть и речи.
sudo
gnu-screen
luckytaxi
источник
источник
sudo su "user" -
. Почему бы не использоватьsudo -u user -s
?sudo su
- я думаю, что это то, к чему люди привыкли (в моем случае это потому, что вам не нужно знать какие-либо флаги sudosudo su
- я не думаю, что когда-либо читал man-страницу sudo :)Ответы:
Попробуйте запустить
script /dev/null
от имени пользователя,su
прежде чем запускать экран - это немного гетто, но это должно сделать экран счастливым.источник
script
есть можно использовать для запускаscreen
. Тогда вам нужно только выйти дважды (один разscreen
, один разsu
). (Это то, чтоscript
man-страница может прояснить для вас, если вы потратите время на ее чтение ...)sudo -u bob script -q -c 'screen -dr myscreen' /dev/null
. Тогда у вас есть только один терминал для выхода / отсоединения.script
собственное tty-устройство, принадлежащее пользователю, который его запустил (загляните внутрь,/dev
и вы увидите, что оно появилось после запускаscript
).screen
затем захватывает это tty устройство (которое принадлежит пользователю, работающему,screen
чтобы у него не было проблем с доступом к нему). Это полная хакерская работа, но она работает. Глядя на некоторые из моих машин, кажется, что новые версии экрана, кажется, устанавливают setuid-root, который также работает, но означает, что у вас есть другой бинарный файл setuid-root, который делает некоторых людей оправданно неудобными.Я использую функцию обертки
screen
для пользователя (ей), что яsudo su
. Это функция-обертка, которую я добавил для пользователя (ей)~/.bashrc
:Это позволяет мне использовать все параметры и параметры,
screen
которые я мог бы использовать. Я обдумываю возможность использования этой функции в масштабе всей системы.источник
Предполагая, что они в любом случае SSHing к хосту, вы можете добавить открытые ключи ssh для каждого пользователя, которому требуется доступ к учетной записи монитора, в файле ~ monitor / .ssh / authorized_keys. Затем на удаленной машине каждого пользователя они могут работать
источник
Предполагая, что мы говорим об этой ошибке:
Вот одна строка (например, может использоваться как «псевдоним гобоб»):
Объяснение:
Это запустит оболочку (например, login shell) от имени пользователя bob. Запускается пользовательский bob
script
, которому предписывается вызывать bash (может быть dash или ksh ...), и копия сеанса выбрасывается.источник
Вероятно, придется изменить разрешения для рассматриваемого устройства или добавить монитор в группу, которая имеет разрешение на чтение этого устройства, что было бы моим первым уклоном. Но вам придется взвесить последствия безопасности для этого.
источник
Вы говорите, что делаете:
Я задаюсь вопросом о задней черте. Я обычно делаю:
Тире (на странице su man) говорит su «сделать оболочку оболочкой для входа». Это означает, что он будет исходить из всех обычных сценариев запуска оболочки и правильно настраивать такие вещи, как PATH и HOME.
источник
sudo su - username
иsudo su username -
сделать то же самое.Я просто ударил эту проблему. Решил это
chmod +rw $(tty)
до запуска sudo. Проблема с этим решением состоит в том, что любой может после этого подключиться и отслеживать свой терминал.источник
gpg
например). И, конечно же, он никогда неtty