web-dev-qa-db-ja.com

EUIDとUIDの違いは?

[〜#〜] euid [〜#〜][〜#〜] uid [〜#〜]と同じではありません。これらはどちらもスクリプトでどのコンテキストで使用されていますか?

echo "UID is $UID and EUID is $EUID"で値を取得しようとしましたが、出力としてスペースのみが表示されました。私のマシンはUbuntu 12.04 LTSを実行しています。一部のサイトでは、これが通常はrootユーザーであるかどうかを確認するために使用されており、適切な違いを得ることができないことが確認されています。

15
Arun Chettoor

ダッシュではなく、bashでのみ機能します(Debianベースのディストリビューションでは、Ubuntu shは通常ダッシュへのシンボリックリンクであるため)。

スクリプトをインタラクティブに実行している場合、デフォルトのシェルとしてbashが構成されていない可能性があります。試す前にbashを実行してください。

コンソールから実行している場合:

bash script.sh

パスを使用して実行している場合(例:./script.sh)スクリプトの最初の行が次のとおりであることを確認します。

#!/bin/bash

そしてない:

#!/bin/sh

それを行うより一般的な方法については、次を確認してください: https://askubuntu.com/questions/15853/how-can-a-script-check-if-its-being-run-as-root

その投稿では、コマンドidが言及されています。

id -u    # is the EUID
id -u -r # is the UID
11
Fernando

プログラムがset-uidを実行している場合は異なります。実効UIDは変更後のユーザー、UIDは元のユーザーです。

19
Barmar