Qual é o primeiro dígito para a notação de permissão do arquivo octal Unix de 4 dígitos?

36

3 dígitos:

644
ugo (user group other)

4 dígitos:

0644
?ugo (??? user group other)

Qual é o primeiro dígito octal na notação de permissão de arquivo octal de 4 dígitos octal?

    
por Steven T. Snyder 28.12.2011 / 01:13

4 respostas

46

De man chmod :

A numeric mode is from one to four octal digits (0-7), derived by adding up the bits with values 4, 2, and 1. Any omitted digits are assumed to be leading zeros. The first digit selects the set user ID (4) and set group ID (2) and sticky (1) attributes.

O que são "set user ID", "set group ID" e "sticky", você pergunta?

setuid / setgid :

setuid and setgid (short for "set user ID upon execution" and "set group ID upon execution", respectively) are Unix access rights flags that allow users to run an executable with the permissions of the executable's owner or group. They are often used to allow users on a computer system to run programs with temporarily elevated privileges in order to perform a specific task. While the assumed user id or group id privileges provided are not always elevated, at a minimum they are specific.

Além disso, quando aplicado a um diretório, o setuid / setgid faz com que novos arquivos criados no diretório herdam o uid ou gid, respectivamente, do diretório pai. Esse comportamento varia com base no sabor do unix. Por exemplo, o Linux respeita o setgid, mas ignora o setuid nos diretórios.

E adesivo :

The most common use of the sticky bit today is on directories. When the sticky bit is set, only the item's owner, the directory's owner, or the superuser can rename or delete files. Without the sticky bit set, any user with write and execute permissions for the directory can rename or delete contained files, regardless of owner. Typically this is set on the /tmp directory to prevent ordinary users from deleting or moving other users' files.

    
por 28.12.2011 / 01:23
12

Setgid tem outra função muito importante que eu confio diariamente, mas que não está incluída no trecho de Handyman5 (a citação é da mesma página ligada acima):

The setuid and setgid flags, when set on a directory, have an entirely different meaning.

Setting the setgid permission on a directory (chmod g+s) causes new files and subdirectories created within it to inherit its group ID, rather than the primary group ID of the user who created the file (the owner ID is never affected, only the group ID). Newly created subdirectories inherit the setgid bit.

Thus, this enables a shared workspace for a group without the inconvenience of requiring group members to explicitly change their current group before creating new files or directories. Note that setting the setgid permission on a directory only affects the group ID of new files and subdirectories created after the setgid bit is set, and is not applied to existing entities. Setting the setgid bit on existing subdirectories must be done manually, with a command such as the following:

[root@foo]# find /path/to/directory -type d -exec chmod g+s {} \;

chmod g+s significaria a adição de um 2 na frente do valor octal, criando um diretório com 775 permissões ( drwxrwxr-x ) em 2775 ( drwxrwsr-x ).

    
por 28.12.2011 / 04:19
4

Além das outras respostas, um 0 inicial é uma convenção usada para dizer que um número é octal. Não é necessário aqui, pois as permissões de arquivo são sempre expressas em octal, mas isso pode ser uma outra razão pela qual está presente.

    
por 28.12.2011 / 11:31
2

Aqui está um fácil de usar a calculadora de permissões do Limux / Unix para ajudá-lo a descobrir as permissões de um arquivo ou diretório. p>     

por 28.12.2011 / 09:58