Qual é a diferença entre os flags do FreeBSD, imutável e unlink?

3

Quais são as diferenças ou semelhanças entre os flags do FreeBSD, simmutable / uimmutable e sunlink / uunlink?

Lendo man chflags , vejo estes sinalizadores:

schg, schange, simmutable
    set the system immutable flag (super-user only)
sunlnk, sunlink
    set the system undeletable flag (super-user only)
uchg, uchange, uimmutable
    set the user immutable flag (owner or super-user only)
uunlnk, uunlink
    set the user undeletable flag (owner or super-user only)

Atualmente eu entendo o atributo imutável da mesma maneira que uma página de manual do Linux em chattr descreve:

A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

Como o "immutable" e o "undeletable" diferem no FreeBSD?

    
por Christopher 05.06.2015 / 15:26

1 resposta

2

A partir do manpage do syscall chflags (2) :

SF_IMMUTABLE   The file may not be changed.
SF_NOUNLINK    The file may not be renamed or deleted.
[...]
UF_IMMUTABLE   The file may not be changed.
UF_NOUNLINK    The file may not be renamed or deleted.

Os sinalizadores com prefixo SF_ só podem ser definidos ou não definidos pelo superusuário. Os outros prefixados com UF_ podem ser definidos ou não definidos pelo proprietário de um arquivo ou pelo superusuário.

Nota : Se um dos SF_ sinalizadores estiver definido, um não superusuário não poderá alterar nenhum sinalizador e até mesmo o superusuário poderá alterar sinalizadores somente se securelevel for 0.

The security level can be set with a sysctl(8) on the kern.securelevel variable.

    
por 05.06.2015 / 15:43