Voltar à lista
Linux x86_64Usuários & permissões#268

fchmodat

Altera as permissões de um arquivo relativo a um descritor de diretório.

Descrição

Versão *at() de `chmod`, permitindo operação relativa segura.

man 2Desde o kernel 2.6.16

Diferença entre versões

Diferente da maioria das chamadas *at(), a `fchmodat` original nunca implementou de fato AT_SYMLINK_NOFOLLOW no kernel — por isso `fchmodat2` (syscall 452) foi adicionada para suprir essa lacuna.

Assinatura

int fchmodat(int dirfd, const char * pathname, mode_t mode, int flags);

Parâmetros

ParâmetroTipoDescrição
dirfdintDescritor do diretório base, ou AT_FDCWD.
pathnameconst char *Caminho, absoluto ou relativo a `dirfd`.
modemode_tNovo modo de permissão.
flagsintNa chamada original, praticamente sem efeito prático — ver fchmodat2 para AT_SYMLINK_NOFOLLOW real.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1dirfdint
rsiargumento 2pathnameconst char *
rdxargumento 3modemode_t
r10argumento 4flagsint

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EBADF(9)
Descritor de arquivo inválido.
ENOENT(2)
Arquivo ou diretório inexistente.
ENOTDIR(20)
Não é um diretório.
EPERM(1)
Operação não permitida (falta de privilégio).

Relacionadas