Чому погано входити в систему як root?


192

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

Експертам Linux це може бути широко відомо, але я не знаю чому. Я пам’ятаю, що завжди працював як root, коли я вперше спробував Linux років тому (Redhat і Mandrake), і не пам’ятаю, щоб із-за цього виникати будь-які проблеми.

Насправді є кілька дистрибутивів, які мають яскраво-червоний фон із поперечними знаками на екрані як шпалери для кореневого користувача (SuSe?). Я все ще користуюся обліковим записом "Адміністратор" для регулярного використання в моїй установці Windows, і там ніколи не виникало жодних проблем.


15
Я думаю, що немає проблеми із запуском програми як root. Це тільки те, що ви можете завдати шкоди серцевині вашої ОС (навіть судорожці можуть це зробити), якщо ви не дуже розумні в Linux. крім того, що я не знаю, є якась проблема. Але це лише моя точка зору.
Гаурав Бутола

1
Відносяться питання тут .
loevborg

Складність потрапляння в кореневий режим змінюється між дистрибутивами. Мене особисто дратує те, як Fedora не дозволяє вам "судо" прямо з коробки. OpenSUSE і Ubunto мають заздалегідь налаштовані sudo ... і тому, якщо ви виберете правильний дистрибутив, ви можете мінімізувати свої роздратування, не маючи можливості отримати доступ до файлів.
djangofan

4
@GauravButola, навіть якщо ви фахівець, це все-таки погана ідея, якщо програма порушена.
strugee

2
@DaboRoss ОП коментує, що він працює у Windows як адміністратор; що стосується мого (мало) досвіду роботи в цій ОС, мені здається, що він більше схожий на Ubuntu: це привілейований обліковий запис у тому сенсі, що він може робити все, що завгодно, але просить дозволу, перш ніж встановити нове програмне забезпечення. Тому, ймовірно, еквівалентом використання "адміністратора" користувача у Windows, перекладеному на Ubuntu, було б запустити головного користувача з налаштованим sudo, щоб він не просив пропустити --- запуск безпосередньо як root набагато небезпечніше.
Рмано

Відповіді:


154

Він перемагає модель безпеки, яка існує роками. Програми призначені для запуску з адміністративною безпекою (або як просто смертні), тому вам доведеться підвищити їхні привілеї для зміни базової системи. Наприклад, ви не хочете, щоб ця нещодавня збійка Rhythmbox знищила весь ваш /usrкаталог через помилку. Або та вразливість, яка щойно була розміщена в ProFTPD, щоб зловмисник міг отримати оболонку ROOT

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


5
... і це захищає вас від перетворення тривіальних помилок у катастрофи. Я користувач / адміністратор Unix з 1990 року, але все одно я можу точно просунути пробіл у точно неправильному місці, роблячи rm -rf tmp/tests/*...
Rmano

9
1.) Більшість людей вважають свій домашній каталог важливішим за кореневі файли, тому що перший не може бути встановлений заново. Тож я не бачу вашої суті. 2.) З точки зору безпеки ви праві. Але, виходячи з Windows (де навколо WAY більше шкідливих програм), де я користувався обліковим записом адміністратора з тих пір (як і багато хто), мені важко вважати це реальною небезпекою. Мені просто лінь вводити sudoі свій пароль для кожної другої команди в Linux. Чи не повинні користувачі Linux лінуватися ?????
Blauhirn

не згоден -_-: ~: |
Edgy1

@LazyPower дякую за редагування вашої відповіді, але тепер я її більше не розумію. Для зміни моєї приватної папки Ubuntu ~ програмам не потрібні права судо. Rhythmbox МОЖЕ знищити весь мій каталог $ HOME / Музика! І це все, що мене хвилює! Як це пов’язано з дозволами на root?
Blauhirn

1
Це гарний дзвінок @Blauhirn. Я щойно надіслав у подальшому редагуванні, щоб відобразити, що ми не хочемо, щоб це видалило всю / usr. Що стосується захисту ваших папок $ HOME, нічого доброго резервного копіювання не може допомогти вам. Я не думаю, що цей конкретний сценарій буде пов'язаний із безпекою настільки ж, наскільки хороша практика. Ще раз дякую за опис.
lazyPower

79

Всього одне слово: безпека.

  1. Ви зареєстровані як root = всі програми працюють з привілеями root - кожна вразливість у Firefox, Flash, OpenOffice тощо може тепер знищити вашу систему, оскільки можливі віруси тепер мають доступ скрізь. Так, вірусів для Ubuntu / Linux існує лише декілька, але це також через добру безпеку та непривілейований користувач за замовчуванням.
  2. Справа не тільки в вірусах - невелика помилка в додатку може стерти деякі системні файли або ...
  3. Коли ви зареєстровані як root, ви можете зробити все - система не запитуватиме! Ви хочете відформатувати цей диск? Гаразд, лише одним натисканням кнопки і все зроблено, тому що ти root і знаєш, що робиш ...

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

5
@kbeta ви припускаєте, що ви працюєте на комп’ютері, де єдиними цінностями є ваші дані та системні файли. Насправді linux часто використовується в системі, де багато користувачів використовують систему одночасно. У цьому випадку стабільність системи (а отже, і системних файлів) набагато цінніша, і інші файли користувачів також важливі.
Ерік Полі

2
@kbeta Справедливо, але пошкоджена конфігурація системи також може становити загрозу для ваших даних ... і, звичайно, створення резервних копій було б хорошою ідеєю, чи наразі ваша система ризикує чи ні. Попрацювати поточне резервне копіювання з планом відновлення після аварій було б краще.
Прифтан

47

Запуск як root є поганим, оскільки:

  1. Тупість: ніщо не заважає вам зробити щось дурне. Якщо ви намагаєтесь змінити систему в будь-якому випадку, це може бути шкідливим, вам потрібно зробити sudo, що майже гарантує паузу під час введення пароля, щоб зрозуміти, що ви збираєтесь зробити можливі великі / дорогі зміни.
  2. Безпека: У цьому питанні вже згадувалося вже досить багато разів, але в основному це те саме, що важче зламати, якщо ви не знаєте облікового запису входу адміністратора. root означає, що ви вже маєте половину робочого набору облікових даних адміністратора.
  3. Вам це зовсім не потрібно: Якщо вам потрібно запустити кілька команд як root, і ви дратуєтесь тим, що вам доведеться вводити свій пароль кілька разів, коли термін дії sudo закінчився, все, що вам потрібно зробити, - це sudo -iі ви тепер root. Хочете запустити кілька команд за допомогою труб? Потім використовуйте sudo sh -c "comand1 | command2".
  4. Ви завжди можете використовувати його в консолі відновлення: консоль відновлення дозволяє спробувати відновитись, зробивши щось дурне або виправити проблему, спричинену програмою (яку вам все-таки довелося запускати як sudo :)) У Ubuntu немає пароля для кореневого облікового запису в цьому випадку, але ви можете шукати в Інтернеті, щоб змінити це, це ускладнить того, хто має фізичний доступ до вашої скриньки, щоб зробити шкоду.

Причина, по якій ви не змогли знайти інформацію про те, чому це погано, це тому, що, ну, в Інтернеті є занадто багато даних :), і що багато людей, які вже давно використовують Linux, думають, як і ви. Такий спосіб мислення про кореневий обліковий запис є досить новим (можливо, десятиліття?), І багато людей все ще дратуються необхідністю користуватися судо. Особливо, якщо вони працюють на сервері, а значить, вони зайшли з наміром внести системні зміни. Ймовірно, спричинений попереднім поганим досвідом та стандартами безпеки, більшість сисадмінів знають краще, але це все ще не подобається :).


"десятиліття може бути?" Набагато довше, ніж це, навіть коли ти це писав. Навіть без судо не можна згадати, наприклад, групу коліс (наприклад). Розмежування привілеїв завжди важливе і завжди було важливим і завжди буде важливим. Ото не так багато людей використовували ОС на базі Unix, як багато років тому, і багато хто звикли завжди бути адміністратором.
Прифтан

36

Це гарне запитання. Я думаю, що відповідь дещо відрізняється залежно від того, чи говориш ви про сервер чи настільну установку.

На робочому столі нечасто користуватися rootобліковим записом. Насправді, Ubuntu поставляється з відключеним кореневим доступом. Усі зміни, що потребують привілеїв суперпользователя, здійснюються через sudoйого графічні коньяти gksudoі kdesudo. Враховуючи, що встановити rootпароль легко , чому люди не роблять цього?

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

Більш вірним моментом для однокористувацької системи є те, що користувач не може випадково зробити систему непридатною. Якщо користувач ненавмисно видає команду, яка видаляє всі файли, він все одно зможе завантажувати систему, навіть якщо дані втрачені.

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

У багатокористувацькій системі з неграфічним доступом до оболонки багато з цих причин не застосовуються. Однак Ubuntu все ще обґрунтовано використовує недоступний rootобліковий запис. По-перше, існує реальна різниця між доступом до облікового запису користувача (з sudoправами) через отвір у захисті та доступом до нього root, оскільки в першому випадку зрив інших користувачів потребує запуску, sudoі все ще буде запропоновано пароль для облікового запису як додатковий крок безпеки. Для іншого корисно виконувати багато адміністративних завдань з облікового запису користувача та звертатися лише до sudoтих пір, коли привілеї суперпользователя абсолютно необхідні. Таким чином, при встановленні програми з джерела доцільно будувати джерело - запущене configureіmake- всередині каталогу користувача та лише sudo make installна завершальному кроці. Знову ж це ускладнює застріл себе (та інших користувачів багатокористувацької системи) у ногу, і це зменшує ймовірність побудови сценаріїв, що спричиняють хаос із системою. Таким чином, навіть на сервері корисно дотримуватися адміністрації на базі Sudo .


2
he will still be able to boot the system, even if the data will be lost.- У чому сенс цього? Якщо мої дані втрачаються, мої дані втрачаються, і це все. Системне програмне забезпечення Linux можна переустановити, якщо його видалити, чому я повинен дбати про втрату даних у таких каталогах? З іншого боку, втрата даних у ~нас погана. І sudoне захищає мене від цього.
Blauhirn

2
Ще одна добра практика - резервне копіювання важливих даних. Якщо ви видалите домашній каталог, ви все одно можете завантажуватись та просто копіювати файли з резервної копії. Або, скажімо, у вас невеликий ноутбук для подорожей. Це може бути фото, дорожні записки, розклад поїздів - але нічого надто важливого. Якщо ви стерте файли користувачів, ви все одно можете завантажувати систему та перевіряти свій рейс або з’ясувати, який автобус потрібно взяти.
Richlv

@Blauhirn Резервні копії. І є шанс на одужання, навіть якщо він виглядає похмурим.
Прифтан

34

Однією з причин не запускати корінь, який досі не був визначений іншими відповідями, є простежуваність. Це, мабуть, має значення менше на машинах, які в основному є однокористувацькими машинами (на вашому робочому столі чи ноутбуці), але на серверних машинах, якщо хтось увійшов у систему як root, ви не знаєте, хто винен у вчинених діях. Тому більшість професійних організацій з декількома системами та декількома адміністраторами, яким потрібні rootпривілеї, вимагають від користувачів входу, використовуючи власний ідентифікатор користувача (і пароль), а потім використовувати sudoабо подібні програми для роботи з rootпривілеями, коли це необхідно.

В іншому випадку, основними причинами не запуску root є:

  • Мінімізуйте ризик пошкодження від нещасних випадків. Якщо ви запускаєте rm -fr / home/me/my-subdirяк root, то ви просто різко усунули все важливе з вашої машини через пробіл після (першого) косого ряду - тому що перше, що додається, це те, що було додано спочатку - такі дрібниці, як ядро, /binі /etcкаталог. Unix засмучується, якщо ви їх втратите.

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

Я більше використовую MacOS X, ніж у Ubuntu, але там корінь відключений за замовчуванням, і він все ще є на моїй машині. Я регулярно оновлюю ядро ​​та інші подібні операції - використовуючи sudo(за кадром). Подібні методи застосовуються в основному до Linux.

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


1
Йдеться не про звинувачення когось, а про те, щоб можна було зрозуміти, чому хтось змінив.
jippie

2
@jippie: Я маю на увазі "звинувачувати" так само, як VCS відслідковує те, хто робив те, що правильній особі приписується відповідальність за зміну, "добре" чи "погано", а також одне з імен для команди, яка робить це відстеження є «виною». Це дає вам людину для розмови, щоб дізнатися, чому щось сталося. Це не завжди є «виною» (хоча часто це пригнічно, причина того, що потрібно знати, полягає в тому, що щось не зовсім працює, як очікувалося, і потрібно знати, чому ні). Отже, мова йде про підзвітність та простежуваність, а не про винність особи в тому, що вони зробили.
Джонатан Леффлер

У Ubuntu такі команди, як rm -fr / home/me/my-subdirнасправді, не намагаються рекурсивно видаляти /, тому що /вони обробляються спеціально для захисту від таких помилок. Докладніше див. Документацію --preserve-rootта --no-preserve-rootпараметри man rm. Але принцип правильний: односимвольні помилки дійсно існують , що результат в rmвидаленні всього. Наприклад, якщо ви маєте на увазі видалити все в поточному каталозі запуском rm -r *, але ви випадково поставили /попереднє *, це буде погано.
Елія Каган

@EliahKagan Але все ж, якби ти мав це зробити ... chown -R nobody:nobody ../від say / etc, чи захистив би тебе це? Якщо ви зробили це в / і т. Д., Це завдало б вам світ нашкоду. Аналогічно відбувається і .*при рекурсивному виконанні команди.
Прифтан

21

TL; DR: Робіть корінь лише тоді, коли вам доведеться. sudoробить це досить легко. Якщо ви ввімкнули кореневі логіни, ви все одно можете дотримуватися цього правила, вам потрібно бути обережним. Хоча ввімкнення кореневих логін насправді не є небезпечним, якщо виконано правильно, вам не потрібно активувати кореневі входи, оскільки у вас є sudo.

Тут справді є два пов’язані питання.

  • Чому для повсякденного використання комп'ютера (як веб-перегляд веб-сторінок, електронна пошта, обробка текстів, ігри тощо) погано входити як корінь?
  • Чому Ubuntu за замовчуванням взагалі вимикає кореневі логіни та використовує sudoта polkit, щоб адміністратори могли запускати конкретні команди як root?

Чому б весь час не запускати все як root?

Більшість інших відповідей висвітлює це. Це зводиться до:

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

Це правда, що навіть не роблячи речі як корінь, ти можеш заподіяти шкоду. Наприклад, ви можете видалити всі файли у власному домашньому каталозі, який зазвичай включає всі ваші документи, не запускаючи як root! (Сподіваємось, у вас є резервні копії.)

Звичайно, як корінь, існують додаткові способи випадкового знищення тих самих даних. Наприклад, ви можете вказати неправильний of=аргумент для ddкоманди та записати необроблені дані у свої файли (це робить їх способом, набагато складніше відновити, ніж якби ви їх просто видалили).

Якщо ви єдина людина, яка використовує ваш комп’ютер, шкода, яку ви можете зробити тільки як root, може насправді не перевищувати шкоду, який ви можете завдати звичайним привілеям користувача. Але це все ще не є причиною розширити свій ризик, щоб включити додаткові способи зіпсувати вашу систему Ubuntu.

Якщо робота з некористувальним обліковим записом користувача не дозволила вам контролювати власний комп’ютер, то це, звичайно, буде поганим компромісом. Але це не так - коли ви дійсно хочете виконати дію як root, ви можете зробити це за допомогою sudoінших методів .

Чому б не дати можливість увійти як root?

Думка про те, що здатність увійти як корінь за своєю суттю є небезпечною, є міфом. У деяких системах за замовчуванням включений кореневий рахунок; інші системи використовують sudoза замовчуванням, а деякі налаштовані з обома.

  • Наприклад, OpenBSD , який широко і розумно вважається найбільш захищеною ОС загального призначення у світі, постачається з кореневим обліковим записом, увімкненим для локального входу на основі пароля.
  • Інші шановні ОС, які роблять це, включають RHEL , CentOS та Fedora .
  • Debian (від якого отримує Ubuntu ) користувач вирішує, який підхід буде налаштовано під час встановлення системи.

Об'єктивно неправильно мати систему, де ввімкнено кореневий рахунок, за умови, що це

  1. ви все ще тільки використовувати його , коли вам дійсно потрібно, і
  2. ви обмежуєте доступ до нього належним чином.

Часто новачки запитують, як увімкнути кореневий рахунок в Ubuntu. Ми не повинні приховувати цю інформацію від них, але зазвичай, коли люди запитують це, це тому, що вони відчувають помилкове враження, що їм потрібно ввімкнути кореневий обліковий запис. Насправді це майже ніколи не потрібно, тому, відповідаючи на подібні запитання, важливо пояснити це. Увімкнення кореневого облікового запису також дозволяє легко стати самовдоволеними та виконувати дії як root, яким не потрібні привілеї root. Але це не означає, що включення кореневого облікового запису само по собі є небезпечним.

sudoзаохочує та допомагає користувачам запускати команди як root, лише коли їм потрібно. Щоб запустити команду як root, введіть sudoпробіл, а потім команду. Це дуже зручно, і багато користувачів усіх рівнів кваліфікації віддають перевагу такому підходу.

Коротше кажучи, вам не потрібно включати кореневі логіни, оскільки у вас є sudo. Але поки ви використовуєте його лише для адміністративних завдань, які цього вимагають, це приблизно однаково безпечно вмикати та входити в систему як root, до тих пір, поки це лише такими способами :

Однак значні додаткові ризики для безпеки виникають, якщо ви ввійдете як корінь цими способами:

  • Графічно. Коли ви ввійдете в систему графічно, для створення графічного інтерфейсу працює ціла маса матеріалів, і ви в кінцевому підсумку запустите ще більше додатків як root, щоб використовувати цей інтерфейс для чого завгодно. Це суперечить принципу лише запуску програм як root, яким дійсно потрібні привілеї root. Деякі з цих програм можуть містити помилки, включаючи помилки безпеки.

    Крім того, є причини, які не мають безпеки, щоб цього уникнути. Графічний вхід як root не підтримується добре - як згадує loevborg , розробники настільних середовищ та графічних додатків не часто перевіряють їх як root. Навіть якщо вони це роблять, увійшовши у графічне середовище робочого столу як root, користувачі не отримують реальну версію альфа-та бета-тестування користувачами, як це майже ніхто не намагається (з причин безпеки, пояснених вище).

    Якщо вам потрібно запустити конкретну графічну програму як root, ви можете використовуватиgksudo або sudo -H. Це запускає набагато менше програм як root, ніж якщо ви насправді увійшли в систему графічно за допомогою кореневого облікового запису.

  • Віддалено. Обліковий rootзапис фактично може робити що завгодно, і він має таку ж назву практично в усіх системах, схожих на Unix. Увійшовши в систему як корінь за допомогою sshінших та віддалених механізмів, або навіть налаштувавши віддалені сервіси, щоб це дозволило , ви значно полегшуєте зловмисникам, включаючи автоматизовані сценарії та зловмисне програмне забезпечення, яке працює на ботнетах, отримувати доступ через грубу силу, атаки словника (і можливо деякі помилки безпеки).

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

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

  • Якщо ви запустили ssh-сервер на Ubuntu і не змінилися /etc/sshd/ssh_config, він буде містити рядок PermitRootLogin without-password. Це вимикає кореневий вхід на основі пароля, але дозволяє здійснювати вхід на основі ключа. Однак жоден ключ не налаштований за замовчуванням, тому, якщо ви його не встановили, це теж не спрацює. Крім того, віддалений кореневий вхід на основі ключа набагато менш поганий, ніж віддалений кореневий вхід на основі пароля, частково тому, що він не створює ризику грубої сили та атак на словник.
  • Незважаючи на те, що дефолти повинні захищати вас, я думаю, що все-таки хороша ідея перевірити вашу ssh-конфігурацію, якщо ви збираєтесь ввімкнути кореневий рахунок. Якщо ви користуєтесь іншими службами, які надають віддалений вхід, наприклад, ftp, вам слід також перевірити їх.

На закінчення:

  • Робіть речі як корінь лише тоді, коли вам потрібно; sudoдопомагає вам це зробити, при цьому надаючи вам повну потужність root, коли ви хочете.
  • Якщо ви розумієте, як працює корінь та небезпеки його надмірного використання, включення кореневого акаунта насправді не проблематично з точки зору безпеки.
  • Але якщо ви це розумієте, ви також знаєте, що вам майже не потрібно ввімкнути кореневий рахунок .

Для отримання додаткової інформації про root та sudo, зокрема, про додаткові переваги, sudoякі я тут не висвітлював, настійно рекомендую RootSudo у вікі довідки Ubuntu.


"Якщо ви єдина людина, яка користується вашим комп'ютером, шкода, яку ви можете зробити тільки як root, може насправді не перевищувати шкоду, який ви можете завдати звичайним привілеям користувача. Але це все ще не є причиною розширювати свій ризик "Не кажучи вже про те, що це ставить вас у звичку до цього ... тоді ви переходите до іншої системи і що відбувається? Те саме з абсурдною ідеєю змусити людей звикнути до rm -iпсевдоніму. Ви переходите до системи, яка цього не має, і що тоді? Дитина, яка сидить за користувачем від подібних помилок, ніколи не є хорошою ідеєю, коли ви вважаєте, що люди дуже істоти звичок.
Прифтан

13

Кореневий обліковий запис вимкнено за замовчуванням - це означає, що він існує, але його не можна використовувати (за винятком режиму відновлення). Це означає, що зловмисник знає ваш кореневий обліковий запис, але не міг ним користуватися, навіть якщо він / вона мала пароль root. Таким чином, зловмисник повинен вгадати як ім'я користувача, яке має права адміністратора, так і пароль користувача (що набагато складніше, ніж просто намагатися опрацювати кореневий пароль). У XP, якщо у вас встановлена ​​консоль відновлення, кожен, хто має фізичний доступ до вашої коробки, може завантажуватися в неї (RC) - не потрібно вводити пароль. Те саме, що режим відновлення в Ubuntu.

В Ubuntu, коли вони кажуть, що root вимкнено - це насправді мається на увазі, що обліковий запис заблоковано. Обліковий запис блокується, змінюючи пароль на значення, яке не відповідає жодному можливому зашифрованому значенню. Це фактично заважає нікому не входити в систему як корінь - оскільки не було б можливого введення пароля. Оскільки ще є випадки, коли потрібен кореневий доступ - ядро ​​Ubuntu було змінено, щоб дозволити локальне вхід у систему root лише в режимі однокористувача.

Також дивіться цю сторінку


Гм. Без образи, але ви можете прочитати назву питання, а потім прочитати деталі ще раз.
Mussnight

3
Це дуже корисно - і це дійсно відноситься до цього питання. Він пов'язаний із наслідками безпеки для ввімкнення облікового запису, необхідною умовою роботи як root.
Стефано Палацо

1
@Stefano Palazzo: Хоча надана інформація може бути корисною, я щиро не бачу, у якій частині лежить відповідь на те, що мені потрібно було знати. Я читав її кілька разів.
П'ятниця

Не заважає людям мати можливість увійти в root.
Чад

12

Це як озброювати маленьку дитину AK47, в той час як він може із задоволенням грати зі своїм пістолетом у пейнтбол. ;)

Я маю в виду його неправильно , тому що ви і ваші програми будуть мати більше привілеїв , то їм потрібно , і що , коли речі можуть і іноді буде йти не так :(


5
більш розумна аналогія. (^_^)
kit.yang

2
Це абсолютно невідповідна аналогія. Дитина з AK47 може вбивати себе та інших людей. Користувач unix з кореневим доступом може принаймні вимкнути свою систему тимчасово не працює. (Завжди можна заново встановити ОС і відновити роботу).
kbeta

@kbeta Ви маєте рацію, моя аналогія трохи не пропорційна і перебільшена. будь ласка, рухайтесь далі.
омід

@kbeta аналогія відповідна. ризик - це не працююча система, а втрата даних та конфіденційність. користувач root може видалити дані. будь ласка, використовуйте свою фантазію, щоб пов’язати вбивство та втрату даних.
n611x007

11

Дуже приємне запитання ... Дозвольте відповісти на це з практичної точки зору:

Коли я почав використовувати Linux, що більше 10 років тому, основні дистрибутиви не рекламували так само, як сьогодні. Оскільки я звик до Windows, я також не бачив сенсу використовувати обмежений обліковий запис користувача. Зокрема, тому, що мені доводилося дуже часто вводити "su" - sudo тоді не був таким популярним. ;-) Тому я завжди входив у систему як root, тому що мені довелося зробити багато технічного обслуговування, щоб налаштувати мою систему. Але вгадайте що, будь-яка свіжа встановлена ​​система стала дуже швидко нестабільною.

Наприклад, одна конкретна проблема: у мене не було стільки місця для жорсткого диска, відведеного для Linux, тому мені кілька разів траплялося, що у мене на розділі залишилось 0 байт. Можливо, я не зовсім точний, бо не знаю точного механізму, але коли ви заповнюєте диск з некореневим обліковим записом, завжди залишається кілька кілобайт. Але якщо у вас дійсно залишилося 0 байтів, у вашій системі є дивні помилки, і ви можете виявити важкі виправлення пошкоджень у вашій системі, оскільки у фоновому режимі працює багато системного програмного забезпечення ...

Інша річ: такий розподіл між кореневим та некореневим підтримує вашу систему добре організованою. Як користувач root, ви можете спокуситися не встановлювати чисто своїх нових програм, що залишає вас брудною, важкою системою обслуговування.

Але гарна річ: сучасні дистрибутиви виконують більшість завдань адміністрування для вас, тому рідко вам доводиться пограбувати в кишечнику вашої системи Linux з кореневим обліковим записом. Час від часу вводити пароль достатньо, решта робиться за сценаріями дистрибутора.

Але я сумніваюся, що у вас не було проблем з вашою системою Windows, якщо ви використовували 95 oder 98. (Принаймні, у мене були проблеми з цим ...) Через відсутність чіткого розмежування між адміністратором та звичайним користувачем "традиційні" "Програми для Windows припускають, що вони можуть зробити все, наприклад, встановити шпигунське програмне забезпечення, якщо їм здається, що навіть не розповідаючи вам. Microsoft вирішила цю проблему, коли випускала Vista. (Ефективно впроваджуючи механізм судо.) Тому люди вели дуже дратівливі діалоги, які говорили: "Ти цього не можеш зробити". Для певного програмного забезпечення, яке не відповідає Vista, вам знадобилися деякі брудні хаки, щоб встановити його, навіть як адміністратор ...


"Можливо, я не зовсім точний, бо не знаю точного механізму, але коли ви заповнюєте диск з некореневим обліковим записом, завжди залишається кілька кілобайт". Можливо, ви посилаєтесь на загублений + знайдений каталог? Якщо так, ви можете як адміністратор вказати, скільки потрібно резервувати. Я хочу сказати, що типовий типовий показник становить 5%, але я можу помилитися і його можна змінити. Це дуже корисно, хоча навіть якщо це рідко потрібно. Мабуть, тут є більше (я пам’ятаю це з моїх років використання): unix.stackexchange.com/questions/18154/…
Прифтан

Очевидно, це не обмежується файловими системами ext: unix.stackexchange.com/questions/7950/…
Філіп

Так. Я це знав :) Але дякую, що теж додав.
Прифтан

10

За цим підходом існує багато аспектів. Деякі з них:

  • Корінь все потужний.
  • У Unix та Unix-подібних системах привілеї системного управління - це все або нічого. Користувач або має кореневий доступ, або ні, і кореневий доступ передбачає повне управління машиною. Якщо відповідну машину використовує більш ніж одна людина, або root має доступ до інших систем або файлів користувачів, більш прийнятно надати деяким користувачам часткові права root.

  • Користувач root може приховати всі свої дії.
  • sudo записує кожну команду, запущену через sudo. Повідомлення про те, що робиться з судо, допомагає нам діагностувати проблеми з окремими системами / процесами та загальними проблемами конфігурації, а також допомагає нам виявити необхідні вдосконалення.

  • Корінний пароль дає вам доступ до будь-якої команди в системі.
  • Через свій конфігураційний файл, sudo може надати користувачу root доступ для певного набору команд. Це також дозволяє уникнути ефекту "все або нічого", що дозволяє надати індивідуальним користувачам більше контролю над своїми машинами та допомогти собі у вирішенні загальних проблем.

    ось хороша стаття: http://cf.stanford.edu/policy/root


    Але коли у вас є повне судо, ви можете судо су і приховувати свої дії.
    Вільгельм Еразм

    8
    rm /*
    

    Скажімо, ви прибирали адміністративний район. Ви втомилися від пароля, так що ви sudo su. Ви відволікаєтесь лише на секунду і забуваєте про те, на якому CD-диску /. Тоді ти rm *. Я це зробив. Ви можете все це повернути, але це ПДФА. О, і це /mediaтеж зійшло!


    10
    Ми завжди скаржимося на те, що наш ПК занадто повільний, але це так, ніби вони оптимізовані для роботи такої швидкості якнайшвидшого.
    jippie

    1
    @jippie Оскільки RM просто знищує посилання inode на файл. Видалення посилання не потребує багато часу та позначте пробіл як "безкоштовно".
    Каз Вулф

    @jippie, він повинен мати збірку за 10 секунд відліку
    СподіваюсьДопомога

    7

    Чому б не мати root?

    Хоча ви можете створити пароль для облікового запису суперпользователя, що дозволяє вам увійти як root, варто згадати, що це не спосіб "Ubuntu". Ubuntu спеціально вирішили не давати кореневим логіном та паролем за замовчуванням причину. Замість цього буде використана установка Ubuntu за замовчуванням sudo.

    Судо - це альтернатива введенню людям кореневого пароля для виконання обов'язків суперпользователя. В установці Ubuntu за замовчуванням особі, яка встановила ОС, надається дозвіл "sudo" за замовчуванням.

    Той, хто має дозвіл "sudo", може виконати щось "як суперпользователь", попередньо очікуючи sudoна їх командування. Наприклад, для запуску apt-get dist-upgradeв якості суперпользователя ви можете використовувати:

    sudo apt-get dist-upgrade
    

    Переваги підходу sudo

    • За допомогою sudo ви заздалегідь вибираєте, які користувачі мають доступ до sudo. Не потрібно запам’ятовувати кореневий пароль, оскільки вони використовують власний пароль.

    • Якщо у вас є кілька користувачів, ви можете відкликати доступ суперпользователя, просто видаливши їх дозвіл sudo, не потребуючи зміни кореневого пароля та повідомляти всіх про новий пароль.

    • Ви навіть можете вибрати, які команди користувачеві дозволено виконувати за допомогою sudo та які команди заборонено для цього користувача.

    • І нарешті, якщо є порушення безпеки, в деяких випадках він може залишати кращий аудиторський слід, який показує, який обліковий запис користувача був порушений.

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

    З судо у вас все ще є можливість відкрити постійну (інтерактивну) оболонку суперрузера з командою:

    sudo su
    

    ... і це все ще можна зробити без будь-якого кореневого пароля, оскільки sudoнадає пільги суперпользователя suкоманді.

    І так само замість su -оболонки для входу ви можете використовувати sudo su -або навіть sudo -i.

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

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

    Чому не дозволити вхід у систему root через SSH?

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

    Потенційні переваги для цього в основному стосуються безпеки:

    • Він зменшує вектор атаки, видаляючи можливість грубої форсировки кореневого пароля віддалено. Як правило, для сервера в Інтернеті постійно перешкоджають спроби жорстокого застосування кореневого пароля через SSH.

    • Це створює більш аудиту , так що навіть в разі порушення , коли зловмисник робить отримати повноваження супер пізніше, ви можете побачити , чия обліковий запис користувача була використана для отримання доступу.


    6

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


    5

    Це просто занадто просто заплутатися при роботі як root. Ви можете клопотати всю систему, як одна команда ...


    5

    Можу додати, що існує різниця між адміністратором у Windows та root у Unix. Адміністратор все ще має деякі обмеження в системах, де root не має жодних обмежень. Правильний аналог root у Windows - це System user.

    Погано використовувати ПК під root / System, це те, що ви можете випадково знищити що-небудь без будь-якого попередження ОС.


    3

    Причини проти використання root:

    • Не вдалося знищити системні файли
    • Може потрапити інфекція
    • Не записує дії

    Причини використання root:

    • Доступ до всього, без введення паролів
    • GUI, немає використання терміналів для управління системними файлами / каталогами

    Мені здається, що позакореневий обліковий запис все ще може стати жертвою тих причин проти використання root, що найбільше додає - це підтвердження ваших дій. Я думаю, що доки ти знаєш, що робиш, ти абсолютно безпечно використовуєш root. Там я це сказав.


    Хоча технічно існує спосіб реєстрації дій, включаючи кожну команду. Це стосується кожного користувача. Дивіться облік процесів, наприклад, тут: linuxjournal.com/article/6144 І це справді безпечно лише, якщо вам потрібно мати root; інакше це не зовсім безпечно (експлуатувати тощо), навіть якщо команда повинна бути безпечною.
    Прифтан

    3

    Якщо програми запущені як root, немає гарантії, що жодне з них не виконається

    rm -rf /
    

    (Це приклад команди, яку не слід запускати.)


    @StefanoPalazzo Ця публікація не має сенсу з видаленою командою, тому я відкрутив вашу редакцію - ви також можете видалити її. Зауважте, що, всупереч поширеному оману, ця команда, як написано, насправді не видаляє файли під час роботи в системі Ubuntu, але вона схожа на команди, які роблять. Тож якщо вас потурбували, хтось може бездумно скопіювати команду та спустити їх до системи, це мало ймовірно. Докладніше див. Документацію --preserve-rootта --no-preserve-rootпараметри man rm.
    Елія Каган

    Соляріс трактує цю команду як невизначену поведінку відповідно до широкої інтерпретації POSIX (та Брайана Кантрілла) та кидає помилку
    Джеремі Гаек

    3

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

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


    3

    Немає небезпеки при реєстрації корінця, якщо використовувати його обережно.

    Хоча я вважаю, що відключення кореня є кращим рішенням, оскільки зловмисник не зміг його змусити.

    Одне рішення - створити користувача в групі sudo з незрозумілою назвою, як gamerі використовувати sudo для виконання адміністративних завдань.

    Отже, зловмисник повинен не лише вгадувати пароль цього адміністративного користувача, але й своє ім’я для входу. Що не є очевидним , якщо користувач з допомогою Судо має реєстраційне ім'я , як kittyабо gamerчи що - щось подібне.


    2

    Програмне забезпечення базується на спільних бібліотеках, залежностях, файлах конфігурації тощо. У
    більшості випадків одним клацанням у програмі викликається "ланцюгова реакція" декількох змін не тільки там, де ви думаєте, що це можливо.
    Коли ці зміни торкнуться системно важливих налаштувань, вам добре, як користувачеві, знати.
    Ось чому кореневий доступ є хорошою моделлю безпеки:
    якщо з вашою системою має статися щось важливе, ви отримаєте сповіщення, попросивши про підвищення привілеїв.


    1

    Це двостороння проблема з більш ніж однією відповіддю.

    Для перевірки реальності завжди однакових, але о-о-так-жахливих відповідей на це:

    desktop installations:

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

    server installations:

    • є велика різниця між тим, як виконувати свої короткі робочі сесії легітимними корінь (за умови, що ви не ввійшли без паролів, правильне керування ключами ssh для всіх серверів - і fail2ban налаштовано для всіх вхід паролів, поки ви все одно на ньому) і мати кожен демон / послугу працює з власним користувачем (що обов'язково) - більшість людей, здається, не усвідомлюють різниці
    • для розваги: ​​спробуйте використовувати керовані вами версії інструменти керування конфігурацією (ansible / marpet / salt / будь-які файли з сервера git) лише без кореневого доступу. (у вас є якась форма AAA для цих спеціальних систем, а також для систем моніторингу та резервного копіювання, чи не так?)
    • також: за замовчуванням rm -rf /не працює в більшості основних потоків IIRC
    • будь-яке серйозне робоче місце має перемичку / хост бастіону для доступу до серверного флоту, який все одно записує все, що ви робите, що, ймовірно, додатково захищене 2FA
    • якщо у вас є судо і немає стрибка, ви можете виправити журнали хостів, щоб у кінцевому підсумку, але ви хочете їх все одно, якщо вони не відображаються в режимі реального часу, тобто.
    • коли також журнали ssh 'очищені', ви навіть не можете довести, що ви були на хості, якщо немає додаткової системи моніторингу мережі.

    Для будь-якого розміру компанії (читайте: швидше за все, SOHO зі статичним ip) між цими двома крайнощами, яким не вистачає гідних заходів моніторингу / резервного копіювання / автоматизації / ведення журналів, може бути корисно застосувати використання sudo на серверах. (Що обходить людей, які роблять sudo su -якнайшвидше після підключення, дозволяючи всі ваші наміри реєстрації того, що трапилося, втрачаються навіть без зловмисних намірів, як тільки більш ніж один користувач root має вхід у систему. Удачу змінити це через примусові процедури та поправляючи людей з драконом заходи недотримання правил. Життя завжди знаходить спосіб.)

    Але якщо у вас немає принаймні fail2ban, щоб захистити свої паролі (якщо такі є, особливо в системах, що стоять перед Інтернетом), плюс пам’ятайте про правильну обробку паролів (інструменти керування паролями, правила зберігання, ніяких головних паролів, поводження з ними працівника коливань ...) і є якась форма належного управління оновленнями для серверного флоту, щоб усі сервери регулярно були виправлені, ви, швидше за все, будете зламані в будь-який день, будь то зсередини або ззовні.

    І завжди sudoрелігійно використовуючи та застосовуючи його використання серед усіх людей, це не змінить вашу ймовірність отримати багато власності у такому випадку.


    Нарешті, справжня та диференційована відповідь, замість звичної мантри «ніколи цього не роби». +1 і спасибі за це.
    Андреас Х.

    0

    У кінцевому рахунку немає ніякої шкоди від запуску root. Це просто купа параноїків, які вважають, що перевстановити ОС неможливо. Аргумент "Хтось може поставити під загрозу програму ..", і що? якщо вони це роблять, то вони вже могли б зачинити ваш пароль, або просто все-таки відобразити запит на пароль для кореневого пароля, і ви надасте їм пароль. Здуйте свою систему, оскільки ви вибираєте все в / і видаляєте? ну добре, вийдіть із інсталятора та перевстановіть. На це потрібно менше 20 хвилин, випийте каву і похолодіть. Корінь добре, я запускаю корінь до тих пір, як я пам'ятаю, і ви знаєте, що це робить? Це робить встановлення пакунків менш головним болем. Вам не потрібно вводити корінний пароль кожні 5 хвилин, як зазвичай. Ви не можете зіткнутися з проблемами, намагаючись зберегти / редагувати файли конфігурації системи, оскільки вони ' лише повторні права доступу. Це просто набагато простіше і краще запустити як root.

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