Често при работа с Linux потребителите рядко се замислят кой притежава даден файл. Когато обаче става въпрос за работа със сървър, ситуацията се променя. За да се повиши сигурността, сървърът получава свой собствен потребител. Не е необичайно сървърите да използват една и съща група, например www-data
. След това нека видим как тази функция работи с файлове и директории. Ще обърнем специално внимание на символните връзки, тъй като те могат да предизвикат проблеми при използване на несигурни настройки.
Стандартът за разрешенията на файловете е дошъл в Linux от Unix. Така че всеки обект има потребител
, група в
допълнение към това описва правата надруги потребители (other)
. Разрешенията се състоят от три елемента: четене, запис, изпълнение. Командата umask
се използва за промяна на разрешенията, но командите chown
се използват за директна промяна на собственика и групата. Командата ls
може да се използва за преглед на текущите разрешения.
Общ изглед на командата chgrp
:
$ chgrp [options] new_group file_name
Списък на общите опции за командата chgrp
:
-h
- работи директно със самите символни връзки;--dereference
- работи с файлове, а не със самите символични връзки. Използва се по подразбиране;-R
- рекурсивна обработка на директория с цялото ѝ съдържание;-H
- следва символичната връзка и променя атрибутите на файла/директорията. Използва се заедно с параметъра -R
;-L
- следва символната връзка и продължава рекурсивната обработка. Използва се заедно с параметъра -R
;-P
- при среща със символна връзка обработва само нея. Използва се заедно с параметъра -R
и е стойността по подразбиране;--референция=име на файл
- използва групата на примера;-c
- изходът се променя само при обработка;-v
- извежда информация за всеки обработен обект.Най-простият пример за използване на командата chgrp
. Следващият променя целия обект www-data
за файл
в текущата папка:
$ sudo chgrp www-data file.txt
А тази променя групата на www-data
за папката
:
$ 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
Изпълнява се една функция - променя се групата от файлове и директории.
При обработката на символни връзки трябва да сте изключително внимателни, за да не повредите системата.