파일 권한이 시스템 수준에 미치는 영향은 무엇입니까? [폐쇄]

파일 권한이 시스템 수준에 미치는 영향은 무엇입니까? [폐쇄]

이는 의 출력에서 r​​읽기 권한, w쓰기 권한, 실행 권한 등을 의미한다는 것을 알고 있습니다.xls -l-rwxr-xr-x

하지만 내 질문은 이 모드에서 운영 체제 동작의 차이점이 무엇입니까?
내 말은 시스템이 읽기 전용 파일로 무엇을 하는지, 시스템이 쓰기 가능한 파일로 무엇을 하는지, 또는 시스템이 실행 파일을 볼 때 무엇을 하는지를 의미합니다.

아니면 더 나은 말은: 왜 모든 파일이 하나의 모드에 있지 않습니까?

사용자, 그룹, 기타 사용자 간의 권한 차이에 대해 묻는 것이 아닙니다. 무시하시기 바랍니다.
제 질문은 실행 가능 모드와 읽기 및 쓰기 가능 모드의 기술적 차이점이 무엇인지입니다. 이러한 파일 액세스 모드의 차이점은 무엇입니까?

답변1

사용자가 파일이나 디렉터리에 액세스하려고 하면 kernel해당 특정 사용자에게 할당된 권한으로 설정된 매개변수를 사용하여 파일이나 디렉터리를 열 수 있도록 허용합니다.mode

따라서 사용자에게 read애플리케이션에서 열린 파일에 대한 권한 만 있는 경우 kernel.

답변2

프로그램이 파일을 읽거나 쓰려면 open()먼저 파일의 시스템 호출을 호출해야 합니다.
호출에 대한 인수 중 하나는 프로그램이 수행할 수 있는 작업을 지정합니다.
프로그램이 파일을 읽거나 쓰도록 지시하고 프로세스가 작업에 대한 관점을 갖지 못하는 경우 호출은 open()오류로 끝나고 EACCESS파일을 사용할 수 없게 됩니다.

마찬가지로, 프로그램(예: 셸)이 프로그램 파일을 실행해야 하는 경우 시스템 호출을 사용합니다 execve(). EACCESS파일 모드에서 실행 권한을 부여하지 않으면 오류가 반환됩니다.


다음은 섹션 2에 있는 매뉴얼 페이지의 관련 부분입니다."시스템 호출"

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).)


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.

답변3

RWX 권한은 시스템의 사용자가 파일과 상호 작용하는 방식을 제어합니다. 예를 들어 루트 사용자는 파일에 대해 모든 작업을 수행할 수 있습니다. 특정 파일에 대한 표준 사용자 액세스는 파일 권한에 따라 제어됩니다. 내가 아는 한 운영 체제 자체는 파일과 직접 상호 작용하지 않습니다. 대신 파일 권한을 존중하는 시스템 사용자 계정을 사용하십시오. 시스템 사용자 계정은 일반적으로 500보다 낮은 uid를 가지며(일부 배포판에서는 1000을 사용함) 직접 로그인이 불가능합니다. 운영 체제는 이러한 계정을 사용하여 파일을 수정합니다.

관련 정보