Головна » як » Як діють права доступу до файлів Linux?

    Як діють права доступу до файлів Linux?

    Якщо ви використовуєте Linux протягом деякого часу (і навіть OS X), ви, напевно, зіткнулися з помилкою "дозволу". Але що це таке і чому вони потрібні чи корисні? Давайте поглянемо всередину.

    Дозволи користувача

    Назад у днях, комп'ютери були масивні машини що були incredibly коштовні. Щоб максимально використати їх, було підключено кілька комп'ютерних терміналів, що дозволило багатьом користувачам одночасно займатися своїми справами. Обробка та зберігання даних виконувалися на машині, тоді як самі термінали були лише засобом перегляду та введення даних. Якщо ви думаєте про це, це дуже багато, як ми отримуємо доступ до даних на «хмарі»; подивіться на систему MP3 в Amazon, Gmail і Dropbox, і ви помітите, що в той час як зміни можна робити локально, все зберігається віддалено.

    (Зображення: Zenith Z-19 "німий" термінал; кредит: ajmexico)

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

    Доступ до файлів

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

    У світі Linux дозволи розділені на три категорії: читання, запис і виконання. Доступ "читання" дозволяє переглядати вміст файлу, доступ до запису дозволяє змінювати вміст файлу, а "виконати" дозволяє запускати набір інструкцій, наприклад сценарій або програму. Кожна з цих категорій застосовується до різних класів: користувача, групи та світу. "Користувач" означає власника, "група" означає будь-якого користувача, який знаходиться в тій самій групі, що і власник, а "світ" означає будь-кого і всіх.

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

    Зміна дозволів у Ubuntu

    GUI

    Щоб змінити дозволи на файл у вас в Ubuntu, просто клацніть файл правою кнопкою миші та перейдіть до пункту "Властивості".

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

    Командний рядок

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

    ls -al

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

    -rwxrw-r-

    The r означає "прочитати" w означає "написати", і x Каталоги будуть починатися з “d” замість “-“. Ви також помітите, що є 10 просторів, які утримують значення. Ви можете ігнорувати перший, а потім є 3 набори з 3. Перший набір для власника, другий набір для групи, а останній набір для світу.

    Щоб змінити дозвіл файлу або каталогу, давайте подивимося на основну форму команди chmod.

    файл chmod [class] [operator] [allow]

    файл chmod [ugoa] [+ або -] [rwx]

    Спочатку це може здатися складним, але повірте мені, це досить просто. По-перше, розглянемо класи:

    • u: Це для власника.
    • g: Це для групи.
    • o: Це для всіх інших.
    • a: Це дозволить змінити дозволи на всі вищезазначені.

    Далі оператори:

    • +: Знак плюс додасть дозволу, які слідують.
    • -: Знак мінус видаляє дозволу, які слідують.

    Ще зі мною? І останній розділ такий же, як і при перевірці дозволів файлу:

    • r: Дозволяє доступ до читання.
    • w: Дозволяє доступ до запису.
    • x: Дозволяє виконувати.

    А тепер давайте разом. Припустимо, у нас є файл з назвою "todo.txt", який має такі дозволи:

    -rw-rw-r-

    Тобто власник і група можуть читати і писати, і світ може тільки читати. Ми хочемо змінити дозволи на ці:

    -rwxr-

    Тобто власник має повні дозволи, і група може читати. Ми можемо зробити це в 3 кроки. По-перше, ми додамо дозвіл на виконання для користувача.

    chmod u + x todo.txt

    Потім ми видалимо дозвіл на запис для групи.

    chmod g-w todo.txt

    Нарешті, ми видалимо дозволи на читання для всіх інших користувачів.

    chmod o-r todo.txt

    Ми також можемо об'єднати їх в одну команду, наприклад:

    chmod u + x, g-w, o-r todo.txt

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

    Ось кілька корисних дозволів:

    • -rwxr-xr-x: Власник має повні дозволи, групи та інші користувачі можуть читати вміст файлу та виконувати.
    • -rwxr-r-: Власник має повноваження, групи та інші користувачі можуть читати лише файл (корисно, якщо ви не бачите інших, переглядаючи файли.
    • -rwx-: Власник має повний дозвіл, у всіх інших немає (корисно для персональних скриптів).
    • -rw-rw--: Власник і група можуть читати і писати (корисно для співпраці з членами групи).
    • -rw-r-r-: Власник може читати та писати, групувати та інші користувачі можуть лише читати файли (корисні для зберігання особистих файлів у спільній мережі).
    • -rw--: Власник може читати і писати, всі інші не мають (корисно для зберігання особистих файлів).

    Існує кілька інших речей, які ви можете зробити з chmod - наприклад, setuid і setgid - але вони трохи поглиблені, і більшість користувачів не повинні їх використовувати.

    Файли Root або Super-User та System

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

    Ну, Unix і його похідні - Linux, OS X, серед інших - також розрізняють речі, що виконуються користувачем, речі, що виконуються адміністратором, або адміністративні привілеї, і речі, що виконуються самою системою. Таким чином, речі, які є невід'ємною частиною системи, потребують адміністрування адміністратора або доступу. Таким чином, ви не зіпсуєте нічого випадково.

    У Ubuntu, щоб внести зміни до системних файлів, ви використовуєте "sudo" або "gksudo", щоб отримати еквівалент привілеїв адміністратора. В інших дистрибутивах ви перемикаєтеся на "кореневий" або "суперкористувач", який ефективно робить те ж саме, поки ви не вийдете з системи.

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


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

    Думаєте, ви можете легше пояснити речі? Чи є виправлення? Хочете згадати про старі часи? Зробіть перерву і покладіть ваші думки в коментарі.