実行可能ファイルを読み取ることはできますか?


9

ファイルに権限-rwx-wx-wxがある場合、他のユーザーやグループユーザーが読み取ることができますか、それとも実行および書き込みのみが可能ですか?実行可能ファイルを実行して読み取る方法はありますか?


私が言うことができる標準的な方法はありません。
Tim

回答:


18

-rwx-wx-wx権限を持つファイルには、所有者には読み取り/書き込み/実行権限があり、他のすべての人には書き込み/実行(読み取りではない)権限があります。

それは、スクリプト(と通常のテキストファイルだ場合は#!最初の行に)、それはできません、スクリプトを実行すると、実際にスクリプトを読み込むことができなければなりませんインタプリタを実行するので、他の人によって実行されます。(インタープリターは別のスクリプトではなく、バイナリーでなければなりません。)(実際、すべてのシステムに当てはまるわけではありません。3.2.0Linuxカーネルを備えたUbuntuでは、インタープリター自体をインタープリタースクリプトにすることができます。制限があるようです。約4レベルです。これは、この質問には関係ない可能性があります。)

バイナリ実行可能ファイルの場合、直接実行できますが、その内容を読み取ることはできません。これは、たとえば、所有者以外の誰かがそれをコマンドとして実行することはできても、実行可能ファイルのコピーを取得できないことを意味します。

もちろん、実行には読み取りが必要ですが、ユーザーではなくカーネルによって読み取られます。実行中のプロセスのメモリを調べることにより、実行可能ファイルの内容に関するいくつかの情報を取得できる場合がありますが、バイナリ実行可能ファイルを再構築できるとは思えません。実行可能ファイルがsetuidの場合、プロセスのメモリを調べることはできません(実行しているアカウントにアクセスできない場合)。

ちなみに、-rwx-wx-wxは非常に奇妙な権限のセットです。所有者以外のユーザーがファイルを読み取れないように保護しますが、誰でもファイルを変更できます。それが理にかなっているとは思えない。


ただ抽象的なランダムな質問:プロファイリング/デバッグツールは、実行可能権限のみを持つexecで動作しますか?
サイラム2012年

@Sairam:実験はノーchmod 111 hello ; gdb ./helloと言う:言う./hello: Permission denied.; r言うNo executable file specified.
キース・トンプソン

非実行可能ファイルの場合、-rw--w--w-のようなものは、ユーザーがログを読み取ることができなくても情報をログに書き込むことができるようにするログファイルのようなものに役立ちます。もちろん、ファイルを空にすることもできますが、それは別の問題です。
Dave

6

これらの権限がある場合、ファイルの所有者だけが実行できます。

他のユーザーはそれに書き込むことはできますが、実行することはできません(この場合の実行はそれを読み取ることができることを意味するため)が、一種のブラックボックスとして書き込むことができます。

user1:~$ cd /tmp
user1:/tmp$ echo "hostname" > testfile.sh
user1:/tmp$ chmod +x testfile.sh 
user1:/tmp$ ./testfile.sh  
server.example.com

user1:/tmp$ chmod 733 testfile.sh 
user1:/tmp$ ls -l testfile.sh 
-rwx-wx-wx 1 user1 user1 9 Jan 19 21:09 testfile.sh

user1:/tmp$ sudo su - user2
user2:~$ cd /tmp
user2:/tmp$ ./testfile.sh  
./testfile.sh: Permission denied
user2:/tmp$ cat testfile.sh 
cat: testfile.sh: Permission denied

user2:/tmp$ echo 'echo hello' >> testfile.sh 
user2:/tmp$ ./testfile.sh  
./testfile.sh: Permission denied

user2:/tmp$ logout

user1:/tmp$ ./testfile.sh
server.example.com
hello

4
シェルスクリプトを実行するには、読み取りとEXECUTEアクセスが必要です。ただし、コンパイルされたバイナリはそうではありません。したがって、上記の権限を持つコンパイル済みバイナリは、だれでも実行できます。
mdpc '19

1
これは、OPが何を達成しようとしているのか、つまり、コンパイルされたバイナリがなぜ書き込み可能であるのかという疑問を提起すると思います。アクセス許可のセット(733)は標準的ではないため、実際に理解するには少し時間がかかりました。
cjc 2012年

2

簡単な答えは「いいえ」です。読み取りアクセスexecを必要とせずに、syscall だけがファイルを読み取ることができます(ただし、実行アクセスは必須です)。か失敗するものとします。openO_RDONLYO_RDWR


1

もちろん、どのユーザーもrootユーザーが読み取ることができます。

また、システムローダー、メモリ管理、スワッパーなどは、「x」権限でファイルを読み取ります。それ以外の場合は実行できません。

実行可能コンテンツの開示で発生する可能性のある穴は、プロセスの/ procファイル、コアファイル、またはデバッガーの使用です。


これは、chmod| chown実行されました
ウォーレン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.