Skip to content

chmod 2755

chmod 2755 define rwxr-sr-x: o dono tem acesso total, grupo e outros leem e executam, e o bit setgid faz um programa rodar com o grupo do arquivo ou faz os itens novos de um diretório herdarem o grupo dele.

Matriz de permissões

Quais bits de permissão cada classe tem
QuemLeitura (4)Escrita (2)Execução (1)Dígito
Dono (u)SimSimSim7
Grupo (g)SimNãoSim5
Outros (o)SimNãoSim5

Execução muda de sentido conforme o tipo. Num arquivo, deixa o kernel rodá-lo como programa. Num diretório, é a permissão de busca: entrar (cd) e alcançar os arquivos de dentro pelo nome. Leitura num diretório só lista os nomes.

O que cada classe pode fazer com um arquivo e com um diretório
QuemNum arquivoNum diretório
Dono (u)Ler, alterar e executarListar, entrar, criar, apagar e renomear itens
Grupo (g)Ler e executarListar, entrar e abrir itens
Outros (o)Ler e executarListar, entrar e abrir itens

Bits especiais deste modo

  • setgid (2000): o programa roda com o grupo do arquivo; num diretório, arquivos e subpastas novos herdam o grupo do diretório.

Dados

Representações deste modo
Octal2755
Simbólicorwxr-sr-x
ls -l, arquivo-rwxr-sr-x
ls -l, diretóriodrwxr-sr-x
Comando simbólico equivalentechmod u=rwx,g=rxs,o=rx
umask padrão que gera esse modoNenhum dos umasks comuns; defina explicitamente com chmod
Como o Git registra um arquivo assim100755 (executável)
Bits especiaissetgid

Quando usar

  • Diretórios onde um dono publica arquivos que precisam ter um grupo específico (por exemplo uma pasta de relatórios lida por um grupo de análise) enquanto os membros do grupo só leem.
  • Programas que precisam dos privilégios de um grupo e nada mais. O Debian instala o crontab como 2755 root:crontab para ele gravar no diretório de spool; o Fedora usa um crontab setuid root (4755). Um programa setgid concede bem menos que um setuid root.

Quando não usar

  • Scripts: o Linux ignora setuid e setgid em scripts interpretados (execve(2)), então o bit não faz nada além de confundir auditorias.
  • Programas que não foram escritos para rodar com privilégio elevado: qualquer falha que deixe o usuário gravar arquivos ou rodar comandos faz isso com os direitos do grupo.
  • Pastas compartilhadas onde o grupo precisa gravar: use 2775.

Comandos

Aplicar em um arquivo ou diretório
sudo chmod 2755 /srv/reports
sudo chmod u=rwx,g=rxs,o=rx /srv/reports   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' /srv/reports     # Linux (stat do GNU): 2755 drwxr-sr-x
stat -f '%Mp%Lp %Sp %N' /srv/reports   # macOS e BSD

Aplicando numa árvore inteira

O chmod -R colocaria o mesmo modo em arquivos e diretórios. Defina os diretórios como 2755 e os arquivos como 644 separadamente:

sudo find /srv/reports -type d -exec chmod 2755 {} +
sudo find /srv/reports -type f -exec chmod 644 {} +

Perguntas frequentes

O que significa rwxr-sr-x?
Dono rwx, grupo r-x com o bit setgid (o s substitui o x), outros r-x. Em octal isso é 2755.
Qual a diferença entre s e S?
O s minúsculo indica setgid com execução para o grupo. O S maiúsculo indica setgid sem execução para o grupo, o que num programa costuma ser erro.
Por que meu bit setgid sumiu?
O Linux zera setuid e setgid quando um processo sem privilégio grava no arquivo, e o chown também zera. O chmod ainda descarta o setgid num arquivo de um grupo do qual você não participa.

Revisado em por Arielton Oberek.