SU(1) | Команди користувача | SU(1) |
su - запуск команди від імені іншого користувача та групи
su [параметри] [-] [користувач [аргумент...]]
За допомогою su можна віддавати команди від імені іншого користувача та групи.
Якщо викликано без визначення користувача, типовою поведінкою su є запуск інтерактивної оболонки від імені root. Якщо вказано користувача, може бути надано додаткові аргументи, які буде передано командній оболонці.
Для зворотної сумісності типово su не змінює поточний каталог і лише встановлює значення змінних середовища HOME і SHELL (і USER та LOGNAME, якщо користувачем призначення не є root). Рекомендуємо завжди користуватися параметром --login (замість скорочення -), щоб уникнути побічних ефектів, які спричинено змішуванням середовищ.
У цій версії su використано PAM для розпізнавання, керування обліковими записами і сеансами. Деякі параметри налаштувань, які можна знайти у інших реалізаціях su, зокрема підтримку групи wheel, має бути налаштовано за допомогою PAM.
su здебільшого створено для непривілейованих користувачів. Рекомендованим рішенням для привілейованих користувачів (наприклад, для скриптів, які виконують від імені root), використання команди non-set-user-ID програми runuser(1). Ця команда не потребує розпізнавання і надає окремі налаштування PAM. Якщо сеанс PAM взагалі не потрібен, рекомендованим рішенням є використання команди setpriv(1).
Зауважте, що su в усіх випадках використовує PAM (pam_getenvlist(3)) для виконання остаточної модифікації середовища. Параметри командного рядка, зокрема --login і --preserve-environment застосовуються до середовища, перш ніж його буде змінено PAM.
Починаючи з версії 2.38, su скидає обмеження на ресурси процесу RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS і RLIMIT_NOFILE.
-c, --command=команда
-f, --fast
-g, --group=група
-G, --supp-group=група
-, -l, --login
-m, -p, --preserve-environment
-P, --pty
Цю можливість, в основному, призначено для інтерактивних сеансів. Якщо стандартним джерелом вхідних даних є не термінал, а, наприклад, канал даних (приклад: echo "date" | su --pty), прапорець ECHO для псевдотермінала буде вимкнено для того, щоб уникнути безладного виведення даних.
-s, --shell=оболонка
Якщо у користувача призначення командну оболонку обмежено (тобто її немає у списку /etc/shells), параметр --shell і змінні середовища SHELL буде проігноровано, якщо користувачем, який викликав програму, не є root.
--session-command=команда
-w, --whitelist-environment=список
-h, --help
-V, --version
При отриманні будь-якого сигналу, SIGINT, SIGQUIT або SIGTERM, su припиняє роботу усіх дочірніх процесів, а потім перериває свою роботу із отриманим сигналом. Дочірній процес буде перервано сигналом SIGTERM; після невдалої спроби і 2 секунд затримки дочірній процес буде завершено сигналом SIGKILL.
su читає файли налаштувань /etc/default/su і /etc/login.defs. su стосуються такі записи налаштувань:
FAIL_DELAY (число)
ENV_PATH (рядок)
ENV_ROOTPATH (рядок), ENV_SUPATH (рядок)
ALWAYS_SET_PATH (булеве значення)
Значення змінної середовища PATH може бути різним у системах, де /bin і /sbin об’єднано у /usr. На цю змінну впливає також параметр командного рядка --login і параметри системи PAM (наприклад, pam_env(8)).
su, зазвичай, повертає стан виходу виконаної команди. Якщо команду буде перервано сигналом, su поверне номер сигналу плюс 128.
Стан виходу, який створено самим su:
1
126
127
/etc/pam.d/su
/etc/pam.d/su-l
/etc/default/su
/etc/login.defs
З міркувань безпеки su записує дані щодо невдалих спроб увійти до облікового запису до файла btmp, але взагалі не записує дані до файла lastlog. Цим рішенням можна скористатися для керування поведінкою su шляхом налаштовування PAM. Якщо ви хочете скористатися модулем pam_lastlog(8) для виведення повідомлення-попередження щодо невдалих спроб увійти, слід налаштувати pam_lastlog(8) на оновлення також і файла lastlog. Приклад:
session required pam_lastlog.so nowtmp
Ця команда su походить з su у coreutils, яку було засновано на реалізації David MacKenzie. Версію у util-linux було переформатовано Karel Zak.
setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)
Для звітування щодо вад скористайтеся системою стеження за вадами - <https://github.com/util-linux/util-linux/issues>.
Програма su є частиною пакунка util-linux, який можна отримати з архіву ядра Linux <https://www.kernel.org/pub/linux/utils/util-linux/>.
2024-12-05 | util-linux 2.39.3 |