• bash_tips alias sudo='sudo -v && sudo '
    упрощает жизнь в ситуации sudo FOO | less В норме в такой ситуации если sudo запрашивает пароль, то это не видно под запустившимся less, и даже если догадаешься, что FOO не запустится, пока не введёшь пароль, то вводить пароль куда-то вслепую стрёмно.
    А с этим алиасом команда превращается в
    sudo -v && sudo FOO | less

    Можно развить идею для увеличения безопасности. Рассмотрим ситуация запуска недоверенного приложения BAR через sudo. Это приложение может не стесняясь в начале работы вывести приглашение
    [sudo] password for $USER:
    Если у sudo были закешированные credentials, то пользователь ничего не заподозрит. Даже если их не было и пользователь видит 2 приглашения для ввода пароля подряд, он может подумать, что с первой попытки ввёл пароль неверно (не подумав, что при этом sudo выводит "Sorry, try again.") и введёт пароль повторно, уже в недоверенное приложение. Исправляем:

    alias sudo='sudo -v && echo sudo OK && sudo '

Replies (16)

  • @Self-Perfection, ATTENTION!!! Сравните нормальную ситуацию и с алиасом:

    $ unalias sudo; alias nosuchbinary=whoami
    $ nosuchbinary ; sudo nosuchbinary;
    self
    sudo: nosuchbinary: command not found
    $ alias sudo='sudo '
    $ sudo nosuchbinary
    root

    С моей точки зрения это скорее фича, чем баг, но всё-таки дополнительно имейте это ввиду.
  • @Self-Perfection, sudo -s не проще?)
  • @lex2d, Я не понял, что вы предлагаете. Переделать alias, задействовав sudo -s, или что?
  • @Self-Perfection, Делать sudo -s и дальше уже пердолиться под повышенными правами.
  • @Self-Perfection, Уже ответили)
  • @kapsh, Это фу-фу-фу.

    Безопасность требует, чтобы все процессы вополнялись с минимально достаточными для них привелегиями. В первую очередь это защищает даже не от ошибок или злонамеренности выполняющихся приложений, а от ошибок пользователей. Сейчас понабежало в никсы воспитанных на венде и я поражаюсь как расползается рефлекс на любой чих становиться рутом. На форумах новичкам чуть ли не sudo df советуют.

    Есть второй момент, когда машина администрируется несколькими людьми, то правильнее каждому работать под своим пользователем, чтобы велась история кто что делал.
  • @Self-Perfection, Ты не понял. Сделать sudo -s, запустить то, что нужно, когда отработает — ^D.
  • @kapsh, Один раз вписать alias в .bashrc ещё проще. Опять же в примере sudo FOO | less не нужно выполнять less с повышенными привелегиями.
  • @Self-Perfection, А лесс в такой конструкции и не будет от рута, насколько я понимаю.
  • @kapsh, Может я вас не понял. Вы предложили так:
    sudo -s<CR>
    FOO | less <CR>
    ^D
    ? Как же это лесс не от рута?
  • @Self-Perfection, А, нет. Это я неправильно последнее прочитал.
  • @Self-Perfection, "Пердолится" от рута всё-таки существенно удобнее. Не надо постоянно думать "вот это я могу так сделать а вот для этого нужен судо". На десктопчике пофиг абсолютно — большая часть действий не требует рута. Но когда сервера админишь — последнее о чём я хочу думать это о том не забыл ли я судо. Ну и например > в файл через судо делать очень неудобно. С автодополнением проблемы и т.п.
  • @mrtron, Ну вот бывает, что не работает автодополнение команд из-за того, что в $PATH обычного пользователя нет всяких sbin. На этот случай у меня в ~.bash_profile отдельно прописано расширение $PATH стандартными путями.

    Не работает автодополнение имён файлов? Так может опять проблема не в том, что вы не рут, а в том, что права на файлы расставлены некорректно? А может acl заюзать?
  • @Self-Perfection, про некорректные права это всё конечно прекрасная и красивая теория. ну я вообще сторонник практики в айти.
  • @mrtron, Есть понятие "золотая середина". И я нередко делаю sudo -i, и мои оппоненты тут в комментах наверняка иногда выполняют команды просто через sudo.

    В том, что полезность предложенного мною алиаса >0, вам меня убедить не удалось.
  • @Self-Perfection, А вот и существенный недостаток нашёлся: такой alias требует ввода пароля и перед выполнением команд, которые разрешены с NOPASSWD в /etc/sudoers.

    Даже sudo -l просто так не выполнить.