ファイル権限がシステムレベルに与える影響は何ですか? [閉鎖]

ファイル権限がシステムレベルに与える影響は何ですか? [閉鎖]

これは、の出力でr読み取り権限、w書き込み権限、実行権限などを意味することがわかります。xls -l-rwxr-xr-x

しかし、私の質問は、このモードでのオペレーティングシステムの動作の違いは何ですか?
私は、システムが読み取り専用ファイルで何をしているのか、システムが書き込み可能なファイルで何をしているのか、またはシステムが実行可能ファイルを見るときに何をするのかを意味します。

または、より良い言葉は:なぜすべてのファイルが1つのモードになっていないのですか?

ユーザー、グループ、その他のユーザー間の権限の違いについて尋ねることはありません。無視してください。
私の質問は、実行可能モードと読み書き可能モードの技術的な違いが何であるかです。これらのファイルアクセスモードの違いは何ですか?

答え1

ユーザーがファイルまたはディレクトリにアクセスしようとすると、特定kernelのユーザーに割り当てられた権限に設定されたパラメータを使用してファイルまたはディレクトリを開くことができます。mode

したがって、ユーザーにreadアプリケーションで開かれたファイルに対する権限しかない場合kernel

答え2

プログラムがファイルを読み書きする前に、ファイルopen()のシステムコールを呼び出す必要があります。
呼び出しの引数の1つは、プログラムが実行できる操作を指定します。
プログラムがファイルを読み書きするように指示し、プロセスが操作の観点を持っていない場合、呼び出しは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 権限は、システムのユーザーがファイルと対話する方法を制御します。たとえば、rootユーザーはファイルに対してすべての操作を実行できます。特定のファイルへの標準ユーザーアクセスは、ファイル権限に基づいて制御されます。私が知る限り、オペレーティングシステム自体はファイルと直接対話しません。代わりに、ファイル権限を尊重するシステムユーザーアカウントを使用してください。システムユーザーアカウントは通常500未満のuidを持ち(一部のディストリビューションでは1000を使用)、直接ログインできません。オペレーティングシステムはこれらのアカウントを使用してファイルを変更します。

関連情報