Команда su - традиційний спосіб отримання прав адміністратора всередині сеансу звичайного користувача (незалежно, консольного або іксів). Наскільки я знаю, вона споконвіку існує в усіх POSIX-сумісних системах. Її GNU-версія, яка використовується в Linux, входить до складу пакету coreutils.
Ім'я цієї команди іноді трактують як абревіатуру від Super User. але насправді воно означає Set UID. тому що вона дозволяє отримати права не тільки адміністратора, але і будь-якого іншого користувача - досить вказати його ім'я в якості аргументу:
Після чого ввести його пароль. При цьому деякі змінні оточення (наприклад, поточний каталог), однак, успадковуються від користувача, що дав команду, а не від того, чий ідентифікатор був отриманий в результаті її виконання. Щоб повністю відтворити shell-оточення нового користувача, цю команду треба дати в формі
де опція l символізує, що всі змінні з профільного файлу командної оболонки користувача (login shell) будуть перечитати заново.
створить сеанс користувача username з оболонкою zsh як login shell замість тієї, яка прописана для нього за умовчанням. Втім, цією можливістю навряд чи хто активно користується, крім як в експериментальних цілях - наприклад, для оцінки можливостей якогось свіжовстановленому шелла.
Правда, як уже було сказано, всі налаштування середовища користувача, цю команду віддав, зберігаються. Якщо потрібно отримати доступ до змінних оточення адміністратора в повному обсязі (зокрема, до шляхів пошуку здійсненних файлів, які для root'а і звичайного користувача можуть бути різними), використовується згадана вище форма
А перед цим треба, зрозуміло, не забути додати особливо довірених користувачів - зокрема, себе, коханого, в цю групу командою на кшталт
даної від імені суперкористувача.
Створений командою su «сеанс в сеансі» триватиме необмежено довго, до тих пір, поки не буде завершено явно - командою exit. яка поверне звичайне користувальницьке оточення, в тому числі і поточний каталог, в якому ми перебували до початку «вторинного сеансу».
Нерідко, однак, адміністративні повноваження потрібні для виконання однієї-єдиної команди. Наприклад, безглуздо відкривати внутрішній сеанс суперкористувача для того, щоб тільки подивитися поточну розмітку диска командою на зразок fdisk -l. Що ж, команда su надає нам і таку можливість - за допомогою опції -c (або -command =), значеннями якої буде виступати необхідна команда разом з усіма необхідними опціями і аргументами. наприклад:
після введення пароля користувача root виведуть нам інформацію про зазначений диску точно так же, як це було б після послідовності команд
Знову ж звертаю увагу, що ім'я команди разом з опціями і аргументами повинно бути екрановано лапками - інакше, скажімо, аргумент / dev / sdb буде сприйнятий як ім'я користувача, чиї права ми бажаємо отримати, що спричинить за собою повідомлення про помилку. У всіх бачених мною вказівках наводяться саме суворі, одинарні, лапки (як в нашому прикладі), проте зазвичай проходять і несуворі, подвійні.
Незручність такого способу в тому, що після відкриває лапки в командному рядку перестає працювати автодоповнення після натискання клавіші Tab. Тобто складні команди і шляхи доведеться вводити по пам'яті. Ця, здавалося б, незначну, деталь, - та сама соломинка, яка може схилити до використання sudo замість su. про що піде мова в наступному підрозділі.