У Linux існує потужна система керування дозволами доступу до файлів та каталогів, що надає користувачам повний контроль над тим, хто має право на доступ до їх даних. Ця важлива функція гарантує безпеку і конфіденційність інформації. В нашому повному посібнику ми покажемо вам, як ефективно управляти дозволами доступу до файлів та каталогів у Linux. Перш за все, ви розберетесь з три основними правами доступу: читання, запису та виконання. Кожен файл і каталог має свої дозволи, які вказують, хто може виконувати ці дії. Розуміння цих прав і їх впливу на доступ до файлів є ключовим кроком у керуванні дозволами. Для зміни дозволів доступу в Linux використовується команда “chmod”. Ця команда дозволяє змінювати дозволи для власника файлу, групи та інших користувачів.
В Linux ви маєте повний контроль над дозволами доступу до файлів та каталогів, і ви можете легко надавати або забирати права на читання, запис та виконання за потребою. Команда chmod дозволяє швидко встановлювати дозволи за допомогою режимів доступу, що забезпечує зручність та ефективність. Ви також можете використовувати розширені списки керування доступом (ACL), які надають точніші налаштування для окремих користувачів або груп. З командою setfacl ви можете змінювати ACL, що забезпечує більшу гнучкість та детальний контроль. Керування дозволами доступу – важливий аспект забезпечення безпеки та конфіденційності в Linux. Наш повний посібник допоможе вам зрозуміти дозволи, використовувати команду chmod та впроваджувати ACL для точного контролю доступу до файлів та каталогів відповідно до вашої потреби.
Як відомо, в Linux користувач root є всемогутнім. Користувач root може робити в системі майже все. Інші користувачі системи мають більш обмежені можливості та дозволи і майже ніколи не мають доступу, який має користувач root.
Ці інші користувачі часто об’єднуються в групи, які часто виконують схожі функції. У збутовій організації ці групи можуть бути фінансовими, технічними, збутовими та ін. В ІТ-середовищі ці групи можуть включати розробників, мережевих адміністраторів і адміністраторів баз даних. Ідея полягає в тому, щоб об’єднати людей зі схожими потребами у відповідну авторизовану групу; Тоді кожен член групи успадковує дозволи групи. Це головним чином для полегшення керування дозволами та, отже, безпеки. За замовчуванням користувач root є частиною кореневої групи. Кожен новий користувач системи має бути доданий до групи, щоб успадкувати дозволи цієї групи.
Кожен файл і папка повинні мати певний рівень дозволів для різних облікових даних, які їх використовують. Є три рівні дозволу: r Дозвіл на читання. Це лише надає дозвіл на відкриття та перегляд файлу. w Написати авторизацію. Це дозволяє користувачеві переглядати та редагувати файл.
x Дозвіл на виконання. Це дозволяє користувачеві запускати файл (але не обов’язково переглядати чи редагувати файл). Таким чином користувач root може надати користувачеві певний рівень дозволів залежно від того, для якої мети йому потрібен файл. Коли файл створюється, користувач, який створив його, зазвичай є власником файлу, а група власників є поточною групою користувачів.
Власник файлу може надати йому різні привілеї доступу. Подивіться, як змінити дозволи, щоб надати право власності окремим користувачам і групам.
Щоб передати право власності на файл іншому користувачеві, щоб він мав можливість керувати дозволами, ми можемо скористатися командою chown (або змінити власника):
kali >chown ➊bob ➋/tmp/bobsfile
Тут ми даємо команду, ім’я користувача, якому ми надаємо право власності, а потім розташування та ім’я відповідного файлу. Ця команда надає обліковий запис користувача для Bob ➊ право власності на bobsfile ➋.
Щоб передати право власності на файл від однієї групи до іншої, ми можемо використати команду chgrp (або змінити групу). Хакери частіше працюють поодинці, ніж у командах, але над проектом нерідко працюють кілька хакерів або пентестерів, і в цьому випадку необхідно використовувати команди.
Наприклад, у вас може бути група тестувальників і група членів групи безпеки, які працюють над одним проектом. Пентестери в цьому прикладі є кореневою групою, тобто вони мають повні дозволи та доступ. Кореневій групі потрібен доступ до інструментів злому, тоді як групі захисту потрібен доступ лише до інструментів безпеки, таких як система виявлення вторгнень (IDS). Скажімо, команда root завантажує та встановлює програму під назвою newIDS; Коренева група має повторно належати групі безпеки, щоб група безпеки могла використовувати її за бажанням.
Для цього коренева група просто введе таку команду:
kali >chgrp ➊security ➋newIDS
Ця команда передає групу безпеки ➊ право власності на newIDS ➋.
Тепер потрібно знати, як перевірити, чи спрацювали ці асигнування. Ви зробите це, перевіривши дозволи файлу.
kali >ls–l/usr/share/hashcat total 32952 ➊ ➋ ➌ ➍ ➎ ➏ ➐ drwxrxrx 5 root root 4096 Dec 5 10:47 charsets rwrr 1 root root 33685504 June 28 2018 hashcat.hcstat rwrr 1 root root 33685504 June 28 2018 hashcat.hctune drwxr xrx 2 root root 4096 Dec 5 10:47 masks drwxr xrx 2 root root 4096 Dec 5 10:47 OpenCL drwxr xrx 3 root root 4096 Dec 5 10:47 rules Listing 51: Checking a file’s permissions with the long listing command
По кожному рядку ми отримуємо інформацію про:
➊ Тип файлу
➋ Дозволи на файл для власника, груп та користувачів відповідно
➌ Кількість посилань (Ця тема виходить за рамки книги.)
➍ Власник файлу
➎ Розмір файлу в байтах
➏ Коли файл був створений або востаннє змінений
➐ Ім’я файлу
А поки що зосередимося на, здавалося б, заплутаних рядках літер і тире вздовж лівого краю кожного рядка. Вони повідомляють нам, чи є елемент файлом чи папкою. Перший символ вказує на тип файлу, де d означає каталог, а тире (–) означає файл.
Це два найпоширеніші типи файлів. Наступний розділ визначає права доступу до файлів. Існує три набори символів, які складаються з комбінацій читання (r), запису (w) і виконання (x) у такому порядку. Перший набір представляє права власника; по-друге, хто належить до групи; і, нарешті, всі інші користувачі.
Незалежно від того, на яку групу з трьох літер ви дивитеся, якщо ви бачите першу r, цей користувач або група користувачів має дозвіл відкривати та читати цей файл або каталог. Посередині W означає, що вони можуть писати (змінювати) файл або каталог, а x в кінці означає, що вони можуть виконувати (або виконувати) файл або каталог. Якщо r, w або x замінено на дефіс (-), відповідний дозвіл не буде надано. Зауважте, що користувачі можуть мати дозвіл лише на запуск двійкових файлів або сценаріїв.
Давайте візьмемо третій рядок виводу в лістингу 51 як приклад:
Кореневий корінь rwrr 1 33685504 28 червня 2018 року hashcat.hcstat
Файл називається, як ми знаємо в правому кінці рядка, hashcat.hcstat. Спочатку – (вказуючи, що це файл), дозвіл rw – повідомляє нам, що власник має дозволи на читання та запис, але не має дозволів на виконання. Наступний набір дозволів (r–) представляє дозволи групи та вказує, що група має дозволи на читання, але не має дозволів на запис або виконання.
І, нарешті, ми бачимо, що решта користувачів також мають дозволи лише на читання (r–). Ці права не є фіксованими. Як корінь або власник файлу ви можете редагувати їх. Тоді ми це зробимо.
Ми можемо використовувати команду Linux chmod (або змінити режим) для зміни дозволів. Лише кореневий користувач або власник файлу може змінювати дозволи.
У цьому розділі ми використовуємо chmod для зміни дозволів на hashcat.hcstat двома різними методами. Спочатку ми використовуємо числове представлення дозволів, а потім використовуємо символічне представлення.
Ми можемо використовувати абревіатури для позначення дозволів, використовуючи число для позначення набору дозволів rwx. Як і все, що лежить в основі операційної системи, дозволи виражаються у двійковому вигляді, тому перемикачі ON і OFF представлені відповідно 1 і 0. Ви можете розглядати дозволи rwx як три перемикачі ON/OFF, тому, коли всі дозволи надано, це дорівнює 111 у двійковому форматі.
Подібний двійковий набір потім легко представити однією цифрою, перетворивши її на вісімкову, восьмизначну систему числення, яка починається з 0 і закінчується на 7. Вісімкова цифра представляє набір із трьох двійкових цифр, що означає, що ми можемо представити набір rwx як одну цифру. У таблиці 51 наведено всі можливі комбінації дозволів та їх вісімкове та двійкове представлення.
Таблиця 51: Вісімкове та двійкове представлення дозволів
Використовуючи цю інформацію, давайте розглянемо кілька прикладів. По-перше, якщо ми хочемо встановити лише дозвіл на читання, ми можемо звернутися до таблиці 51 і знайти значення для читання:
r w x 4
Далі, якщо ми хочемо встановити дозвіл на wx, ми могли б використовувати ту саму методологію і шукати, що встановлює w, а що x:
r w x 2 1
Зверніть увагу в таблиці 51, що вісімкове представлення для -wx дорівнює 3, що не так випадково виявляється тим же значенням, яке ми отримуємо, коли складаємо два значення для установки w і x окремо: 2 + 1 = 3. Нарешті, коли ввімкнуто всі три дозволи, це виглядає так:
r w x 4 2 1
А 4 + 2 + 1 = 7. Тут ми бачимо, що в Linux, коли всі перемикачі дозволів включені, вони представлені вісімковим еквівалентом 7.
Отже, якби ми хотіли представити всі дозволи для власника, групи та всіх користувачів, ми могли б написати це наступним чином:
7 7 7
Ось тут на допомогу приходить ярлик. Передавши chmod три вісімкові цифри (по одній для кожного набору rwx), а потім ім’я файлу, ми можемо змінити дозволи для цього файлу для кожного типу користувачів. Введіть у командний рядок наступне:
kali >chmod 774 hashcat.hcstat
Подивившись на таблицю 51, ми бачимо, що ця заява дає власнику всі дозволи, групі всі дозволи, а всім іншим (іншим) тільки дозвіл на читання.
Тепер ми можемо побачити, чи змінилися ці дозволи, запустивши ls -l у каталозі та подивившись на рядок hashcat.hcstat. Перейдіть до каталогу та запустіть цю команду зараз:
kali >ls-l total 32952 drwxrxrx 5 root root 4096 Dec 5 10:47 charsets ➊ rwxrwxr 1 root root 33685504 June 28 2018 hashcat.hcstat rwrr 1 root root 33685504 June 28 2018 hashcat.hctune drwxr xrx 2 root root 4096 Dec 5 10:47 masks drwxr xrx 2 root root 4096 Dec 5 10:47 OpenCL drwxr xrx 3 root root 4096 Dec 5 10:47 rule
Ви повинні побачити -rwxrwxr– у лівій частині рядка hashcat.hcstat ➊. Це підтверджує, що виклик chmod успішно змінив дозволи на файл, щоб дати як власнику, так і групі можливість виконати файл.
Хоча числовий метод є, ймовірно, найпоширенішим способом зміни дозволів у Linux, деякі люди вважають метод символічного chmod більш інтуїтивно зрозумілим – обидва методи працюють однаково добре, тому знайдіть той, який вам підходить. Символічний метод часто називають синтаксисом UGO, що означає користувач (або власник), група та інші.
Синтаксис UGO дуже простий. Введіть chmod, а потім ім’я користувача, для якого ви хочете змінити дозволи, надайте u користувачам, g групам або o іншим, а потім один із трьох операторів:
– Видалення дозволу
+ Додавання дозволу
= Установлення дозволу
Після оператора вкажіть дозвіл, який ви хочете додати або видалити (rwx) і, нарешті, ім’я файлу, до якого його застосувати.
Отже, якщо ви хочете видалити дозвіл на запис у користувача, якому належить файл hashcat.hcstat, ви можете ввести наступне:
kali >chmod u-w hashcat.hcstat
Ця команда говорить видалити (-) дозвіл на запис (w) з hashcat.hcstat для користувача (u).
Тепер, коли ви знову перевіряєте дозволи за допомогою ls -l, ви повинні побачити, що файл hashcat.hcstat більше не має дозволу на запис для користувача:
kali >ls-l total 32952 drwxrxrx 5 root root 4096 Dec 5 10:47 charsets rxrxr 1 root root 33685504 June 28 2018 hashcat.hcstat rwrr 1 root root 33685504 June 28 2018 hashcat.hctune drwxr xrx 2 root root 4096 Dec 5 10:47 masks drwxr xrx 2 root root 4096 Dec 5 10:47 OpenCL drwxr xrx 3 root root 4096 Dec 5 10:47 rules
Ви також можете змінити кілька дозволів лише однією командою. Якщо потрібно надати дозвіл на виконання як користувачу, так і іншим користувачам (не включаючи групу), можна ввести такі дані:
chmod u+x, o+x hashcat.hcstat
Ця команда пропонує Linux додати дозвіл на виконання для користувача, а також дозвіл на виконання для інших для файлу hashcat.hcstat.
Як хакеру, вам часто потрібно завантажувати нові інструменти злому, але Linux автоматично призначає дозволи за замовчуванням для всіх файлів і папок 666 і 777 відповідно. Це означає, що за замовчуванням ви не зможете запустити файл відразу після його завантаження. Якщо ви спробуєте, ви зазвичай отримаєте повідомлення «У дозволі відмовлено».
У цих випадках вам потрібно буде надати собі права root і виконати дозволи за допомогою chmod для запуску файлу. Наприклад, ми завантажуємо новий інструмент злому під назвою newhackertool і розміщуємо його в кореневому каталозі користувача (/).
kali >ls-l total 80 drwxrxrx 7 root root 4096 Dec 5 11.17 Desktop drwxrxrx 7 root root 4096 Dec 5 11.17 Documents drwxrxrx 7 root root 4096 Dec 5 11.17 Downloads drwxrxrx 7 root root 4096 Dec 5 11.17 Music rwrr 1 root root 1072 Dec 5 11.17 newhackertool➊ drwxrxrx 7 root root 4096 Dec 5 11.17 Pictures drwxrxrx 7 root root 4096 Dec 5 11.17 Public drwxrxrx 7 root root 4096 Dec 5 11.17 Templates drwxrxrx 7 root root 4096 Dec 5 11.17 Videos
Ми бачимо newhackertool на ➊ разом з рештою матеріалів у корені. Ми бачимо, що наш новий хакерський інструмент нікому не має дозволу на виконання. Це робить його непридатним для використання. Може здатися дивним, що за замовчуванням Linux не дозволяє запускати завантажені файли, але в цілому цей параметр робить вашу систему більш безпечною.
Ми можемо дати собі дозвіл на виконання newhackertool, ввівши наступне:
kali >chmod 766 newhackertool
kali >chmod766newhackertool kali >ls-l total 80 snip drwxrxrx 7 root root 4096 Dec 5 11.17 Music rwxrwrw 1 root root 1072 Dec 5 11.17 newhackertool drwxrxrx 7 root root 4096 Dec 5 11.17 Pictures snip
Як ви тепер розумієте, це надає нам (як власнику) всі дозволи, включаючи виконання, і надає групі та всім іншим лише дозволи на читання та запис (4 + 2 = 6).
Як ви бачили, Linux автоматично призначає основні дозволи: зазвичай 666 для файлів і 777 для каталогів. Ви можете змінити дозволи за замовчуванням, призначені для файлів і папок, створених кожним користувачем, використовуючи метод umask (або unmask). Метод umask представляє дозволи, які ви хочете видалити з основних дозволів файлу або каталогу, щоб зробити їх більш безпечними.
Комірка є тризначною десятковою комою, яка відповідає тризначній авторизації, але номер комірки віднімається з номера авторизації, щоб надати новий статус авторизації. Це означає, що коли створюється новий файл або папка, для його дозволів встановлюється значення за замовчуванням мінус значення в полі, як показано на малюнку 51.
Наприклад, якщо для комірки встановлено значення 022, новий файл із початковим дозволом за замовчуванням 666 матиме дозволи 644, тобто власник має дозволи на читання та запис, тоді як група та всі інші користувачі мають дозволи лише на читання.
У Kali, як і в більшості систем Debian, плитка встановлена на 022 за замовчуванням, тому Kali за замовчуванням становить 644 для файлів і 755 для каталогів. Значення клітинки не є спільним для всіх користувачів системи.
Кожен користувач може за замовчуванням використовувати персональні плитки для файлів і папок у своєму особистому файлі .profile. Щоб побачити поточне значення під час входу в систему як користувач, просто введіть команду umask і запам’ятайте, що повертається. Щоб змінити значення комірки користувача, відредагуйте файл /home/username/.profile і додайте комірку, наприклад комірку 007, щоб налаштувати дозволи лише для користувача та членів групи користувачів.
На додаток до трьох дозволів загального призначення, rwx, Linux має три спеціальних дозволу, які трохи складніше. Ці спеціальні дозволи встановлюються ідентифікатор користувача (або SUID), встановити ідентифікатор групи (або SGID) і липкий біт. Я обговорю кожен по черзі в наступних трьох розділах.
Як відомо, користувач може запустити файл, лише якщо він має дозвіл на виконання цього конкретного файлу. Якщо користувач має дозволи лише на читання та/або запис, він не може виконати. Звучить просто, але з цього правила є винятки. Можливо, ви зіткнулися з випадком, коли файл потребує привілеїв root під час запуску для всіх користувачів, у тому числі користувачів без root.
Наприклад, файл, який дозволяє користувачеві змінити пароль, потребуватиме доступу до файлу /etc/shadow – файлу, який містить пароль користувача в Linux – для запуску якого потрібні права root. У цьому випадку ви можете тимчасово надати дозвіл на виконання власнику файлу, встановивши біт SUID у програмі.
По суті, біт SUID вказує на те, що будь-який користувач може виконувати файл із дозволами власника, але ці дозволи не поширюються за межі використання файлу. Щоб встановити біт SUID, введіть 4 перед звичайними дозволами, щоб файл із новими дозволами 644 відображався як 4644, коли встановлено біт SUID. Встановлення SUID файлу – це не те, що зробив би звичайний користувач, але якщо ви хочете це зробити, ви скористаєтеся командою chmod, як у імені файлу chmod 4644.
SGID також надає тимчасові підвищені дозволи, але він надає дозволи групі власника файлу, а не власника файлу. Це означає, що для набору бітів SGID хтось без дозволу на виконання може виконати файл, якщо власник належить до групи, яка має дозвіл на виконання файлу.
Біт SGID поводиться дещо інакше, коли застосовано до каталогу: коли біт встановлено для каталогу, право власності на нові файли, створені в цьому каталозі, переходить до групи творців каталогу, а не до групи творців файлу. Це корисно, коли папка використовується кількома користувачами.
Усі користувачі цієї групи можуть запускати файл, а не лише один користувач. Біт SGID представлений 2 перед звичайними дозволами. Отже, новий файл із дозволами 644 буде представлено як 2644, коли встановлено біт SGID. Знову ж таки, це потрібно зробити за допомогою команди chmod, наприклад, назва файлу chmod 2644.
Липкий біт — це біт дозволу, який можна встановити в каталозі, щоб дозволити користувачеві видаляти або перейменовувати файли в цьому каталозі. Однак липкий біт є спадщиною старих систем Unix, і сучасні системи (наприклад, Linux) ігнорують його. Таким чином, я не буду обговорювати це далі тут, але ви повинні бути знайомі з цим терміном, тому що ви можете почути його у світі Linux.
Як хакер, ці спеціальні дозволи можуть бути використані для використання систем Linux шляхом збільшення привілеїв, які звичайні користувачі мають над root або системним адміністратором та їхні пов’язані дозволи. З правами root ви можете робити все в системі.
Одним із способів є використання біта SUID. Системний адміністратор або розробник програмного забезпечення може встановити біт SUID програми, щоб дозволити цій програмі отримувати доступ до файлів із правами адміністратора. Наприклад, сценарії, які потребують зміни паролів, часто мають встановлений біт SUID.
Ви, хакер, можете використати це, щоб отримати тимчасові привілеї root і зробити щось зловмисне, наприклад отримати доступ до пароля в /etc/shadow. Шукайте файли з установленим бітом SUID у нашій системі Kali, щоб спробувати це. У Розділі 1 я познайомив вас з командою find. Ми використаємо його потужність для пошуку файлів із встановленим бітом SUID.
Як ви пам’ятаєте, команда find потужна, але синтаксис дещо складніший, ніж деякі інші команди locate, наприклад locate і which. Якщо необхідно, перегляньте синтаксис пошуку в розділі 1. У цьому випадку ми хочемо шукати файл будь-де у файловій системі, для root або іншого системного адміністратора з 4000 дозволами.
Для цього ми можемо скористатися наступною командою find:
kali >знайти / -корінь користувача -perm -4000
За допомогою цієї команди ми просимо Kali почати дивитися на верхню частину файлової системи з синтаксисом /. Потім він шукає скрізь нижче / для файлів, які належать root, вказані з користувачем root, і які мають встановлений біт дозволу SUID (-perm -4000).
Коли ми запускаємо цю команду, ми отримуємо результат, показаний у списку 52.
/usr/bin/chsh /usr/bin/gpasswd /usr/bin/pkexec /usr/bin/sudo /usr/bin/passwd /usr/bin/kismet_capture snip Listing 52: Finding files with the SUIDbit set
Вихід показує численні файли, які мають встановлений біт SUID. Давайте перейдемо до каталогу /usr/bin, де знаходиться багато з цих файлів, а потім запустимо довгий список у цьому каталозі та прокрутимо вниз до файлу sudo, як показано в списку 53.
kali >cd/usr/bin kali >ls-l snip rwxrxrx 1 root root 176272 Jul 18 2018 stunnel4 rwxrxrx 1 root root 26696 Mar 17 2018 sucrack ➊ rwsrxrx 1 root root 140944 Jul 5 2018 sudo snip Listing 53: Identifying files with the SUIDbit se
Зауважте, що для ➊ перша група дозволів (для власника) має s замість x. Ось як Linux представляє набір бітів SUID. Це означає, що кожен, хто запускає файл sudo, має права root, що може бути проблемою безпеки для системних адміністраторів і потенційним засобом атаки для хакерів. Наприклад, деякі програми потребують доступу до файлу /etc/shadow для виконання своїх завдань. Якщо зловмисник зможе отримати контроль над цією програмою, він зможе використовувати доступ цієї програми до паролів у системі Linux.
Linux має добре розвинену систему безпеки для захисту файлів і папок від несанкціонованого доступу. Початківець хакер повинен мати базове уявлення про цю систему не тільки для захисту своїх файлів, але й для запуску нових інструментів і файлів. У деяких випадках хакери можуть використовувати дозволи SUID і SGID для підвищення привілеїв звичайного користувача до користувача root.
Використання дозволів Linux для захисту файлів і папок користувача або групи від інших користувачів системи може використовуватися як для наступальних, так і для оборонних цілей. Тепер ви знаєте, як керувати цими дозволами та як використовувати слабкі сторони цієї системи безпеки, особливо біти SUID та SGID.
Ми використовували матеріали з книги “LINUX BASICS FOR HACKERS”, які написав William Pollock