У мене є сценарій оболонки, в якому більшість команд потрібно виконувати під 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
Вбудований механізм кешування облікових даних буде означати, що вам потрібно буде відповісти на запит пароля лише один раз, якщо тільки сценарій оболонки не працює дуже довго.