ファイル/ディレクトリの所有者とルートユーザーのみが、ファイル/ディレクトリのアクセス許可を変更できるユーザーであると確信しています。私は正しいですか、または権限を変更することも許可されている他のユーザーがいますか?
ファイル/ディレクトリの所有者とルートユーザーのみが、ファイル/ディレクトリのアクセス許可を変更できるユーザーであると確信しています。私は正しいですか、または権限を変更することも許可されている他のユーザーがいますか?
回答:
通常の操作では、rootと所有者のみがを使用できchmod
ます。さらに、所有者がターゲットグループのメンバーである限り、root can chown
およびchgrp
、さらに所有者はできchgrp
ます。
ただし、セキュリティを確保するために、別のケースがあります。ファイルを含むディレクトリへの書き込み権限を持つユーザーは、ファイルをコピーで置き換えることができ、所有者になり、権限と内容を変更できます。
そのようです:
14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile
drwxr-xr-x 3 me staff 102 Apr 11 14:14 .
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile
ディレクトリを作成し、ルートとしてファイルを作成しました。ルートはファイルを所有しているため、書き込みもできず、chmodもできません。
14:15 mybox:mydir echo bar > yourfile
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted
ただし、ディレクトリへの書き込み権限があるため、ファイルを置き換えて所有権を取得できます。
14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile
drwxr-xr-x 4 me staff 136 Apr 11 14:15 .
-rw-r--r-- 1 me staff 4 Apr 11 14:15 yourfile
そして、私たちが所有者になったので、もちろんこのファイルを使用して必要なことを実行できます。
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
同様に、への書き込み権限を持つユーザーの任意のファイルにつながる完全なパス内のディレクトリは、このように与えられた名前を持つファイルの所有権を獲得し、その時点からディレクトリ構造を置き換えることができます。もちろん、実際の元のファイル(「yourfile2」に名前を変更した)の所有権または許可は変更されません。
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2
getfacl / setfacl
これは、「クラシック」スタイルのファイルアクセス許可よりも柔軟性があります。* nixでのファイルの削除は、ディレクトリからファイルへのリンクを削除することで機能するため、ファイルの削除は常にディレクトリのアクセス許可によって制御されます。ファイルのパーミッション自体はそこでは何の役割も果たしません。
このchmod
コマンドは、同じ名前のシステムコールをかなり直接呼び出します。chmod(2)
システムコール(Linux 4.10)のマニュアルページには次のように記載されています。
呼び出しプロセスの実効UIDは、ファイルの所有者と一致するか、プロセスに特権が必要です(Linux:
CAP_FOWNER
機能を備えている必要があります)。呼び出しプロセスに特権がなく(Linux:機能がない
CAP_FSETID
)、ファイルのグループがプロセスの有効なグループIDまたはその補助グループIDの1つと一致しない場合、S_ISGID
ビットはオフになりますが、これはエラーが返されることはありません。
そのため、rootとして実行されているプロセスは、CAP_FOWNER
機能が低下していなければ、ファイルのパーミッションを変更できます。
また興味深いのはchown
; のマニュアルページはchown(2)
言う:
特権プロセス(Linux:
CAP_CHOWN
機能を持つプロセス)のみがファイルの所有者を変更できます。ファイルの所有者は、ファイルのグループを、その所有者がメンバーであるグループに変更できます。特権プロセス(Linux:withCAP_CHOWN
)は、グループを任意に変更できます。