Чи погана практика встановлювати оболонку root на щось інше, ніж за замовчуванням?


16

Колись мій друг (який є досвідченим користувачем Unix / Linux) сказав мені, що встановлення оболонки root на щось інше, ніж sh (тобто bash або zsh), може створити проблеми, тому що деякі сценарії можуть припускати, що оболонка sh і робити щось дивне .

Однак я думаю, що для Ubuntu встановлено базову кореневу оболонку за замовчуванням, і Gentoo також використовує bash. Може хтось пориває міф?

Відповіді:


12

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

Я б радив створити обліковий запис toor(uid 0, gid 0) з нестандартною оболонкою, поки залишився корінь із оболонкою за замовчуванням.


Це сталося зі мною, коли я модернізував з FBSD 7.2 до 8.0 і забув відновити bash. Я завантажився в єдиному користувальницькому режимі, щоб виправити, але він працював лише тому, що /bin/shвсе ще був пов'язаний FBSDз вилкою 's bourneта не bash.
gvkv

просто щоб зробити речі зрозумілішими, якщо я встановлю скажу zshі якось /usrпошкоджений, у мене виникнуть проблеми? але моя система є /bin/shвказуючи на /bin/bashі bashсебе, чому б не shбути порушені?
phunehehe

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

1
zshне повинно бути, /usr/bin/якщо це було встановлено неправильно. всі снаряди повинні бути в/bin
ксенотерацид

1
@xenoterracide: zsh у Gentoo є, /binале зберігає деякі файли /usr/share. Також я чітко заявив, що проблема полягає у вході в систему під час завантаження (коли якась служба виходить з ладу).
Maciej Piechotka

7

Не повинно бути проблемою.

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

Єдина програма, про яку я можу придумати, яка використовує інформацію оболонки облікового запису користувача (окрім процесу входу) - це Procmail. Дійсно смішно, якщо ваш користувач встановив як shell / bin / false на поштовому сервері ... Але зазвичай ви не виконуєте procmail як root.

Іншим кандидатом були б рядки в корені crontab. Я не знаю, яка політика crond - яку оболонку використовувати.


$ SHELL зазвичай встановлюється в / bin / sh крондамоном при запуску.
ехокс

3

Сценарії, написані для оболонки Bourne, більшу частину часу без проблем працюватимуть проти BASH або ZSH або $ foo.

У багатьох системах Linux не встановлено оригінальної програми, натомість це часто посилання на / bin / bash.

Якщо деякі сценарії просто "припускають", що оболонка явно sh, їх слід переписати. Є механізм shebang, щоб вибрати інтерпретатор, який потребує вашого сценарію. Якщо його sh, скрипт повинен містити #!/bin/shяк перший рядок.

Ваша настройка оболонки за замовчуванням не повинна відповідати цьому контексту.


2

Я не думаю, що зміна оболонки кореня не спричинить жодних проблем. Здається, я пам’ятаю деякі уніоси (можливо, деякі варіанти BSD?), Які мають tcsh як оболонку за замовчуванням для root.

Кореневі реєстрації все одно рідкісні. Як правило, ви повинні увійти у свій власний обліковий запис, а потім su або sudo до root.

Важливо те, що оболонка кореня повинна мати якомога менше залежностей, щоб бути корисною в контексті відновлення системи. Наприклад, хороша ідея мати статично пов'язану кореневу оболонку; деякі дистрибутиви постачають статично пов'язану версію bash або zsh або sash (оболонку з багатьма вбудованими стандартними утилітами). Однак це не так важливо, якщо ваша система може бути легко завантажена з рятувального компакт-диска або USB-накопичувача.


З причини залежності я думаю, що має сенс залишити оболонку такою, щоб велика модифікація системи (як-от оновлення) не зіпсувала речі. Я погоджуюся, що це легко виправити за допомогою живого компакт-диска чи USB, але в першу чергу я не повинен це виправляти.
phunehehe

1

Оболонка входу користувача не впливає на процес завантаження. Ви можете встановити цю оболонку на все, що завгодно. Не всі системи мають баш і вони працюють чудово. Крім того, якщо це /usr/bin/zshбуло встановлено неправильно, всі оболонки системи повинні бути в /bin. Однак ви не повинні змінювати, /bin/shщоб вказати на щось інше, ніж за замовчуванням (якщо ви не знаєте, що ви робите), як багато сценаріїв, #!/bin/shякі, як правило, вказують на баш, коли вони повинні бути, #!/bin/bashоскільки вони використовують башизми та іншу поведінку, яка не буде робота над zshабо dash.


ой вибачте, що я помилився, насправді на моєму комп’ютері обидва bashі zshзнаходяться/bin
phunehehe

0

У мене bash як оболонка для root. Я деякий час використовував zsh , але потім повернувся до bash . Яку оболонку ви використовуєте, не має великого значення.

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


0

Відносно Solaris / illumos Solaris Root Shell Mini-FAQ Згадка

Деякі сисадміни все ще рекомендують не змінювати кореневу оболонку в
системах Solaris. Запитайте, чому і вам можуть сказати, що root потребує
статично пов'язаної оболонки, яка не залежить від динамічних
бібліотек під / usr / lib. Це було справді в минулому, але це не
обов'язково так. При правильному налаштуванні Solaris, як і будь-яка інша версія Unix, може підтримувати будь-яку оболонку, яку ви визначаєте, для root або будь-якого іншого облікового запису.

Так, так, якщо ви використовуєте Solaris або ілюмінатори, добре використовувати оболонки, крім них sh.

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