Вы не можете сделать это, проанализировав файлы конфигурации sudo, потому что конфигурация sudo доступна для чтения только пользователю root. Даже если бы вы могли прочитать конфигурацию sudo, ее трудно надежно (проанализировать, особенно для обработки не -локальной информации, такой как базы данных LDAP ), и она не рассказывает всей истории (, например. разрешение может быть предоставлено через группу ).
Единственной реалистичной проверкой является запуск sudo
от имени пользователя A. Поскольку вам нужно выполнить эту проверку из сценария, работающего от имени пользователя B, вам потребуется способ, с помощью которого пользователь B может запустить проверку от имени пользователя A. Либо напишите небольшую программу(не скрипт с setuid A, или дайте пользователю B разрешение запускать проверку от имени пользователя A через sudo.
Если вы не можете привлечь администратора для настройки правила sudo, позволяющего пользователю B запускать проверку от имени A, то программа setuid — единственное решение. Эта программа вызовет sudo -u userB -b true
, чтобы проверить, что A разрешено запускать true
от имени пользователя B. Вот исходный код C для этой программы (предупреждение :не проверено!):
#include
int main(void) {
execl("/usr/bin/sudo", "sudo", "-u", "userB", "-b", "/bin/true", (char*)NULL);
return 126;
}
Скомпилируйте его и сделайте полученный исполняемый файл setuid A (он должен принадлежать A, затем запуститеchmod 4755 /path/to/executable
).
Обратите внимание, что это решение не является полным. :Оно будет работать только в том случае, если A разрешено запускать команды от имени B в силу того, что он является пользователем A, а не в том случае, если он получает эту привилегию в силу принадлежности к группе. Если вам нужно проверить членство в группе, вам нужно будет запустить sg
от имени пользователя А, чтобы получить членство в этой группе, а затем запустить его sudo
.
Я не эксперт по tmux, но, возможно, вы могли бы улучшить эту идею :разделить панель на две стороны -по -стороне и показать список убывающих чисел в новой панели, который заканчивается на 0 для самой нижней строки. Например, в вашем ~/.tmux.conf
установите привязку для символа=
bind-key -T copy-mode-vi = split-window -h -p 90 'seq 24 -1 1;sleep 15'\; swap-pane -dU
Затем в режиме копирования vi ввод =
разделит текущую панель и перечислит числа от 24 до 1 в новой панели на 15 секунд. Так как новая панель помещается справа, swap-pane
перемещает ее влево.