他の人/ルートファイルを送信するにはどのような権限が必要ですか?

他の人/ルートファイルを送信するにはどのような権限が必要ですか?

だから私はシステムでいくつかの権限で遊んでいましたが、ファイルを別の場所に送信するように指定された権限がないことがわかりました。

一般ユーザーとして、次のコマンドを試しました。メッセージの受信に満足していますが、ファイルを送信するために必要な権限が何であるかはまだわかりません。mail -a //etc/shadow [email protected]Permission Denied

つまり、mailメールプロトコルにはコマンドを使用しますが、他のコマンドやプロトコルはどうですか?

ただし、このファイルの権限は次のとおりですshadow

-rw-r-----   1 root  shadow    1759 Oct 23  2017 shadow

答え1

いいえ、ファイルを「送信」するのは実際にはファイルシステムレベルの操作ではないからです。このmailコマンドが実行するのは、ファイルを読み取るためにファイルを開き、データを読み取り、ネットワークソケットを介して転送(書き込み)することです(電子メールの場合はエンコードできますが、重要ではありません)。同様に、FTPクライアントscpや他のクライアントも同じことを行い、ファイルを正常に読み込みます。

読み取り権限がないため、ユーザーIDで実行する/etc/shadowmail読み取れません。

Linuxではsendfile()システムコールread()、これは2つのファイルディスクリプタ間で直接データをコピーしますが、これはデフォルトで1つwrite()のファイルディスクリプタを呼び出して別のファイルディスクリプタを呼び出すのと同じですが、カーネルで発生するため、システムコールのオーバーヘッドが少なくなります。また、読むにはソースコードを開く必要があります。

関連情報