chmod -x chmodを実行しました


回答:


43

Linuxの場合:

/lib/ld-linux.so.2 /bin/chmod +x /bin/chmod

http://www.slideshare.net/cog/chmod-x-chmod


bindbn、私は同じリンクを投稿しようとしていました:-)しかし、私はunix / linuxに新しいので、私自身を読んでいました!!!
リハタム

2
64ビットのディストリビューションでは、/lib64/ld-linux-x86-64.so.2代わりに使用する必要がある場合があります。 ldd /bin/chmod実行するリンカを正確にリストする必要があります。
goldPseudo

私は、用途はchmodのこと(2)最小限のプログラムを書きますが、これはクーラーである
アダモ

1
@Stefan:From man ld-linux.so:「ld.so [およびld-linux.so]は、プログラムに必要な共有ライブラリをロードし、実行するプログラムを準備してから実行します。」(ld.soのためのものであるa.out形式の実行可能ファイルおよびld-linux.soELFフォーマットのためのものである。)
さらなる通知があるまで一時停止。

1
@Stefan:カーネルは非常に複雑であり、カーネルではなくglibcに従うため、動的にリンクされた実行可能ファイルをロードおよび実行する方法を実際には知りません。ld-linux.so並べ替え可能な実行可能ファイル/ライブラリのハイブリッド、静的リンクの並べ替え、ユーザー空間で実行され、動的にリンクされた実行可能ファイルとそのすべての依存関係を読み込んで実行します。
ジュリアーノ


18

これは、コピー元のファイルではなく、コピー先のファイルの権限が保持されるという事実に依存しています。次の権限を「借用」していますls

cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod

私はあなたの最初のだと思うcpに-pフラグを持っている必要があります
Riking

@Riking:この目的には必要ありません。
追って通知があるまで一時停止します。

これは私が思いついた解決策に似ていましたがcp、実行可能ファイルを実行した後、一時ファイルにcatコンテンツをchmod追加しました。
スペル



5

これは奇妙です...数日前に誰かのツイートでこのようなものを見ました...

http://www.slideshare.net/cog/chmod-x-chmod


他のサイトへのリンクは、ある時点でリンクが破損するため、役に立たない。これは、誰かに答えをグーグルするように言うようなものです。
Phil Hannent

@Phil Hannent:ちょうど3日前にそのスライドショーも見たので、OPがそこの応募者の1人だったら、それは私の最初の考えでした。
ボルデウィン

同じ、ちょうど...数日背中のReddit上でこれを見た
Dentrasi

4

/bin/chmodダイナミックリンカでロードできないシステムにいる場合:

# /bin/mv /bin/chmod /bin/chmod.tmp
# install -p -m 755 /bin/chmod.tmp /bin/chmod

これは私のMacOS Xシステムで動作します。


2

/ rescue / chmod 555 / bin / chmod

mtreeも使用できると思います。


これは私のお気に入りのソリューションです。残念ながらLinuxでは動作しません。


1

新しいchmodを作成し、それを元の

umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod

umaskを000に設定しても、ファイルの作成時にファイルの実行許可は与えられません。せいぜいrw-rw-rw-パーミッションを取得します。
バリーブラウン

2
@Barry:実際には、creat(2)/ open(2)/ mkdir(2)/ etcに渡されるモードに依存します。umask == 0で、ファイルを作成するsyscallにモードの0777が指定されている場合、ファイルの実行ビットがオンになります。たとえば、リンカー/コンパイラは、「実行可能ファイル」を書き出すときに0777を渡します(たとえば(umask 000;gcc -o foo foo.c)foowithモード777 を生成します)。ただし、多くの(ほとんどの?)シェルは、リダイレクトのためにファイルを開く/作成するときに0666を渡します。つまり、この答えは多くのシェルでは機能しません。
クリスジョンセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.