Я работаю на машине, на которой у меня нет root, но есть список разрешенных команд sudo
. Одна из этих команд - / bin / su - foouser
. Итак, я могу набрать sudo su - foouser
и получить интерактивную оболочку в качестве читателя. Затем я могу запускать некоторые вещи как foouser
.
Проблема в том, что foouser
является совместно используемым пользователем / оболочкой, которая используется для запуска определенных важных производственных процессов. Я не могу легко настроить его или настроить так, как я хочу. И я не должен работать в нем последовательно, что разделяет мои терминалы и историю команд между теми, где я вошел в систему как я, и теми, где я фальшивый
.
Что я действительно хотел бы сделать, так это иметь способ запускать одну команду от имени foouser
, блокировать ее, выводить stdout и stderr в мою оболочку, как обычно делает команда, а затем вернуться со мной, все еще вошедшим в систему как я (а не foouser
). Это могло бы, например, быть инкапсулировано в сценарий так, чтобы as_foo bar
запускал команду bar
, как foouser
, печатал stdout и stderr, возвращал код возврата bar
], а затем помещает меня обратно в свою оболочку.
Я могу попросить системных администраторов изменить разрешения.Например, они могут добавить bar
в список sudo, а затем я могу использовать (я думаю) su -c
для запуска bar описанным мной способом. Но если на следующий день я захочу запустить bar2
, мне придется снова поговорить с ними.
Есть ли выход из этой дилеммы? Это кажется довольно глупым, потому что я, очевидно, могу стать злоумышленником
и запускать столько команд, сколько захочу, поэтому я не вижу никакой разницы с точки зрения безопасности. Просто не могу найти очевидного удобного способа сделать это возможным.
Передать дополнительные аргументы в su
.
sudo su - foouser sh -c 'echo $USER'