Способи оплати Abuse

Команда CHGRP LINUX

14.12.2021, 10:30

Найчастіше під час роботи в Linux користувачі рідко замислюємося про те, хто є власником файлу. Якщо ж говорити про запуск сервера, то розклад змінюється. Для підвищення безпеки сервер отримує власного користувача. Нерідко сервери використовують одну й ту саму групу, на кшталт www-data. Далі розглянемо, як працює ця функція з файлами і каталогами. Особливу увагу приділимо символічним посиланням, оскільки вони можуть створити проблеми під час використання небезпечних параметрів.

Що означає

Стандарт прав файлів з'явився в Linux з Unix. Так кожен об'єкт має user, group, крім цього описуються права інших користувачів(other). Права складаються з трьох пунктів: read, write, execute. Для зміни прав використовується команда umask, але для зміни безпосередньо власника і групи використовуються команди chown. Для перегляду поточних прав можна використовувати команду ls.

Синтаксис та опції

Загальний вигляд команди chgrp:

$ chgrp [options] new_group file_name

Список поширених параметрів команди chgrp:

  1. -h - працювати безпосередньо з самими символьними посиланнями;
  2. --dereference - працювати з файлами, а не самими символьними посиланнями. Використовується за замовчуванням;
  3. -R - рекурсивна обробка каталогу з усім його вмістом;
  4. -H - перейти за символічним посиланням і змінити атрибути файлу/каталогу. Використовується разом із параметром -R;
  5. -L - перейти за символічним посиланням і продовжити рекурсивну обробку. Використовується разом із параметром -R;
  6. -P - при зустрічі з символьним посиланням обробляти тільки його. Використовується разом із параметром -R, є значенням за замовчуванням;
  7. --reference=file_name - використовувати групу зразка;
  8. -c - під час обробки виводити тільки зміни;
  9. -v - виводити інформацію про кожен оброблений об'єкт.

Використання команди

Найпростіший приклад використання команди chgrp. Наступна змінює весь об'єкт www-data для файлу file у поточній папці:

$ sudo chgrp www-data file.txt

А ця змінює групу на www-data для папки folder:

 $ sudo chgrp www-data folder

Команда працює досить передбачувано, змінюючи їхню групу. Об'єкти в папці залишаються незмінними. Якщо ж обробляти символічні посилання, то їхні атрибути залишаться незмінними, а об'єкт отримає нову групу. Така поведінка аналогічна роботі з параметром --dereference.

Наприклад, ці команди, застосовані до символічних лінків, спрацюють як показано на знімку:

$ sudo chgrp www-data sym_file.txt

Подивимося на те, як працюватиме параметр -h, що змінює атрибути символічного посилання:

$ sudo chgrp -h www-data sym_file

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

Щоб побачити різницю між параметрами -H і -L, розглянемо ще кілька прикладів. Нагадаємо, що їх треба використовувати спільно з -R:

$ sudo chgrp -RH www-data folder

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

$ sudo chgrp -RL www-data folder

Вона виконує одну функцію - змінює групу у файлів і каталогів.

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