Скачиваний:
97
Добавлен:
23.10.2019
Размер:
363.28 Кб
Скачать

Лабораторна робота № 4. Налаштування прав доступу до файлів в ОС Linux.

Мета: навчитись налаштовувати права доступу до файлів в ОС Linux.

Теоретичні відомості

Будь-який ресурс комп'ютера під управлінням ОС Linux представляється як файл. ОС Linux містить механізм розмежування доступу до даних, що дозволяє як захистити дані одного користувача від небажаного втручання інших, так і дозволити іншим доступ до цих даних для спільної роботи. Варто зауважити, що насправді маніпулює файлами не саме користувач, а запущений ним процес (наприклад, утиліта cat). Оскільки і файл, і процес створюються і управляються системою, їй неважко організувати яку завгодно політику доступу одних до інших, грунтуючись на будь-яких властивостях процесів як суб'єктів і файлів як об'є- ктів системи.

УLinux, однак, використовуються не які завгодно властивості, а результат ідентифікації користувача – його UID. Кожен процес системи обов'язково належить якому-небудь користувачеві, і ідентифікатор користувача (UID) – обов'язкова властивість будь-якого процесу Linux. Коли програма login запускає стартовий командний інтерпретатор, вона приписує йому UID, отриманий в результаті діалогу. Всі процеси, запущені користувачем під час термінальної сесії, матимуть його ідентифікатор.

Користувач може бути членом декількох груп, так само як і кілька користувачів може бути членами однієї і тієї ж групи. Історично склалося так, що одна з груп – група за замовчуванням – є для користувача основною: коли говорять про «GID користувача», мають на увазі саме ідентифікатор групи за замовчуванням. Користувач не може не бути членом як мінімум однієї групи! Часто процедуру створення користувача проектують так, що ім'я групи за замовчуванням збігається з вхідним ім'ям користувача, а GID користувача – з його UID. Однак це зовсім не обов'язково: не завжди потрібно заводити для користувача окрему групу,

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

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

УLinux існує виділений користувач системи, на якого не поширюються обмеження прав доступу – суперкористувач (root). UID процесів суперкористувача дорівнює 0: так система відрізняє їх від процесів інших користувачів. Саме суперкористувач має можливість довільно змінювати власника і групу файлу. Йому відкрито доступ на читання і запис до будь-якого файлу системи і доступ на читання, запис і використання до будь-якого каталогу. Нарешті, такий процес може на час змінити свій власний UID з нульового на будь-який інший. Серед облікових записів Linux завжди є запис на ім'я root, відповідна нульового ідентифікатору, тому замість «суперкористувач» часто говорять «root». Властивість root мати доступ до всіх ресурсів системи накладає дуже високі вимоги на людину, що знає пароль root. Суперкористувач може все – в тому числі і все поламати, тому будь-яку роботу варто вести з правами звичайного користувача, а до прав root вдаватися тільки за потребою. Існує два різні способи отримати права суперкористувача.

Перший – це зареєструватися в системі під цим ім'ям, ввести пароль і отримати стартову оболонку, що має нульовий UID. Це – неправильний спосіб, користуватися яким варто, тільки якщо не можна застосувати інші.

Другий спосіб – це скористатися спеціальною утилітою su (shell of user), яка дозволяє виконати одну або декілька команд від особи іншого користувача. Відмінність від попереднього способу – в тому, що завжди відомо, хто саме запускав su, а значить, з кого питати за

1

наслідки. У деяких випадках зручніше використовувати не su, а утиліту sudo, яка дозволяє виконувати тільки заздалегідь задані команди.

Утиліта id виводить вхідне ім'я користувача і відповідний йому UID, а також групу за замовчуванням і повний список груп, членом яких він є. Вся інформація про користувачів і групи, зареєстрованих в системі, зберігається в файлах /etc/passwd, /etc/shadow та /etc/groups.

Таким чином, конкретний користувач по відношенню до його власних файлів виступає як їх власник (u – user). У кожного файлу є ще й група (g – group), до якої належить власник файлу. Крім власника і групи в системі можуть існувати й інші користувачі. Тому в атрибутах файлу міститися значення, які забороняють або дозволяють доступ всім іншим (o – other), хто не увійшов до групи і не є власником.

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

Імена файлів і символи доступу

Імена файлів можуть бути довжиною до 256 символів включаючи "-", "_", і "." символи з буквами і цифрами. Існує набір з 10 символів (що знаходиться зліва при відображенні повного лістингу файлів) який показує тип доступу до файлів. Доступ до файлів виглядає так:

drwerwerwe

У цьому прикладі 10 символів, як і у всіх файлів в Linux. Перший символ вказує на тип файлу, наступні 3 символу показують доступ на читання, запис і виконання для кожного з 3- х типів: користувача, групи та "інших". Оскільки є 3 типи доступу для 3-х користувачів, існує 9 біт доступу. У таблиці нижче показаний синтаксис:

1

2

3

4

5

6

7

8

9

10

Файл

Доступ користувача

 

Доступ групи

Інший доступ

Тип

Читання

Запис

Виконання

Читання

Запис

Виконання

читання

Запис

Виконання

d

r

w

x

r

w

x

r

w

x

Перший символ – це тип файлу: звичайний, d – директорія, l – посилання.

Символи з 2 по 4 показують доступ власника. 2 символ показує доступ на читання, третє – на запис і 4-й - на виконання.

Символи з 5 по 7 показують доступ групи. 5-й символ – на читання, 6-й – на запис, 7-й

– на виконання.

Символи з 8 по 10 показують доступ для решти користувачів. 8-й символ – на читання, 9-й – на запис, 10-й – на виконання.

Є 5 можливих символів у полях доступу. Це: r = читання – Це тільки в області читання.

w = запис – Це тільки в області запису.

x = виконання – Це тільки в області виконання. s = setuid – Це тільки в області виконання.

Якщо знаходиться символ "–" в поточній області, то доступ відсутній. Це може бути в будь-якій області: читання, запису або виконання.

Приклади

2

Напишіть в консолі «ls -l» і відобразитися список схожий на наведений нижче:

total 10

 

 

 

 

 

 

drwxrwxrwx

4

george

team1

122

Dec 12 18:02

Projects

- rw-rw-rw-

1

george

team1

1873

Aug 23 08:34

test

- rw-rw-rw-

1

george

team1

1234

Sep 12 11:13

datafile

Це означає наступне:

Тип і поле

# посилан-

Власник

Група

Розмір у

Дата останньої мо-

Ім'я фай-

доступу

ня

файлу

файлу

байтах

дифікації

лу

drwxrwxrwx

4

george

team1

122

Dec 12 18:02

Projects

Ці поля означають:

1.Поле тип: перший символ в полі позначає один з наведених типів: d = директорії (directory)

l = символьне посилання (symbolic link) s = сокет (socket)

p = іменований канал (named pipe)

- = звичайний файл (regular file)

с = символ (character) (небуферізірованний) спеціальний файл пристрою b = блок (block) (буферізірованний) спеціальний файл пристрою

2.Типи доступу описані вище.

3.Посилання: кількість директорій, що містять посилання на файл. У прикладі це 4.

4.Власник файлу, у нашому прикладі це George.

5.Група до якої належить файл. У нашому прикладі це група team1.

6.Розмір файлу в байтах.

7.Дата останньої модифікації. Якщо файл створений недавно, відображаються дата і час. Якщо файл створений не в поточному році, то рік відображається перед часом.

8.Файл.

Установка атрибута ідентифікації користувача

Біти доступу до файлу включають біти доступу виконання для власника файлу, групи та інших. Коли біт виконання для власника встановлений в "s", то набір бітів ID користувача встановлений. Це дозволяє будь-якій персоні або процесу, які запускають файл, отримати доступ до системних ресурсів, як ніби вони є власником файлу. Коли біт виконання для групи встановлений в "s", набір бітів ID групи встановлений і користувачеві, що запустив програму, надається доступ, який ґрунтується на дозволі доступу для групи до якої належить файл. Наступні команди демонструють це:

chmod + s myfile

установка бітів ID користувача на файл "myfile".

chmod g + s myfile

установка бітів ID групи на файл "myfile".

Лістинг показує список з 2-х файлів, у яких встановлено біт ID групи і користувача.

3

-rws--x--x

1

root

root

14024

Sep

9

1999

chfn

-rwxr-sr-x

1

root

mail

12072

Aug

16

1999

lockfile

Файли kfn і lockfile знаходяться в директорії "/usr/bin". "s" займає місце в звичайному розташуванні біта виконання в вище наведеному лістингу файлів. Цей спеціальний режим доступу не має сенсу поки виконуваний файл можуть виконати група або "інші". У випадку з lockfile це означає, що якщо біт (глобального виконання) не встановлений з доступом на виконання, тоді біт ID користувача матиме сенс тільки, якщо та ж група зможе запустити програму так чи інакше. Обидва бінарних файли може запустити хто завгодно. Перша програма, при запуску виповнюється так, як ніби вона запущена від користувача root. Друга програма запускається так, як якби користувач полягав в групі "mail".

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

Доступ до директорій

Існує 2 спеціальних біта доступу до теки, це: s – установка ID групи

t – атрибут збереження тексту (sticky bit) – користувач може видалити або модифікувати тільки ті файли і директорії, власником яких він є або має права запису для них.

Атрибут збереження тексту

Директорія / tmp зазвичай глобально-доступна і так виглядає її лістинг:

drwxrwxrwt

13 root

root 4096 Apr 15 08:05 tmp

Будь-хто може подивитися, запускати і керувати цією директорією. Символ "t '' показує, що тільки користувач (root, звичайно) може видалити створений файл в цій директорії.

Для установки sticky bit в директорії потрібно виконати команду:

chmod + t data

Цими опціями варто користуватися акуратно. Можлива альтернатива цього:

1.Створення директорії в домашній директорії користувача, в якій він може записати тимчасові файли.

2.Встановити змінну середовища TMPDIR, що використовується кожним користувацьким скриптом входу.

3.Програми, що використовують функцію tempnam (3) будуть шукати змінну TMPDIR

івикористовувати її для запису безпосередньо в директорію / tmp.

Установка ID групи для директорій

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

Цей атрибут корисний, коли декільком користувачам потрібен доступ до певних файлів. Якщо користувачі працюють в директорії з встановленим атрибутом setgid, то до будьяких створених ними файлів в директорії матиме доступ і їх група. Для прикладу, адміністратор може створювати групу названу spcprj і додати користувачів Kathy і Mark в цю групу. Директорія spcprjdir може бути створена з встановленим GID бітом і Kathy та Mark, перебу-

4

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

Наступна команда встановлює біт GID на директорію:

chmod g + s spcprjdir

Лістинг директорії "spcprjdir":

drwxrwsr-x 2 kathy spcprj 1674 Sep 17 2010 spcprjdir

Символ "s '' на місці біта виконання для доступу групи до всіх файлів записаним в директорію" spcprjdir "належить групі" spcprj ".

Приклади

Нижче наведено приклади зміни доступу:

chmod u + x myfile – надати користувачу права на виконання файлу myfile.

chmod + x myfile – надати будь-якому користувачеві права на виконання файлу myfile.

chmod ugo + x myfile – та ж команда що й раніше, але уточнює користувача, групу та інших

chmod 400 myfile – надати користувачу права на читання і видалити всі інші права. Цей доступ наводиться у вісімковому численні, перший символ для користувача, другий для групи і третій для інших. Перший біт (4) це доступ на читання, середній біт (2) для доступу на запис, і останній біт (1) доступ на виконання

chmod 764 myfile – надати користувачеві повний доступ, групі доступ на читання і запис, і іншим доступ для читання

chmod 751 myfile – надати користувачеві повний доступ, групі доступ на читання і виконання та іншим доступ на виконання

chmod + s myfile – установка біта setuid.

chmod go = rx myfile – видалення доступу на читання і виконання для групи та інших.

Зміна власника файла test1 на Mark. chown mark test1

Зміна на групу "mark" для файлу test1. chgrp mark test1

Налаштування Umask

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

5

могою наступних побітових операцій: побітовое AND між унарним доповненням аргументу (використовуючи побітовое НЕ) і режимом повного доступу.

Режим повного доступу для директорій – 777, для файлів – 666.

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

777 – Виконувані файли

666 – Текстові файли Ці «дефолтні» значення встановлюють дозвіл всім користувачам на виконання викону-

ваного файлу і на заборону виконання текстового файлу. Також всі користувачі можуть читати файл і записувати в нього.

Доступ для створення нового виконуваного файлу обчислюється відніманням значення маски з «дефолтного» значення доступу для створеного типу файлу. Приклад текстового файлу наведено нижче з umask значенням 022:

666 Значення за замовчуванням для текстового файлу -022 Мінус значення umask

-----

644 Дозволений доступ

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

-rw-r - r-- 1 root workgrp 14233 Apr 24 10:32 textfile.txt

Приклад команди установки значення umask: umask 022

Найбільш поширене значення umask це 022.

Завдання

1.Опрацювати теоретичні відомості та детально розглянути приклади.

2.Підготувати середовище для виконання команд налаштування прав доступу.

3.Максимально повно продемонструвати власні приклади для команд chmod, chown (або отримати завдання у викладача).

4.Бути готовим давати відповіді на запитання згідно теми лабораторної роботи.

6