Як запустити команду як системний адміністратор (root)


66

Мені потрібно запустити команду з адміністративними привілеями. Хтось сказав, що я повинен запускати команду як root. Як це зробити?


2
дивіться мета- дискусію з цього питання
Стефан

Відповіді:


94

Основні дві можливості командного рядка:

  • Використовуйте suта введіть кореневий пароль, коли буде запропоновано.
  • Поставте sudoперед командою та введіть свій пароль, коли буде запропоновано.

Запуск команди оболонки як root

sudo (бажано, коли не працює графічний дисплей)

Це кращий метод для більшості систем, включаючи Ubuntu, Linux Mint, (можливо, Debian) та інші. Якщо ви не знаєте окремого кореневого пароля, використовуйте цей метод.

Судо вимагає ввести власний пароль. (Мета - обмежити пошкодження, якщо ви залишаєте клавіатуру без нагляду та розблокованої, а також переконатися, що ви дійсно бажаєте запустити цю команду, і це не було, наприклад, помилка друку.) Часто налаштовується так, щоб не запитувати знову кілька хвилин, щоб ви могли виконувати кілька sudoкоманд поспіль.

Приклад:

sudo service apache restart

Якщо вам потрібно виконати кілька команд як корінь, префікс кожної з них sudo. Іноді зручніше запускати інтерактивну оболонку як root. Ви можете використовувати sudo -iдля цього:

$ sudo -i
# command 1
# command 2
...
# exit

Замість цього sudo -iможна використовувати sudo -s. Різниця полягає в тому, що -iповторно і нідеалізує середовище для збереження значень за замовчуванням, тоді як -sвикористовує файли конфігурації для кращого або гіршого.

Для отримання додаткової інформації див веб-сайт sudo або введіть man sudoу вашій системі. Судо дуже настроюється; наприклад, він може бути налаштований так, щоб певний користувач виконував лише певні команди як root. Прочитайте сторінку sudoersчоловіка для отримання додаткової інформації; використовувати sudo visudoдля редагування файлу sudoers.

су

suКоманда існує на більшості Unix-подібних систем. Це дозволяє запускати команду як інший користувач, якщо ви знаєте пароль цього користувача. Якщо запустити без вказаного користувачем, suза замовчуванням для кореневого облікового запису.

Приклад:

su -c 'service apache restart'

Команда для запуску повинна бути передана за допомогою -cпараметра. Зауважте, що вам потрібні лапки, щоб команда не розбиралася вашою оболонкою, а передавалася недоторканою до кореневої оболонки, яка suпрацює.

Для запуску декількох команд як root, зручніше запустити інтерактивну оболонку.

$ su
# command 1
# command 2
...
# exit

У деяких системах вам потрібно бути у групі № 0 (викликається wheel), щоб використовувати їх su. (Справа в тому, щоб обмежити шкоду, якщо випадковий пароль комусь випадково просочився.)

Увійти як root

Якщо встановлено пароль кореневого пароля, і він у вас є, ви можете просто ввести rootрядок входу та ввести кореневий пароль. Будьте дуже обережні і уникайте запуску складних програм як root, оскільки вони можуть робити те, чого ви не збиралися. Увійти безпосередньо як кореневий, в основному корисний у надзвичайних ситуаціях, таких як помилки диска або коли ви закрили себе з облікового запису.

Режим одного користувача

Одиночний користувальницький режим або 1-й рівень запуску також надає root права. Це призначене насамперед для аварійних ситуацій технічного обслуговування, коли завантаження на багатокористувацький рівень роботи неможливе. Ви можете завантажитися в єдиний користувальницький режим, перейшовши singleабо emergencyв командному рядку ядра. Зауважте, що завантаження в однокористувацький режим - це не те саме, що звичайно завантажувати систему та входити як root. Скоріше, система запускатиме лише ті сервіси, які визначені для рівня 1 запуску. Як правило, це найменша кількість послуг, необхідних для використання корисної системи.

Ви також можете отримати в одного користувача режим за допомогою команди telinit: telinit 1; однак ця команда вимагає, щоб ви вже отримали привілеї root за допомогою іншого методу для запуску.

У багатьох системах завантаження в єдиний користувальницький режим надасть користувачеві доступ до кореневої оболонки без запиту пароля. Зокрема, systemdсистеми , що базуються, запропонують вам ввести пароль, коли ви завантажуєте цей спосіб.

Інші програми

Calife

Calife дозволяє запускати команди як інший користувач, ввівши власний пароль, якщо він авторизований. Він схожий на значно більш поширене судо (див. Вище). Calife більш легкий, ніж судо, але також менш конфігураційний.

Оп

Op дозволяє запускати команди як інший користувач, включаючи root. Це не повномасштабний інструмент для виконання довільних команд: друкуються з opподальшим мнемонічні сконфигурированной системним адміністратором , щоб виконати конкретну команду.

Супер

Супер дозволяє запускати команди як інший користувач, включаючи root. Команду, мабуть, дозволив системний адміністратор.

Запуск графічної команди як root

Дивіться також Вікіпедію .

PolicyKit (бажано використовувати GNOME)

Просто вставте потрібну команду за допомогою команди pkexec. Майте на увазі, що хоча це працює в більшості випадків, воно не працює універсально.

Див. Для man pkexecотримання додаткової інформації.

KdeSu, KdeSudo (бажано при використанні KDE)

kdesuі kdesudoє графічними лицьовими частинами до suта sudoвідповідно. Вони дозволяють запускати програми X Window як root без зайвих проблем. Вони є частиною KDE . Тип

kdesu -c 'command --option argument'

і введіть кореневий пароль або введіть

kdesudo -c 'command --option argument'

і введіть свій пароль (якщо його авторизовано sudo). Якщо ви встановите прапорець "зберігати пароль" у KdeSu, вам доведеться вводити кореневий пароль лише один раз за сеанс входу.

Інші програми

Ktsuss

Ktsuss ("тримайте су простим, дурним") - це графічна версія су.

Beesu

Beesu - це графічний передумови команди su, який замінив Gksu в операційних системах на базі Red Hat. Він був розроблений в основному для RHEL та Fedora.

Застарілі методи

gksu і gksudo

gksuі gksudoє графічними лицьовими частинами до suта sudoвідповідно. Вони дозволяють запускати програми X Window як root без зайвих проблем. Вони входять до складу Гнома . Тип

gksu command --option argument

і введіть кореневий пароль або введіть

gksudo command --option argument

і введіть свій пароль (якщо його авторизовано sudo).

gksuі gksudoє застарілими. Вони були замінені PolicyKit у GNOME, і багато дистрибутивів (наприклад, Ubuntu) вже не встановлюють їх за замовчуванням. Ви не повинні залежати від того, чи вони будуть доступними або працюють належним чином.

Вручну за допомогою одного з методів на основі оболонок

Використовуйте один із методів у "виконанні команди оболонки як кореневий розділ". Вам потрібно буде забезпечити, щоб ні DISPLAYзмінна середовища, ні XAUTHORITYсередовище не були скинуті під час переходу до root. Для цього може знадобитися додаткова конфігурація тих методів, які не входять у рамки цього питання.

Загалом це погана ідея, головним чином тому, що графічні програми будуть читати та записувати конфігураційні файли як корінь, а коли ви намагатиметесь знову використовувати ці програми як звичайний користувач, ці програми не матимуть дозволу читати власні конфігурації.

Редагування файлу як root

Див. Як редагувати файл як корінь?


2
Слід зазначити, що sudoвін працюватиме лише в тому випадку, якщо (1) встановлено і (2), якщо ваше використання є у файлі sudoers і це дозволило виконувати операцію.
n0pe

2
це потрібно оновити. pkexecв даний час замінює gksu/ gksudoв багатьох дистрибутивах.
strugee

1
@strugee - ти збирався спробувати і оновити це? Речі під Redhat також не вірні.
slm

8

Використання su:

$ su -c command

або

$ su
# command
# exit

В будь-якому випадку вам буде запропоновано ввести rootпароль. Для отримання додаткової інформації дивіться сторінку посібника .


3

Оскільки питання не було специфічним для Linux, ось як ви досягаєте тієї самої мети в Solaris 9+ (або Trusted Solaris 8):

Починаючи з версії 9, Solaris включає в себе набір інструментів, які ласкаво називаються RBAC або Рольовим контролем доступу.

Суть RBAC полягає в тому, що завдяки наданню Авторизацій та прав користувачам та / або ролям або наданню Ролей користувачам, ви можете створювати неймовірно дрібнозернисті моделі для того, хто може запускати те, з чим привілеї.

По суті, ви ідентифікуєте авторизацію в / etc / security / auth_attr, а потім надаєте їх користувачам або ролям в / etc / user_attr.

Ви визначаєте профілі в / etc / security / prof_attr. Потім ви пов'язуєте команди з тими профілями в / etc / security / exec_attr з подальшим призначенням цих профілів користувачам у файлі / etc / user_attr.

Після того, як це буде зроблено, ви фактично запустите pfexec <command>для виконання команди з привілейованими або авторизованими правами, наданими цьому користувачеві для цієї команди.

Приємна річ у RBAC полягає в тому, що немає додаткових привілеїв, наданих самій команді або користувачеві, лише комбінації user + command. Так що це безпечніше, ніж створення двійкових + або просто використання судо, щоб користувач міг виконати майже все. (Я знаю, що ви можете заблокувати судо, але, на мій досвід, більшість людей це не робить)

Ще одна перевага RBAC полягає в тому, що ви можете створити root на рольовий обліковий запис і призначити цю роль користувачам, які можуть отримати root за допомогою команди 'su' та пароля root. Користувач root також зможе увійти в єдиний користувальницький режим, що є кращим (на мій погляд), ніж модель Linux, де ви можете відключити кореневий пароль passwd -d rootабо заблокувати кореневий обліковий запис passwd -l root, обидва з яких роблять вхід як root досить важко, коли щось піде не так.

У Бен Роквуд є чудова публікація в блозі про RBAC, яку можна прочитати у розділі Використання RBAC на (відкритому) Solaris .


3

Або ви можете дати деяким командам наддержаву. Я говорю про спеціальні дозволи, в яких команди виконуються з дозволу власника.

Отримайте шлях команди #which <command>та встановіть для цього шляху SUID або SGID.

PS - біти SUID та SGID слід надавати обережно. Вони можуть зробити вашу систему незахищеною.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.