7
января
0

Флаги файлов в FreeBSD



В UNIX-системах, кроме стандарных прав доступа для файлов можно также устанавливать дополнительные флаги, которые поддерживает файловая система. Благодаря им достигается более гибкий контроль с точки зрения безопасности системы. Эти флаги могут обеспечить невозможность удаления/модификации файлов даже тем, кто их установил в зависимости от уровня безопасности на котором работает система.

В BSD системах (OpenBSD, FreeBSD) установка и снятие флагов осуществляется командой chflags (в Linux системах используется chattr), а их просмотр ls с опциями -lo. Синтаксис команды достаточно прост: chflags flags file … Можно задавать сразу несколько флагов, перечислив их через запятую. Полезным ключем будет «-R», позволяющий обходить файлы в директории рекурсивно. Флаги могут быть системными (может установить только root) и пользовательскими (установленные владельцем). Обычно, в названии флага префиксом является буква «u» или «s».

Флаги, доступные only super-user:

arch, archived — архивный файл;

sappnd, sappend — append-only, можно только дополнять файл, удалять нельзя. При установке на директорию в ней можно создавать файлы, но удалять нельзя;

schg, schange, simmutable — флаг «неизменяемости», нельзя ничего, т.е. удалять, переименовывать и модифицировать/редактировать. Флаг нельзя изменить, когда система работает на уровне безопасности «1» и выше;

sunlnk, sunlink — нельзя удалять или переименовывать.

Следующие флаги может установить как root, так и владелец файла (имеют тоже самое предназначение):

uappnd, uappend —    append-only flag;

uchg, uchange, uimmutable — immutable flag;

uunlnk, uunlink — undeletable flag;

nodump — не включать файл при создании резервной копии.

Чтобы снять флаг в его названии используется префикс «no» (для «nodump» задается просто «dump»).

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

0 — очистить все флаги;

1 — nodump;

2 — uchg;

3 — uchg, nodump;

4 — uappnd;

10 — opaque;

20 — uunlnk.

Примеры использования:

— устанавливаем флаг неизменяемости и неудаляемости:

chflags uunlink,uchange file.txt
ls -lo file.txt
-rw-r--r--  1 root  nemo  uchg,uunlnk    0B Dec 29 14:07 file.txt 

— сбросить все флаги:

chflags 0 file.txt 

или командой в другом представлении флагов — chflags nouunlink,nouchange file.txt, чтобы получить исходное состояние:

-rw-r--r--  1 root  nemo  -    0B Dec 29 14:07 file.txt 
Понравилась статья?
Подписаться на RSS feed
Оставить комментарий