У світі Linux, кожен файл і каталог мають свого власника. Команда chown
дозволяє вам змінювати цих власників. Розглянемо, як це працює.
Власник та група файлів у Linux
Linux – це операційна система, розроблена для багатокористувацького використання. Це означає, що вона дає можливість створювати різні облікові записи, кожен з яких належить окремому користувачеві. Крім того, декілька користувачів можуть одночасно працювати на одному комп’ютері.
Для організації доступу до файлів та забезпечення безпеки, Linux використовує поняття власності. Кожен файл має свого власника – конкретного користувача, а також належить до певної групи.
Коли створюється новий файл, його власником стає користувач, який його створив. Група, до якої приналежний файл, – це поточна група цього користувача. Користувачі та групи ідентифікуються не лише за іменами, але й за числовими ідентифікаторами – UID (User ID) та GID (Group ID).
Зазвичай, коли ви створюєте файл, він автоматично належить вам та вашій поточній групі. Часто ця група має таке ж ім’я, як і ваш обліковий запис, і створюється одночасно з вашим користувачем.
Команда chown
дозволяє змінювати ці параметри. Ви можете встановити нового власника, нову групу, або обидва одночасно. Хоча власник файлу може змінювати групу, тільки користувач root має право змінювати власника, оскільки це впливає на права іншого користувача системи. Без прав root ви не можете примусово передати файл іншому користувачеві.
Навіщо змінювати власника файлу?
Існує ряд ситуацій, коли зміна власника файлу стає необхідною:
- Під час передачі файлів між різними системами Linux або Unix, вам може знадобитися змінити власників на нових користувачів та групи на цільовій системі.
- Якщо працівник залишає організацію, всі його файли потрібно буде передати іншому співробітнику, змінюючи власника та групу.
- Ви можете створити сценарій, призначений для використання конкретним користувачем.
- Створюючи файл або каталог як root, ви можете захотіти зробити його доступним для певного користувача.
Перегляд інформації про групи, UID та GID
Щоб переглянути список груп, до яких ви належите, скористайтеся командою groups
.
groups
Для отримання детальнішої інформації, включаючи числові ідентифікатори груп, а також ваш UID та GID, використовуйте команду id
.
id
За допомогою параметрів команди id
, ви можете отримати конкретні дані:
-u
: показує ваш UID.-g
: показує ваш поточний GID.-nu
: показує ваше ім’я користувача.-ng
: показує назву вашої поточної групи.
id -u
id -g
id -nu
id -ng
Перегляд власника файлу та групи
Щоб переглянути власників файлу чи каталогу, скористайтеся командою ls -l
(довгий список).
ls -l
У виводі команди ви побачите ім’я користувача (власника) та назву групи, що стоять поруч. Наприклад, в виводі вище, користувач “dave” є власником файлу, і він належить до групи “dave”.
За замовчуванням, коли створюється користувач Linux, йому надається персональна група з такою ж назвою. Він є єдиним її членом.
ls -l
У цьому випадку файл належить користувачеві “mary”, а група, до якої належить файл, також називається “mary”.
А ось приклад, коли файл належить користувачеві “oscar”, але групі “researchlab”. Це означає, що всі члени групи researchlab можуть мати доступ до цього файлу, залежно від встановлених прав доступу.
Зміна власника файлу
Розглянемо кілька прикладів використання команди chown
.
Наприклад, команда нижче змінить власника файлу while.c
на користувача mary
.
sudo chown mary while.c
Щоб перевірити, чи зміни відбулись, скористаємося командою ls
.
ls -l while.c
Ви можете змінити власника для декількох файлів одночасно, вказавши їхні імена через пробіл.
sudo chown mary getval.c global.c goto.c
Тепер усі три файли належать користувачеві mary.
ls -l getval.c global.c goto.c
Ви також можете використовувати символи підстановки, щоб вибрати групи файлів. Наприклад, наступна команда змінить власника на користувача “mary” для всіх файлів, імена яких починаються з літери “c”.
sudo chown mary c*.*
Після виконання цієї команди, всі файли, що починаються з “c”, матимуть “mary” як власника. Важливо зауважити, що групи власності не були змінені.
ls -l mary c*.*
Щоб змінити власника каталогу, просто вкажіть ім’я каталогу замість імені файлу.
sudo chown mary ./archive/
Для перевірки властивостей каталогу скористаємося командою ls
з параметром -d
(directory). Це відобразить властивості самого каталогу, а не файлів всередині нього.
ls -l -d ./archive/
Щоб змінити власника усіх файлів у каталозі, використовуйте параметр -R
(рекурсивний). Він змінить власника для всіх файлів та підкаталогів в папці.
sudo chown -R mary ./archive/
Тепер подивимось на файли в каталозі archive.
ls -l ./archive/
Як і очікувалось, всі файли тепер належать користувачеві mary.
Зміна групи власності
Є декілька способів змінити групу власності файлу.
Щоб змінити власника та групу одночасно, вкажіть нове ім’я власника та назву групи, розділені двокрапкою “:”. Зверніть увагу, що група вже має існувати.
sudo chown mary:researchlab charm.c
Власник та група файлу були змінені.
ls -l charm.c
Для того, щоб змінити групу на групу, яка відповідає новому власнику, просто поставте двокрапку, опускаючи назву групи.
sudo chown mary: caps.c
ls -l caps.c
І власник, і група файлу були змінені на mary.
Щоб змінити тільки групу, поставте двокрапку перед новою групою, опускаючи ім’я користувача. Власник не буде змінено.
sudo chown :researchlab at.c
ls -l at.c
Група файлу була змінена, але власник залишився тим самим.
Використання UID та GID з Chown
Ви можете використовувати числові UID та GID значення з командою chown. Наступна команда встановить власника та групу файлу з UID=1001 та GID=1001, що відповідає користувачу mary.
sudo chown 1001:1001 at.c
ls -l at.c
Власність – важлива складова безпеки
В Linux, право власності на файли є важливою складовою безпеки. Разом з правами доступу, які можна налаштувати за допомогою команди chmod, вони забезпечують контроль над доступом до файлів у вашій системі. Використовуйте команди chown
та chmod
, щоб захистити файли у вашій системі.