Чому немає можливості для входу як root?


39

Чому Ubuntu не дозволяє користувачам GUI входити як root під час запуску системи, як адміністратор у Windows?

Чому вони обмежують нас увійти лише через термінал?


4
Також слід пам’ятати про «gksu», який дозволяє запускати графічні програми як корінь. Тобто "gksu nautlius"
Джеремі

1
Деякі дистрибутиви дозволяють вам увійти до X як root. CentOS6.2 - одна з них.
djangofan

Відповіді:


42

Тому що це не рекомендується робити, якщо ви точно не знаєте , що ви робите. Корінь - це суперпользователь, тобто він може робити все і все - він призначений лише для адміністративних завдань. Щоденні завдання можуть нести загрозу безпеці, яку БУДЕ експлуатуватися, якщо КОЖЕН (або велика частина користувачів) використовує root. Подумайте, що Windows - 99% проблем із шкідливим програмним забезпеченням та вірусами - це люди, які використовують облікові записи адміністратора для щоденних завдань.

Давайте розглянемо приклад.

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

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

Погляньте на http://everyjoe.com/technology/explain-why-not-log-on-as-root/ , це приємна стаття, яка може пояснити це краще, ніж я.

EDIT: ось ще одна http://ihazomgsecurityskillz.blogspot.nl/2010/09/running-as-root.html

EDIT2: ви завжди можете використовувати sudo commandабо gksu commandзапускати commandяк суперпользователь, обидва працюють з графічними утилітами та утилітами командного рядка. sudoОднак, як правило, використовується для CLI, і gksuце графічний пароль, який робить те саме.

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


1
Але чому Fedora допускає цю опцію при запуску?
Renjith G

5
Ubuntu розроблений так, щоб бути зручним для користувачів, і я б підозрював, що, забороняючи root, вони видаляють спокусу від звичайних користувачів (читайте: Linux newbies), що працюють як root.
Євгеній

Я тебе не зрозумів.
Renjith G

2
Мій коментар був трохи невірним. Скажімо, замість цього: забороняючи вхід у графічний корінь, він заважає людям запускатися як корінь, НІКОЛИ НЕ ЗНАЙТЕ, що вони роблять. Тобто, на мою думку, це слід дозволити лише досвідченим користувачам, які знають і розуміють усі ризики.
Євгеній

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

11

У стандартному Ubuntu rootвхід не дозволений ні з диспетчера входу в GDM (графічний), ні з текстової консолі (тобто тієї, яку ви отримаєте, якщо натиснути Ctrl+ Alt+ F1).

Для того , щоб виконати root(тобто адміністратор) операції ви повинні використовувати sudoкоманду в терміналі або будь-GUI еквіваленті цього: вони будуть питати ваш пароль , а потім виконати запитану операцію привілейованої (і тільки те , що один).

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

Приклад може допомогти уточнити. Припустимо, що ви хочете встановити нову послугу (демон) на свій апарат; це порівняно нове, і вам потрібно прочитати про нього та як налаштувати його під свої потреби. Ви в кінцевому підсумку переглянете Інтернет, щоб знайти інформацію, приклади конфігурацій тощо. Можливо, будете мати чат IRC, щоб запитати більше інформації - ніщо з цього не вимагає rootповноважень! Зрештою, вам потрібен лише привілейований доступ для двох операцій:

  1. встановити нову програму (тобто sudo apt-get install ...) та
  2. редагуйте конфігурацію за замовчуванням

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

Установка за замовчуванням Ubuntu йде в цьому напрямку; якби ви використовували rootлогін, замість цього ви б закінчились серфінгом в Інтернеті, роблячи IRC (і, можливо, всі інші речі, які кожен робить одночасно) з rootоблікового запису, тим самим непотрібно піддаючи систему загрозі.

Оновлення: Для вашого прикладу компілятора я б поступив так:

  1. Увійдіть до вузла через SSH як ваш звичайний користувач та з іншого вузла Ubuntu або GNU / Linux, де працює графічний дисплей X11. Обов’язково ввімкнено переадресацію X11 через SSH:

    ssh -X myuser@remotemachine.example.org
    
  2. У запиті shell / SSH видайте команду:

    sudo /path/to/the/compiler/install/program
    

    Це запустить інсталятор компілятора з rootпривілеями та отримати доступ (за допомогою SSH-переадресації) графічний дисплей перед вами.


Гаразд. Припустимо, я використовую одну машину Linux (маю 10 користувачів, підключених через шпаклівку). Я хочу встановити одне програмне забезпечення (наприклад: один компілятор, також потрібно встановити змінні середовища для того ж), що і root, щоб бути доступним для всіх користувачів. Але інсталятор працює лише в режимі графічного інтерфейсу і не встановлює командного рядка, і він запускається лише з кореневим входом. Як я можу керувати установкою? Я зіткнувся з цією ситуацією під час встановлення arm-linux-gcc в моєму ubuntu, але я успішно встановив те саме в моїй машині fedora (версія RedHat shrike)
Renjith G

@ Renjit G: ну це хороше питання самостійно, чому б ти просто не задав це питання?
Ріккардо Муррі

1
@Renjit G: Я хотів запропонувати вам задати нове запитання. Задати багато конкретних питань краще, ніж задавати одне багатогранне, тому що воно дозволяє детально і точні відповіді. Відредагувавши поточне запитання, відповіді, які ви вже отримали, виглядають так, ніби вони відповідають лише на половину вашого питання ...
Ріккардо Муррі

Дякую Муррі. Я, безумовно, дотримуватись цього лише з моїх наступних публікацій.
Renjith G

1
Враховуючи такий компілятор, я думаю, що більшості з нас було б цікаво, який це компілятор. Для будь-якого програмного забезпечення, що поширюється через джерела APT або автономні файли .deb, достатньо встановити через командний рядок за допомогою "sudo" (так, навіть для всіх користувачів). Також можна встановити такі файли з GUI для всіх користувачів, не використовуючи root. Підказка пароля GUI, яку ви отримуєте, еквівалент "sudo".
шкодить

8

Міркування щодо використання судо в Ubuntu можна знайти тут . Якщо вам коли-небудь потрібен швидкий спосіб "вкоренитися", я використовую sudo -sабо sudo -i.


9
Для уточнення я вважаю, що sudo -s створює кореневий сеанс як користувач, тоді як sudo -i створює кореневий сеанс як користувач root. Найпростіший спосіб визначити різницю - це видати команду, потім зробіть "echo $ HOME", щоб побачити, яке середовище використовується. Або "cd ~", тоді "pwd" також працюватиме.
Scaine

6

Окрім гірських попереджень, використовуючи root, ви можете увімкнути кореневий вхід, увійшовши та виконуючи наступні дії з терміналу:

sudo passwd

Це спочатку запропонує вам ввести пароль, а потім попросить змінити пароль UNIX. Введений пароль буде для rootоблікового запису.

У Ubuntu Wiki є чудова стаття про глибину кореня та судо в межах Ubuntu - застереження та підводні камені.


5

Тут є два питання. По-перше, чому в Ubuntu за замовчуванням вимкнено кореневий вхід? Це вирішено декількома публікаціями тут.

Друге питання: чому графічні кореневі входи особливо зневажені?

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

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

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

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

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

Крім того, за винятком інструментів графічного адміністрування, призначених для запуску як root з gksu / gksudo / kdesudo, більшість графічних програм не призначені для запуску як root. Оскільки вони не проходять тестування в цьому режимі, вони можуть вийти з ладу або поводитися нерівномірно (що було б особливо погано, оскільки вони працюють як root ).

Нарешті, навіть деякі інструменти графічного адміністрування, якusers-admin , наприклад , не вдасться виконати як root, оскільки вони розраховують виконувати звичайні користувачі та виконувати дії як root (навіть ніколи не виконуючись як root) за допомогою PolicyKit.


4

Відкрийте термінал ( Ctrl+ Alt+ Tабо домашня тире> Інші додатки> Встановлено (розгорнути)> Термінал).

АКТИВУВАТИ РОЗЧИНОВИЙ РАХОТ

У термінальному типі або вставці sudo passwd root. Введіть свій звичайний пароль для входу (якщо вас вимагають), тоді вам запропонують ввести новий rootпароль і підтвердити його.

ДОДАТИ НОВУ ЗАПОВІДУ ВЛІГУНЯ, ЩО ВІДПОВІДАЄТЬСЯ ВПРОВАДЖЕННЯ КОРОТКУ ТА ЇЇ ПАРОЛЯ

У термінальному типі або вставці. gksudo gedit /etc/lightdm/lightdm.conf. Це відкриває вікно редактора графічного тексту, де ви можете редагувати файл конфігурації для екрана входу.

Додайте рядок greeter-show-manual-login=trueу нижній частині файлу.

Тепер файл повинен читати так:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true

Збережіть lightdm.confфайл та вийдіть із gedit.

Перезавантажте Ubuntu 12.04, і ви побачите нове вікно «Логін» (замінює попереднє вікно «Інше»), яке дозволяє вводити ім’я користувача та пароль. Введіть rootім’я користувача, а потім введіть пароль, призначений для кореневого облікового запису.

Я сподіваюся, що це допомагає іншим, хто потребує / бажає rootдоступу.


2

що стосується ubuntu 12.04 LTS, ви можете зробити це за допомогою привілею root:

echo "greeter-hide-users=true" >> /etc/lightdm/lightdm.conf

Потім вам запропонують ввести як ім’я користувача, так і пароль для графічного входу. Я припускаю, що ви вже встановили пароль для root :)

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


1

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

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


хе-хе. ... "будь-які зміни, які я вношу тут, є більш масштабними".
emf

1

Хоча ви не можете ввійти безпосередньо як root (з причин, які інші вже добре пояснили), ви можете запускати програми GUI як root. Наприклад, Система → Адміністрація → Synaptic Package Manager - це графічна програма, яка працює як root.

Щоб запустити програму як корінь (або текстову програму, або програму GUI), просто використовуйте одну з цих команд:

sudo name-of-the-application
gksu name-of-the-application

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


1
Різниця між sudoі gksuбільш істотна, ніж там, де ви вводите свій пароль. gksuє кращим для програм GUI, а sudoдля командного рядка дивіться тут і тут
Warren Hill

1

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


0

Додаткова примітка: Ubuntu не дозволяє користувачам GUI входити в систему як корінь, оскільки Ubuntu заважає вам випадково видалити або видалити важливі файли за допомогою програм GUI (наприклад, nautilus).

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

Він заснований на правилі Debian.


що означає команда gksu?
Renjith G

1
man gksu: gksu - GTK + frontend for su and sudo
squallbayu

1
Вибачте. Придбайте, недостатньо зрозуміло для мене
Renjith G

Я маю на увазі "gksu" означає GTK + передній план для су і судо.
squallbayu

1
так, ви праві. спробуйте 'gksu nautilus' в терміналі. З'явиться Nautilus з кореневими привілеями.
squallbayu

0

Зважаючи на те, що немає жодних вагомих причин для входу в систему як корінь , я б здогадався, що різниця між RH (дозволити кореневий вхід) та ubuntu (робити все, використовуючи sudo / gksu) - питання переваги.

Що стосується іншої частини вашого запитання, ви повинні мати можливість запустити свою графічну установку, увійшовши як звичайний користувач, натискаючи ALT-F2та входячи gksu. У діалоговому вікні, що виходить, просто введіть команду, яка запускає ваш інсталятор.


0

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


0

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

Хтось, хто може увійти як root, може бути дуже поганою з точки зору безпеки.

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