Qual é o efeito de nível de sistema das permissões de arquivo? [fechadas]

2

Eu sei que r significa permissão de leitura, w significa permissão de gravação e x significa permissão de execução na saída de ls -l , como -rwxr-xr-x .

Mas a minha pergunta é o que é a diferença de comportamento no sistema operacional para este modo?
O que o sistema faz com o arquivo somente leitura e o que o sistema faz com o arquivo gravável ou como o sistema faz quando vê um arquivo executável?

Ou melhor: por que nem todos os arquivos estão em um modo?

Não estou perguntando sobre as diferenças de permissões para usuários, grupos e outros, ignore isso.
Minha pergunta é sobre qual a diferença técnica entre o modo executável e o modo legível e gravável. Qual é a diferença entre esses modos no acesso a arquivos?

    
por Mohammad Reza Rezwani 16.08.2014 / 10:09

3 respostas

1

Quando um programa deseja ler ou gravar em um arquivo, ele precisa chamar a chamada do sistema open() para o arquivo primeiro.
Um dos argumentos para a chamada especifica quais operações o programa deseja ser capaz de fazer. O programa indica que quer ler ou gravar o arquivo, e o processo não tem perspectiva para as operações, a open() da chamada acaba no erro EACCESS , e o arquivo não pode ser usado.

De maneira semelhante, quando um programa - por exemplo, seu shell - precisa executar um arquivo de programa, ele usa a chamada do sistema execve() . Isso retorna o erro EACCESS se a permissão de execução não for dada pelo modo de arquivo.


Abaixo estão algumas partes relevantes das páginas man na seção 2, "chamadas do sistema"

A partir da página man do open (2) man 2 open :

OPEN(2)                   Linux Programmer's Manual                   OPEN(2)



 NAME
        open, creat - open and possibly create a file or device

 SYNOPSIS
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>

        int open(const char *pathname, int flags);

[...]

        The argument flags must include one of  the  following  access  modes:
        O_RDONLY,  O_WRONLY,  or O_RDWR.  These request opening the file read-
        only, write-only, or read/write, respectively.

[...]

ERRORS
        EACCES The requested access to the file is not allowed, or search per‐
               mission is denied for one of the directories in the path prefix
               of pathname, or the file did not exist yet and write access  to
               the  parent  directory  is not allowed.  (See also path_resolu‐
               tion(7).)


Da man page para execve (2) man 2 execve :

EXECVE(2)                  Linux Programmer's Manual                  EXECVE(2)



 NAME
        execve - execute program

 SYNOPSIS
        #include <unistd.h>

        int execve(const char *filename, char *const argv[],
                   char *const envp[]);

[...]

        EACCES Execute permission is denied for the file or a script or ELF interpreter.
    
por 16.08.2014 / 20:03
3

Quando o usuário tenta acessar um arquivo ou diretório, o kernel permite abrir o arquivo ou diretório com o parâmetro mode definido para quais permissões são atribuídas a esse usuário específico.

Portanto, se o usuário tiver apenas a permissão read , o arquivo aberto por um aplicativo será fornecido apenas para ler o conteúdo do arquivo pelo kernel .

    
por 16.08.2014 / 13:13
0

As permissões do RWX controlam como os usuários no sistema podem interagir com os arquivos. Por exemplo, o usuário da raiz pode fazer qualquer coisa em um arquivo. enquanto o acesso de um usuário padrão a um determinado arquivo é regido pelas permissões desse arquivo. Tanto quanto sei, o sistema operacional não interage diretamente com os arquivos em si. Mas, em vez disso, usa contas de usuário do sistema que, por sua vez, obedecem às permissões do arquivo. As contas de usuário do sistema normalmente têm um fluxo de menos de 500 (algumas distribuições usam 1000) e não podem ser registradas diretamente. O sistema operacional usará essas contas para modificar arquivos.

    
por 16.08.2014 / 10:37