バイナリが同一で、同じ権限を持ち、ドライブ上で一意であり、に見つからない2つのbashスクリプトがありますsudoers
。それでも、1つはルートのuidテストに合格し、もう1つは合格しません。./
binフォルダー内の最初のものを呼び出すと、2番目のように動作します。
スクリプト(sync-samuel):
#!/usr/bin/env bash
echo "[$0]"
whoami
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root"
exit 1
fi
id -u
exit
出力:
samuel@xeon:~$ sync-samuel
[sudo] password for samuel:
[/home/samuel/bin/sync-samuel]
root
0
samuel@xeon:~$ sync-samuel2
[/home/samuel/bin/sync-samuel2]
samuel
This script must be run as root
samuel@xeon:~$ cd bin
samuel@xeon:~/bin$ ./sync-samuel
[./sync-samuel]
samuel
This script must be run as root
権限:
-rwxr-xr-x 1 samuel samuel 435 Feb 1 22:36 sync-samuel
-rwxr-xr-x 1 samuel samuel 435 Feb 1 22:37 sync-samuel2
ファイル:
samuel@xeon:~/bin$ file sync-samuel
sync-samuel: a /usr/bin/env bash script, ASCII text executable
samuel@xeon:~/bin$ file sync-samuel2
sync-samuel2: a /usr/bin/env bash script, ASCII text executable
何がこの動作をトリガーするのか、またはこれら2つのファイルの拡張プロパティを表示する方法を知っている人はいますか?Lubuntu 14.04 LTS w / bash 4.3.11(1)-リリースを使用しています。
編集:G-Manは男です!最初のものもエイリアスです:
samuel@xeon:~/bin$ type sync-samuel2
sync-samuel2 is hashed (/home/samuel/bin/sync-samuel2)
samuel@xeon:~/bin$ type sync-samuel
sync-samuel is aliased to `sudo /home/samuel/bin/sync-samuel'
出力は、なしで実行し、スクリプト自体がを呼び出さない場合でもsync-samuel
、sudo
プロンプトを発行することを示しています。これは意味がありません。入力すると、質問に表示されているスクリプト以外のものを実行しているように見えます。sudo
sudo
sync-samuel
sync-samuel
それはsync-samuel
実際にはのエイリアスsudo sync-samuel
または類似のものである可能性があります。別の可能性はsync-samuel
、別のディレクトリに別のコピーがあり、シェルが探しているコピーではなく、それを検出(および実行)していることです。これを診断するには、次のコマンドを発行します。
type sync-samuel sync-samuel2
type
は、シェルが各コマンドをどのように解釈するかを示す組み込みコマンドです。2つのファイルに対して大幅に異なる応答を受け取った場合(たとえば、sync-samuel
エイリアスであり、そうsync-samuel2
でない場合)、それらを同じように処理する方法を知っています(たとえば、のエイリアスsync-samuel2
も定義します)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加