Linux x86_64Sistema de arquivos#304
open_by_handle_at
Abre um arquivo a partir de um file handle opaco obtido com name_to_handle_at.
Descrição
Contraparte de abertura de `name_to_handle_at`.
man 2Desde o kernel 2.6.39
Nota
Exige CAP_DAC_READ_SEARCH — file handles ignoram as permissões normais de diretório na resolução, então essa restrição de capability é a principal barreira de segurança.
Assinatura
int open_by_handle_at(int mount_fd, struct file_handle * handle, int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| mount_fd | int | Descritor de qualquer arquivo dentro da montagem referenciada pelo handle. |
| handle | struct file_handle * | File handle previamente obtido. |
| flags | int | Flags de abertura, como em open. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | mount_fdint |
| rsi | argumento 2 | handlestruct file_handle * |
| rdx | argumento 3 | flagsint |
Valor de retorno
Um novo descritor de arquivo 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.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- ESTALE(116)
- File handle obsoleto (comum em NFS).