У мене є сценарій оболонки, в якому більшість команд потрібно виконувати під sudo; проте останні кілька команд потрібно виконати як поточний користувач. Чи є спосіб я вийти з sudo та перейти на користувача, який увійшов зараз?
Якби я запускав це все з командного рядка, я міг би зробити щось на кшталт:
sudo su
[su commands]
exit
[user commands]
Однак exitскрипт зупинить на цій команді.
su $USERпісля кореневих команд і перед тим, як запустити їх як поточний користувач; Я впевнений, що кожен баш, який не був скручений у цілі набори химерності $USER, так що повинен бути здатний слугувати загальним методом створення оболонки з правами користувача, що ввійшов у систему.
sudo suмає відкрити кореневу оболонку для вас, і сценарій не повинен просуватися, поки ви не залишите його. Потім [su commands]буде виконано (з вашим обліковим записом користувача) і, нарешті, exitзакінчиться сценарій. Подумайте про додавання whoamiдо сценарію кількох позицій, щоб побачити, хто є активним користувачем у різних точках сценарію.
su -замість цього sudo su? Це повинно запросити пароль для кореня, а потім створити підвищену оболонку, але я не впевнений, як exitбуде поводитися наступне в контексті сценарію оболонки - саме тому часто бажано використовувати Perl або Python для подібних завдань; вони можуть здатися, що вони представляють більш високу планку для вступу, але їх набагато більш передбачувана і менш бородавча поведінка більше, ніж відшкодовує зусилля на здобуття ознайомлення.
sudoдо команд, які потрібно запустити як root?sudoВбудований механізм кешування облікових даних буде означати, що вам потрібно буде відповісти на запит пароля лише один раз, якщо тільки сценарій оболонки не працює дуже довго.