Забудь sudo su
Користі від використання немає sudo su
, це звичка анахронічна від того, коли люди звикли користуватися su
. Люди почали брати участь sudo
вперед, коли дистрибутиви Linux перестали встановлювати корінний пароль і зробили sudo
єдиний спосіб отримати доступ до кореневого облікового запису. Замість того, щоб змінити свої звички, вони просто використовували sudo su
. (Я був одним з них до недавнього часу, коли використання коробки з sudoers
конфігураціями змусило мене змінити звичку).
Використовуйте sudo -u
Для оболонки для входу sudo -u postgres -i
переважніше sudo su - postgres
. Це не вимагає, щоб користувач мав доступ до root /etc/sudoers
, їм потрібно лише право стати користувачем postgres
. Це також дозволяє застосовувати кращий контроль доступу.
Для виконання команди
sudo -u postgres psql -c "SELECT 1"
перевершує альтернативу:
sudo su - postgres -c "psql -c \"SELECT 1\""
в тому, що вам не доведеться подвоювати котирування та інші метахарактеристики оболонок, а також інші переваги безпеки, не потребуючи root. Ви, ймовірно, випадково висадите напис:
sudo su - postgres -c psql -c "SELECT 1"
іноді, що не працює належним чином.
Нарешті, простіше встановити змінні середовища через sudo
, напр
sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster
ніж через su
. (Тут PATH
потрібна настройка, щоб initdb
можна було знайти правильний postgres
виконуваний файл).
Так. Забудьте, що su
команда існує. Вам це вже не потрібно. Щоб зламати звичку, додайте її до чогось, що надрукує помилку. (Деякі сценарії встановлення init і пакунків все ще використовуються, su
тому ви не можете їх видалити).
Дивись також: