Чи є спосіб перестати писати «судо» для кожної дрібниці в Linux?


59

Невдовзі я буду робити досить велику роботу PHP, і мені цікаво вивчити RoR, тому я встановив Linux Mint 12 у свій VirtualBox.

На сьогоднішній день найбільш перекрутним аспектом комутатора була робота з дозволами Linux. Здається, я не можу зробити нічого корисного (як, скажімо, скопіювати тарбол Symfony2 з мого каталогу завантажень до мого кореня документа та витягнути його), не представляючи корінь через sudo.

Чи є простий спосіб сказати Linux, щоб він надавав мені безперебійний доступ до певних каталогів, не просто відкриваючи всі свої дозволи?


1
Багато перегортання матимуть групу, уповноважену редагувати конфігурацію для різних системних утиліт. Поставте себе в ту групу і відкрийте нову оболонку.
dmckee

Було б краще вказати корінь документа на щось у моєму домашньому каталозі?

3
"Судо" - одна з тих смішних команд, яку нові користувачі Linux занадто часто використовують і зловживають. Часто я буду бачити підручники в Інтернеті, де 15 команд поспіль будуть використовувати sudo? У звичайних ситуаціях вам не потрібно мати спеціальних посвідчень під час входу в систему як звичайний користувач (рекомендується). Я був у компанії, де все, що вони робили, використовував судо. Коли я намагався заборонити це (з міркувань безпеки), вони скаржилися. Розглянувши криптовалютний файл конфігурації sudo, я побачив недолік (як завжди), який дозволив мені «викорінити» систему від цього постійного користувача. Судо надзвичайно небезпечно !!
Jeach

Відповіді:


77

На думку мені спадають два варіанти:

  1. Власний каталог, який ви хочете, використовуючи chown:

    sudo chown your_username directory 
    

    (замініть ім’я_користувача своїм іменем користувача та каталогом потрібним каталогом.)

  2. Інша річ, яку ви можете зробити, - це працювати в корені до тих пір, поки ви ЗНАЄМО, що ви робите . Для використання root виконайте такі дії:

    sudo -s
    

    і тоді ви можете робити що завгодно, не вводячи sudoперед кожною командою.


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

16

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

Якщо є файли, які ви хочете розмістити на своєму веб-сервері, працюйте як власний користувач, а потім використовуйте sudoдля того, щоб перекинути файли на місце у веб-сервісі вашої файлової системи. Зазвичай це виконується за допомогою сценарію інсталяції, і ви запускаєте щось на кшталт sudo -u webmaster install-webserver-filesабо краще sudo -u webmaster git update(або систему керування версіями на ваш вибір).

Якщо ви працюєте на сервері розробки та хочете, щоб ваші файли були доступні миттєво, створіть каталог у зоні веб-сервера та зробіть його власником або принаймні для запису. Після цієї одноразової операції ( sudo chown …або sudo -u webmaster setfacl …) вам не знадобляться підвищені привілеї для щоденних операцій.

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


3

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


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

Начебто ви пов’язали це з Windows.
LeWoody

3

Завжди моєю ідеологією було те, що, як користувач, ти можеш робити все, що завгодно, на Linux і на все інше, завжди є sudo. sudoдозволяє виконати кілька речей, як деякі інші користувачі, найчастіше це rootстосується системного адміністрування. sudoбув більшим ресурсом переваги - делегувати деякі мої звичайні завдання та привілеї як (root) користувача деяким іншим та допомагати краще керувати моїм часом та іншим часом, не піднімаючи привілеї більше, ніж потрібно. У той же час, саме моя довіра до них зберігає свої записи вsudoersфайл конфігурації. Я не впевнений, чи це може бути пов’язано, але що я можу сказати, це те, що sudo дає вам кращу перспективу безпеки того, хто все і що вони можуть зробити зі своїми надійними привілеями. Навіть якщо щось піде не так, вони несуть відповідальність. (Я завжди можу зробити якийсь підлий пік з інформацією про журнал sudoers, щоб знайти також винуватців). Мої хлопці завжди висловлювали стурбованість мною, що їм доведеться набирати судо для всього, що хотіли зробити з підвищеними привілеями в середовищі Linux. Тут я знайшов те саме питання.

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

Розглядаючи доступні рішення RBAC та його реалізацію у світі Linux, я натрапив на все

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

і хоча є деякі інші реалізації, я б розглядав їх у верхньому порядку списку. Впровадження RBAC - це велика робота в організації, особливо коли користувачів багато. RBAC здасться більш широким рішенням в однорідних умовах. Однак, якщо в мережі є неоднорідні установки Unix, а користувацька база даних є загальною, то це, можливо, може вийти з ладу. Оскільки SELinux не масштабується / реалізується на Solaris, а інструменти RBAC / pfexec не реалізуються в Linux. Існують різні підходи для виконання однієї речі. Наприклад: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Різноманітні мережі можуть не підтримувати цей підхід (однак openrbac можна вважати загальним підходом до реалізації), як sudoers - це єдиний хост-підхід або не здатний до централізованої конфігурації в мережі / домені./etc/sudoersїх потрібно синхронізувати щоразу, коли є зміни. Більш того, під час роботи з файлом sudoers є вимога до бази знань, потрібно розуміти мову політики конфігурації sudoers, щоб не робити помилок і допускати будь-які гранти. RBAC може пропонувати централізований підхід до певної міри, тоді як профілі безпеки можуть бути загальними, додавання / видалення користувача з наданої ролі може здійснюватися з одного місця (тобто місця, де зберігається інформація користувача / passwd / групи домен, як LDAP, NIS або AD). Це також неявно вимагатиме розуміння команд, необхідних для роботи в базі даних RBAC, таких як smexec, smmultiuser, їх мало.

Судо може запропонувати більше кросплатформенний підхід, але все-таки він працює на всіх платформах Unix / подібних платформах, які пропонують налаштування функції. І те, sudoі RBACінше вдасться надати некорінним користувачам певні привілеї, які можна зробити за допомогою надання самого rootпароля. Судо може надати більш тонкий / детальний підхід на аргументах командного рядка, який можна використовувати під час виконання команд і обмежуватися суто тим, яку команду з аргументами можна виконувати з підвищеними привілеями. Хоча RBAC може обмежувати використання команд або двійкових файлів, встановлених, але не мати контролю над аргументами командного рядка. Аудит набагато кращий і побудований в середовищі RBAC, тоді якsudo, це залежить від конфігурації та а також обмежень безпеки, що приймаються (як, наприклад, не надаючи оболонку, а особливо господарям дозволено без будь-яких проблем увійти до інших хостів). Це лише деякі відмінності, які я міг би навести, і в мене особисто є схильність використовувати судо, ніж RBAC, хоча, маючи вказані обмеження, я міг би прийти до виконання певної роботи. Поки RBAC не вирішить усі проблеми для кращої переваги судо, я не думаю, що судо не піде назовні просто.


1

Я б порушив корінь документа там, де ви працюєте, щоб у вас був повний доступ до нього.

Щоб уникнути необхідності вводити sudo кожен раз, коли ви встановлюєте Gem, дотримуйтесь цієї статті тут: http://forums.site5.com/showthread.php?t=11954

Я також настійно рекомендую встановлювати RVM для управління версіями Ruby та Rails. http://beginrescueend.com/

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


Знав про rvm, але дякую за посилання на форумі.
Основні постановки

0

Виконайте команду.

sudo su root

Тепер ви зможете запускати команди як користувач root. Будь обережний! Будь-яка команда, що виконується, буде користувачем root. Ви можете серйозно зіпсувати речі, якщо не будете обережні.

Або ви змінюєте дозволи довідника, щоб дозволити користувачеві зберігати та редагувати файли.


4
Чому б не просто sudo -s?
sarnold

1
Або sudo -iяк це імітує як оболонку входу. Це може бути трохи ближче до локального локального кореневого входу, ніж виконання bash чи іншої оболонки через sudo.
Бастіан Ебелінг

1
чому не просто su? Що це за одержимість судо? Вам не потрібно судо. Колись.
Оріон

2
afaik, його неможливо просто використовувати, suякщо пароль root невідомий. додавання користувача до судерів та біг sudo suдозволяє користувачеві використовувати наявний і відомий пароль користувача для ескалації
Лука

0

Відредагуйте / etc / passwd файл та надайте root права користувачеві "yourUserName", змінивши ідентифікатори користувача та групи на UID 0 та GID 0:

yourUserName: 0: 0 :: / home / yourUserName: / bin / sh


2
Не рекомендуйте кошмари безпеки! Це найгірша практика.
контрмоде

Я використовую це рішення для мого малинового пі, у якому я не маю інших облікових записів користувачів, і його підключено до моєї домашньої мережі
Ufuk özkanlı

0

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


-1

user @ server: ~ $ sudo passwd root
[sudo] пароль для користувача:
Введіть новий пароль UNIX:
Знову введіть новий пароль UNIX:
passwd: пароль успішно оновлений
користувач @ сервер: ~ $ su
Пароль:
root @ server: / home / user #

Це підказка "#" не є предметом краси?

Я використовую "sudo" один раз лише для досягнення здатності

user @ server: ~ $ su
Пароль:
root @ server: / home / user #

за життя сервера.

Щоб знову зробити це безпечним,

root @ server: / home / user # вихід
вихід
користувача @ сервер: ~ $

Сисадміни робили це вже роками, коли "судо" не було частиною тренда молікодиків.

Коли ви це робите, на ваших обов'язках дбати, а не моя.

Ян


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