
私はバイナリが同じで同じ権限を持ち、私のドライブで一意であり、sudoers
まだ1つはrootのuidテストに合格し、もう1つはパスしない2つのbashスクリプトを持っています。./
bin フォルダーの最初の項目を呼び出すと、2 番目の項目のように動作します。
スクリプト(同期化 - サミュエル):
#!/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つのファイルの拡張属性を表示する方法を知っている人はいますか?私はbash 4.3.11(1)リリースでLubuntu 14.04 LTSを使用しています。
編集者: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'
答え1
実行中でなく、スクリプト自体が呼び出されていない場合でも、プロンプトが表示されるように出力されsync-samuel
ます。これは意味がありません。入力すると、質問に表示されているスクリプト以外のものを実行しているようです。sudo
sudo
sudo
sync-samuel
sync-samuel
これはsync-samuel
実際にはエイリアスまたはsudo sync-samuel
それに似ている可能性があります。もう1つの可能性は、sync-samuel
別のディレクトリに別のコピーがあり、シェルが見ているコピーの代わりにそれを見つけて実行することです。この問題を診断するには、次のコマンドを実行します。
type sync-samuel sync-samuel2
type
シェルが各コマンドを解釈する方法を示す組み込みコマンドです。 2つのファイルに対してかなり異なる応答がある場合(別名でsync-samuel
はなくsync-samuel2
)、同じ処理を受け取るように進める方法(sync-samuel2
別名も定義)がわかります。