Как предотвратить скрипты / команды, захватывающие ваши кешированные способности sudo вашего сеанса?

Есть альтернатива отключать подсветку ЖК-дисплея, когда захотите. Просто введите

xset dpms force off

и нажмите enter в терминале или сделайте его панель запуска и прикрепите его на панели единства.

Если вы используете оболочку gnome, тогда расширение оболочки gnome для прикрепления десктопа к верхней панели, затем одним щелчком мыши вы можете отключить свой lcd.

Если это работает, вы также можете сделать комбинацию клавиш для xset dpms force off

1
задан 17 March 2016 в 23:56

2 ответа

Моя позиция в этом вопросе такова: если вы не уверены, можете ли вы или не можете запускать приложение с привилегией root, пока ваши учетные данные еще не вышли из строя, тогда просто отключите таймаут вообще, сделайте это 0 В частности, вам нужен этот параметр в вашем файле /etc/sudoers:

Defaults    timestamp_timeout=0

Персональная страница определяет его так:

 timestamp_timeout
                   Number of minutes that can elapse before sudo will ask
                   for a passwd again.  The timeout may include a frac‐
                   tional component if minute granularity is insufficient,
                   for example 2.5.  The default is 15.  Set this to 0 to
                   always prompt for a password.  If set to a value less
                   than 0 the user's time stamp will never expire.  This
                   can be used to allow users to create or delete their
                   own time stamps via “sudo -v” and “sudo -k” respec‐
                   tively.

Однако, если вы намереваетесь быть осмотрительным, вы может определить следующую функцию в .bashrc

sudo_check()
{
  real_path="$( realpath $1 )"
  file "$real_path" | grep -q -i script
  if [ $? -eq 0 ]; then
     grep -q 'sudo' "$real_path"  && \
     { echo '>>> ALERT: Its a script that requests sudo';
       echo '    resetting sudo timestamp';
       echo 'please rerun with sudo appended ';
     }
     sudo -k
  else
     sudo "$@"
  fi

}

Эта функция проверяет, содержит ли сценарий вызов sudo и предупреждает вас об этом. Bellow - пример того, как я запускаю эту функцию в скрипте (кстати, это мой фоновый чейнджер для входа в систему)

$ sudo_check sergrep/chgreeterbg.sh                            
>>> ALERT: Its a script that requests sudo
    resetting sudo timestamp
4
ответ дан 23 May 2018 в 12:47
  • 1
    Обратите внимание, что он не обнаружит сценарий, который вызывает другой скрипт, который запускает sudo. – Mark Smith 19 March 2016 в 02:15
  • 2
    Возможно, вам следует либо ссылаться на на этот ответ, либо пояснить, что строка, о которой вы говорите, еще не существует в этом файле. Вы также должны указать, что вы должны отредактировать его с помощью sudo visudo, а не только обычного текстового редактора. – Paranoid Panda 26 March 2016 в 18:02

Как вы можете различать скрипт и исполняемую двоичную команду?

Конечно, вы можете подумать об определении функции с именем sudo, которая проведет проверки работоспособности перед запуском фактического двоичного файла, но

Поскольку сценарий может иметь любое имя, что, если сценарий имеет имя типа ls? Таким образом, проверка расширений, подобных .sh, не поможет. Также чтение shebang в качестве первой строки скрипта тоже не поможет, потому что скрипт может работать без наличия shebang

Я думаю, если вы тоже параноидальный об этом, вы можете думать об отключении кэширования паролей вообще, создав псевдоним вроде:

alias sudo='sudo -k'

и поместив его в свой ~/.bashrc.

2
ответ дан 23 May 2018 в 12:47
  • 1
    Ну, в основном это то же самое, что каждый раз приносить временную метку sudo сброса, Panda хочет просто исключить сценарии из «кэшированных». – Sergiy Kolodyazhnyy 17 March 2016 в 23:26
  • 2
    @Serg Я знаю ... моя первая часть включает в себя ответ на этот вопрос. – heemayl 17 March 2016 в 23:27
  • 3
    Нет ли способа сделать это так, чтобы все, что я запускал с sudo, не разрешало запускать какие-либо команды sudo без моей надлежащей проверки подлинности? – Paranoid Panda 17 March 2016 в 23:38
  • 4
    Я придумал предложение, хотя я не знаю о полной практичности этого, я обновил свой вопрос с ним в конце. Как вы думаете? – Paranoid Panda 17 March 2016 в 23:57
  • 5
    @heemayl мне нравится идея функции. Он имеет приоритет над именами команд, поэтому функция sudo будет запускаться вместо фактического sudo – Sergiy Kolodyazhnyy 18 March 2016 в 00:00

Другие вопросы по тегам:

Похожие вопросы: