У типовій конфігурації команда не має значення. Вам потрібно ввести свій пароль під час першого використання sudo, і вам не знадобиться ваш пароль у цій конкретній оболонці протягом наступних 15 хвилин.
З точки зору комп'ютера, немає такої речі, як "команда, якій потрібен sudo". Будь-який користувач може спробувати запустити будь-яку команду. Результат може бути не що інше, як повідомлення про помилку, наприклад "Дозволено відмовлено" або "Немає такого файлу чи каталогу", але команду завжди можна запустити.
Наприклад, якщо ви працюєте du
на дереві каталогів, який містить вміст, на який ви не маєте дозволу на доступ, ви отримаєте помилки дозволу. Ось що означає "відмова у дозволі". Якщо ви запускаєте sudo du
, sudo запускається du
як root, тому ви не отримуєте помилок дозволу (у цьому і полягає кореневий обліковий запис: root¹ завжди має дозвіл). Коли ви запускаєте sudo du
, він du
працює як root і sudo
зовсім не бере участь після du
запуску. Чи зустрічається du з помилками дозволу, абсолютно не має значення для того, як працює sudo.
Є команди, яким потрібно судо, щоб зробити щось корисне . Корисність - поняття людини. Вам потрібно використовувати sudo (або деякі інші методи для запуску команди як root), якщо команда робить щось корисне, коли запускається як root, але не тоді, коли запускається під вашим обліковим записом.
Від того, чи буде Судо запитувати ваш пароль, залежить від двох речей.
- Виходячи з конфігурації, sudo вирішує, чи потрібно вам пройти автентифікацію. За замовчуванням sudo вимагає пароль. Це можна вимкнути кількома способами, включаючи встановлення
authenticate
параметра false та встановлення відповідного правила з NOPASSWD
тегом.
- Якщо sudo вимагає ваш пароль, може бути вміст використовувати кешоване значення. Це нормально, тому що причина sudo потребує вашого пароля - це не автентифікація того, хто його викликає (sudo знає, який користувач викликав його), а підтвердження того, що це все-таки ви в командах, а не хтось, хто взяв під контроль вашу клавіатуру. За замовчуванням sudo готовий вірити, що ви все ще в командах, якщо ви ввели свій пароль менше 15 хвилин тому (це можна змінити за допомогою
timeout
параметра). Потрібно ввести пароль у тому ж терміналі (так що якщо ви залишаєтесь увійти на одному терміналі, тоді залиште цей термінал без нагляду, а потім використовуйте інший термінал, хтось може "tty_tickets
¹ майже, але це виходить за межі цього потоку.