Ви адміністратор, але ні root
. root
Користувач може зробити що - небудь. Адміністратори можуть виконувати дії якroot
, але зазвичай це не робиться адміністраторами root
. Таким чином, ви маєте повний контроль над власною системою, але лише тоді, коли вирішите нею користуватися.
Ubuntu запитує ваш пароль, коли ви намагаєтеся робити такі речі root
, щоб переконатися, що це справді ви.
Облікові записи користувачів: Людські та інше
Реальні користувачі користувачів мають облікові записи користувачів для їх представлення. Ви створили один такий обліковий запис під час встановлення Ubuntu. Але не всі облікові записи користувачів представляють реальних користувачів .
Справжнім людям користувачі надають (і відмовляють) здібності через свої облікові записи користувачів. Вони повинні використовувати свої облікові записи користувачів, щоб використовувати систему; отже, можливості та обмеження їх облікових записів користувачів застосовуються до них.
Облікові записи користувачів також використовуються для кодифікації наборів здібностей та обмежень. Деякі облікові записи користувачів - більшість, насправді, якщо у вас багато користувачів користувачів машини - існують, щоб певні програми чи команди могли працювати з їх ідентичністю, ідентичністю з правильними здібностями та обмеженнями для роботи.
Наприклад, www-data
користувач існує так, що якщо ви запускаєте веб-сервер, він володіє даними, якими сервер робить доступними. Жоден реальний користувач не повинен мати повноваження вносити неперевірені зміни в ці дані, і веб-сервер не повинен бути уповноважений виконувати будь-які дії, непотрібні для обслуговування Інтернету. Отже, і веб-дані, і решта системи є більш захищеними від випадкового або навмисного поломки, ніж якби веб-сервером керував хтось користувач, який мав би всі повноваження веб-сервера (і чиї повноваження веб-сервер би володіти).
Найважливіший обліковий запис користувача
Суперкористувача , чиє ім'я користувача є root
, це обліковий запис користувача , який не є людиною з дуже специфічною комбінацією здібностей і обмежень: всі можливості, і без будь - яких обмежень .
root
«И дозволили зробити що - небудь. Але все ще root
неможливо зробити, тому що сама система не може їх виконувати чи мати сенс. Тож root
не можна вбивати процес, який перебуває у режимі безперебійного сну , або робити скелю занадто важкою для переміщення, а потім перемістити її .
Багато важливих системних процесів, як-от init
, працюють як root
і root
використовуються для виконання адміністративних завдань.
Чи можу я ввійти як root
?
Можна налаштувати root
обліковий запис, щоб увійти за допомогою пароля, але це не включено за замовчуванням в Ubuntu. Замість цього, ви можете думати root
як , як www-data
, lp
, nobody
і інші рахунки , які не є людьми. (Запустіть cat /etc/passwd
або getent passwd
перегляньте їх усіх.)
Людські користувачі входять у власні облікові записи користувачів, і тоді, якщо якесь завдання потрібно виконати з іншим обліковим записом користувача, вони призводять до того, що це завдання буде виконано з цією особою , не фактично ввівшись як цей користувач.
Можна настроїти інших користувачів, які не є людьми, наприклад www-data
, так що ви можете також увійти як і вони. Однак це досить рідко, тоді як в деяких інших ОС, схожих на Unix, звичайно входити як root
у терміналі . Ризики запуску весь графічний інтерфейс, root
в поєднанні з тим, як багато графічних програм не призначені для роботи в якості root
і може не працювати належним чином, означає , що ви ніколи не повинні намагатися отримати root
-ву сеанс робочого столу .
Будь ласка , зверніть увагу , що в той час як реєстрація в якості root
відключена за замовчуванням в Ubuntu, є способи , щоб отримати root
оболонку без аутентифікації , як root
, які виробляють такий же ефект: найбільш поширеними є sudo -s
або-i
, режим відновлення і подібні методи . (Не хвилюйтесь, якщо ви не знаєте, що це за речі.) Це насправді не вхід у систему: у режимі відновлення ви стаєте root
перед тим, як відбуватиметься будь-який вхід; з sudo
методами на основі, ви просто запускаєте оболонку як корінь.
Адміністратори
В Ubuntu адміністратори - це користувачі, які можуть робити все, що завгодно root
, коли вирішають це зробити .
Налаштування системи> Облікові записи користувачів. "Eliah Kagan" є адміністратором, тому він може робити речі як root
, але це не такroot
.
Я адміністратор своєї системи Ubuntu. Коли я запускаю програми, вони зазвичай виконуються як ek
("Eliah Kagan" - це повне ім'я, яке відповідає ek
імені користувача.)
Коли я запускаю AbiWord або LibreOffice, він працює як ek
. Коли я запускаю Firefox, Chromium, Empathy або Pidgin, він працює як ek
. Програми, які виконуються для надання інтерфейсу робочого столу, працюють як ek
.
Однак я адміністратор, тому якщо мені потрібно виконати адміністративне завдання, я можу це зробити.
судо
У командному рядку я зазвичай використовую sudo
для запуску команди як root
:
sudo command...
Це спонукає мене за мій пароль. (Не root
пароль; root
його немає.)
- Оскільки я адміністратор, я можу виконувати дії як
root
. У конфігурації за замовчуванням я повинен ввести свій пароль для цього.
- Користувачі, які не є адміністраторами, не можуть виконувати дії
root
, навіть вводячи свій пароль. sudo
команди не вдасться, якщо користувач, який їх виконує, не є адміністратором.
Оскільки адміністратори - це абсолютно звичайні користувачі, за винятком можливості виконувати дії як root
, виконання команди, яка вимагає root
привілеїв, все-таки не вдасться, за винятком випадків, коли команда виконується якroot
.
Знімок екрана, що ілюструє необхідність використання sudo
для виконання адміністративних завдань. ( На основі «сендвіч» по Randall Мунро .)
судо, графічно
Графічні програми можуть працювати як root
через графічні фронтиsudo
, такі як gksu
/gksudo
і kdesudo
. Наприклад, запустити GParted так, як root
я міг запустити gksudo gparted
. Тоді мені графічно запропонують пароль.
Оскільки мені запропоновано графічно, не повинно бути терміналу. Це один із способів запуску адміністративних інструментів root
.
Полкіт
Polkit (колись відомий як PolicyKit) - це ще один спосіб для адміністраторів робити такі дії root
. Програма отримує доступ до служби, яка виконує дію. Іноді дія виконує цілу програму; іноді дія більш обмежена.
У наші дні багато утиліти для адміністрування графічної системи створені для використання polkit за замовчуванням, а не для використання sudo
.
Одним із прикладів такої утиліти є Центр програмного забезпечення. Він повністю використовує polkit, вимагаючи від користувача вводити свій пароль лише тоді, коли вони хочуть зробити щось, що вимагає root
привілеїв. (Це можливо також за допомогою sudo
аутентифікації на основі бази даних, але це важче і гірше здійснити.)
У Центрі програмного забезпечення я можу знайти та прочитати про програму; тоді мене запитують пароль, коли я хочу його встановити.
Як полкит відрізняється
Будь-яка графічна програма може працювати як root
з gksudo
і іншими графічними sudo
оболонками. (Програма може працювати не дуже добре, залежно від того, чи призначена вона для використання root
. Але команда для запуску програми буде виконуватися як root
.)
Хоча polkit зараз частіше, ніж sudo
інтерфейси графічного інтерфейсу, тому що програми на Ubuntu виконують дії root
за кадром, polki запускає лише графічний додаток, як root
якщо б там був файл конфігурації, який вказує, які дії можуть бути виконані .
Polkit, не графічно
pkexec
це команда, яка використовується для запуску програми з polkit.
Мовляв sudo
, pkexec
може запускати не графічні команди. (І для цього не потрібен файл конфігурації, що визначає можливості команди - він просто виконує команду як root
.)
pkexec command...
pkexec
графічно вимагає ввести пароль, навіть якщо він запускається з терміналу (це один із способів його поведінки більш схожий, gksudo
ніж на прямий запуск sudo
).
(Якщо немає графічного інтерфейсу, наприклад, якщо ви ввійшли через віртуальну консоль або сеанс SSH, призначений лише для тексту , або графічний інтерфейс не працює належним чином - тоді виграшно виграє і pkexec
з’явиться запит на отримання пароля в командному рядку .)
Після успішної автентифікації команда виконується в терміналі.
Крім того, запускаються команди як інші користувачі root
root
є особливим, оскільки він може робити все, що можна зробити. Але це обліковий запис користувача, як і будь-який обліковий запис, і способи виконання команд, як root
з sudo
(безпосередньо або з графічним фронтом) або polkit, можна трохи змінити для запуску команди, як і будь-який інший користувач:
sudo -u username command...
gksudo -u username command...
pkexec --user username command...
Що? Ви просто набираєте sudo
перший? Як це безпека ?!
Запуск команд за допомогою sudo
на зразок нагадує папську невірність .
Коли ви запускаєте команду ізsudo
[посилатися на папську непогрішність] , Ubuntu [католицькі люди] намагається переконатися, що ви насправді ви [справді Папа].
Так, я знаю, що папська непогрішність (навіть коли нормативна) є декларативною; паралель не ідеальна.
Спроба зробити що - то , як root
з sudo
(або polkit) велику справу - Ubuntu не просто збирається , щоб це слайд, як і всі інші часи ви запускаєте програму.
Вам буде запропоновано ввести пароль. (Потім, що ви зробили це, запам'ятовується на короткий час, тому вам не доведеться постійно вводити свій пароль під час адміністрування системи.)
Окрім того, що нагадує вам бути обережними , ця гарантія проти двох сценаріїв:
- Хтось використовує ваш комп’ютер (або мобільний пристрій), можливо, під прикриттям перевірки своєї електронної пошти чи якоїсь подібної нешкідливої мети. Тут вони все ще можуть заподіяти шкоду - наприклад, вони могли змінити або видалити ваші документи. Однак вони не можуть керувати системою, оскільки не можуть ввести ваш пароль.
- Програми, які не повинні адмініструвати систему, не можуть цього робити, якщо ви не введете свій пароль. Наприклад, якщо ваш веб-браузер порушений помилкою безпеки та виконує зловмисний код, він все ще не може виконувати адміністративні завдання. Він не може створювати та видаляти користувачів, змінювати встановлені програми
root
(що включає все, що встановлено менеджером пакунків, наприклад LibreOffice), або змінювати систему на глибокому рівні.
Я чув про це su
. Що це? Чи можу я це використати?
su
автентифікується як інший користувач і виконує команду (або запускає інтерактивну оболонку). Можна обмежити, хто дозволено використовувати su
, але su
автентифікувати за допомогою пароля цільового облікового запису, а не пароля користувача, який працює.
Наприклад, працює як ім’я користувача , так само, як .su username -c 'command...'
command...
sudo -u username command...
Але коли ви запускаєте команду, як username
і колись sudo
, ви вводите свій пароль . Коли ви запускаєте команду, як username
і su
введіть username
пароль .
Оскільки su
виконується аутентифікація для цільового користувача , su
ви можете запускати команди лише як користувачі , акаунти яких увімкнено .
Обліковий root
запис (як www-data
і nobody
) вимкнено за замовчуванням. Немає пароля, який буде працювати для входу як root
. Тому ви не можете використовувати su
команди для запуску як root
.
Ви можете використовувати su
команди для запуску команд як іншого користувача, який може ввійти (що, як правило, включає всі облікові записи користувачів у вашій системі, що представляють людину).
Якщо ви ввійшли як гість, ви взагалі не можете користуватися su
.
Поєднання su
іsudo
Хтось, хто не адміністратор, може навіть використовувати його su
для запуску sudo
як адміністратор. (Хоча це нормально, оскільки їм потрібен пароль адміністратора для запуску команд як адміністратор.) Тобто обмежений користувач може використовувати su
для запуску sudo
команду як root
. Це може виглядати так:
su username -c 'sudo command...'
(Запуск графічних програм таким чином вимагає особливої обережності .)
Чи не su
буде більш безпечним способом запускати команди як root
?
Напевно, ні.
Що робити, якщо користувачеві не можна дозволити діяти root
?
Зробіть їх обмеженим користувачем замість адміністратора.
Що робити , якщо програма працює в якості адміністратора намагається , sudo
щоб root
?
Якщо ви не переконфігурували, sudo
щоб дозволити йому досягти успіху без пароля, це не вдасться.
Не можна програму, яку не слід запускати як root
скарбничку в останній sudo
команді, тому пароль не потрібен?
Це було б дуже навряд чи вдасться. У наші дні більшість операційних систем (включаючи Ubuntu) sudo
налаштовані за замовчуванням, так що їх часові позначки застосовуються лише в конкретному контексті.
Наприклад, якщо я запускаюсь sudo ...
на одній вкладці Terminal і успішно підтверджую автентифікацію, sudo
на іншій вкладці (або запущеній незв'язаній програмі GUI або запущеній з віртуальної консолі або сеансу SSH) все одно буде запропоновано ввести пароль. Навіть якщо це буде запущено відразу після цього.
Чи програма, що працює як користувач X, не має доступу до пароля користувача X?
Немає.
Якщо зловмисна програма може працювати як адміністратор, чи не може вона "слухати" те, що вводиться, коли адміністратор перевіряє автентифікацію sudo
або polkit?
Потенційно, так. Але тоді він міг "прослухати" пароль, введений для su
.
Якщо я скажу комусь свій пароль -
Не кажіть людям свій пароль.
Що робити, якщо хтось повинен знати мій пароль, щоб зробити щось від мого імені, але я не хочу дозволити їм адмініструвати систему?
В ідеалі вони повинні мати окремий обліковий запис користувача, який дозволяє їм робити те, що потрібно робити. Наприклад, можна обмінюватися файлами між обліковими записами, дозволяючи декільком користувачам писати до них, при цьому все ж забороняючи доступ іншим користувачам.
Однак, у випадку, коли особі з менш довірою може бути дозволено ділитися вашим обліковим записом, це має бути обмежений обліковий запис користувача. Ви можете створити окремий рахунок для цієї мети (що має сенс - якщо це рахунок для вас і когось іншого, хто ви хочете мати різні можливості, це повинен бути інший рахунок).
Таким чином, буде найбезпечнішим , що б заборонити як sudo
і su
і змусити людей увійти як root
вручну?
Ні, оскільки є серйозні недоліки, пов'язані з тим, щоб люди root
взагалі могли входити в систему . По можливості слід вжити якомога меншу кількість дій root
. Навіть більшість актів, що стосуються безпосередньо адміністрування системи (наприклад, перегляд налаштувань користувачів та читання журналів), зазвичай не потребують root
привілеїв.
Крім того, як потенційно шкідлива програма може спостерігати, що хтось набирає під час запуску sudo
або su
, або створює підроблений запит sudo
/ su
пароль, потенційно шкідлива програма також може створити підроблений екран входу.
Що робить користувача адміністратором?
Членство в групі.
В Ubuntu 12.04 і пізніших версіях адміністратори є членами групи, яку називають sudo
.
В Ubuntu 11.10 і новіших версіях адміністратори є членами групи, яку називають admin
.
Коли система Ubuntu до 12.04 оновлена до 12.04 або пізнішої, admin
група зберігається для зворотної сумісності (і продовжує надавати адміністративні повноваження користувачам у ній), але sudo
група також використовується.
Обмежені облікові записи користувачів
Чи можна використовувати обмежений обліковий запис користувача замість облікового запису адміністратора?
Якщо вам подобається, обов'язково. Створіть обмежений обліковий запис користувача в Налаштуваннях системи > Облікові записи користувачів та ввійдіть як цей користувач.
Чи можу я зробити свій обліковий запис адміністратора обмеженим обліковим записом користувача?
Так, просто видаліть його з груп sudo
і admin
(див. Вище).
Але ви повинні переконатися, що є хоча б ще один обліковий запис адміністратора, щоб ви могли адмініструвати свою систему. Якщо цього немає, то вам доведеться завантажитися в режим відновлення або живий компакт-диск і знову зробити користувача адміністратором . (Це схоже на скидання втраченого пароля адміністратора .)
Графічні інструменти для адміністрування користувачів та груп зазвичай не дають вам створити систему без адміністраторів або принаймні попередить вас. Інструменти командного рядка зазвичай не будуть (довіряючи, що ви знаєте, що робите).