Робота з можливостями Linux

Вступ

Можливості Linux — це спеціальні атрибути в ядрі Linux, які надають процесам і двійковим виконуваним файлам конкретні привілеї, які зазвичай зарезервовані для процесів, ефективний ідентифікатор користувача яких дорівнює 0 (Користувач root і лише користувач root мають UID 0).

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

Передумови

  • Система Linux, до якої у вас є root-доступ (або через користувача root, або користувача з доступом sudo).

Пояснення

По суті, мета можливостей полягає в тому, щоб розділити потужність «root» на конкретні привілеї, щоб, якщо процес або двійковий файл, який має одну або більше можливостей, експлуатується, потенційна шкода буде обмежена в порівнянні з тим самим процесом, що виконується як root.

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

Можливості, реалізовані в Linux, численні, і багато з них було додано з моменту їх початкового випуску. Деякі з них такі:

  • CAP_CHOWN: Змініть ідентифікатор користувача та ідентифікатор групи файлів
  • CAP_DAC_OVERRIDE: Перевизначити DAC (дискреційний контроль доступу). Наприклад, vto обійти перевірку дозволу на читання/запис/виконання.
  • CAP_KILL: обійти перевірки дозволів для надсилання сигналів процесам.
  • CAP_SYS_NICE: Підвищити якість процесів ( Пояснення приємності можна знайти тут )
  • CAP_SYS_TIME: установка системного та апаратного годинника реального часу

Щоб отримати повний список, запустіть man 7 capabilities.

Можливості призначаються наборами, а саме «дозволені», «успадковані», «ефективні» та «оточені» для потоків і «дозволені», «успадковані» та «ефективні» для файлів. Ці набори визначають різні складні поведінки, їх повне пояснення виходить за рамки цієї статті.

Під час встановлення можливостей у файлі ми майже завжди будемо використовувати, наприклад, «дозволено» та «ефективно» CAP_DAC_OVERRIDE+ep. Зверніть увагу на +ep, що позначає вищезгадані набори.

Робота з можливостями файлів

Необхідні пакети

Є два основні інструменти, getcapі setcapякі відповідно можуть переглядати і встановлювати ці атрибути.

  • У Debian та Ubuntu ці інструменти надаються libcap2-binпакетом, який можна встановити за допомогою:apt install libcap2-bin
  • Для CentOS і Fedora libcapпотрібен пакет:yum install libcap
  • У Arch Linux вони також надаються libcap:pacman -S libcap

Можливості читання

Щоб переглянути, чи має файл якийсь набір можливостей, ви можете просто запустити getcap /full/path/to/binary, наприклад:

 root@demo:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 root@demo:~# getcap /usr/bin/rcp
 /usr/bin/rcp = cap_net_bind_service+ep

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

getcap -r /

У зв’язку з тим, що віртуальні файлові системи (наприклад, /proc) не підтримують ці операції, наведена вище команда призведе до тисяч помилок, тому для більш чистого виводу використовуйте наступне:

getcap -r / 2>/dev/null 

Призначення та видалення можливостей

Щоб встановити певну можливість для файлу, використовуйте setcap "capability_string" /path/to/file.

Щоб видалити всі можливості з файлу, використовуйте setcap -r /path/to/file.

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

root@demo:~# touch testfile
root@demo:~# getcap testfile

Друга команда не виводить результат, тобто цей файл не має жодних можливостей.

Далі встановіть для файлу можливість:

root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep

"CAP_CHOWN+ep" було використано як приклад, але будь-який інший можна призначити таким чином.

Тепер видаліть усі можливості з testfile:

root@demo:~# setcap -r testfile
root@demo:~# getcap testfile

Знову не буде виводу, оскільки "CAP_CHOWN+ep" видалено.

Висновок

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

Залишити коментар

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

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

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

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

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

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

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

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

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

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

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

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

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

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

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше