• ベストアンサー

ユーザ名の習得

ユーザ名の習得 #!/bin/bash echo ${USER} # その他いろんな処理 # . # . 上記のようなスクリプトを,fooユーザで実行したとします. 結果はfooと出力されるのですが,実はこのスクリプトをsudo権限で実行する必要があり ${USER}がrootになってしまいます. echo ${USER}の結果をログインユーザ名にしたいのですが,なにか案はないでしょうか? #sudo権限が必要になるのは/usr/local/sbinに実行ファイルをコピーする必要があるからです. #ほかもいろいろありますが・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

sudoにも使えるか判りませんが… http://okwave.jp/qa/q4753686.html とか。 whoコマンドで表示される一覧から、ttyコマンドで表示される端末名でgrepしてみる…とか。 # ttyコマンドだと/dev/pts/0とかになりますが、/devはカットする必要があるでしょう。

その他の回答 (1)

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.2

${SUDO_USER}とか使えない?

関連するQ&A

  • 環境変数の設定(PATH)

    今、環境変数の設定(PATHの設定)を行っています。 OSは、RedHat9です。 スーパーユーザーのPATHは、 echo $PATHコマンドで見ると /usr/local/sbin:/usr/bin:/home/user1/test となっている。 しかし.bash_profileをみると PATHには、/usr/local/sbin:/usr/binしか 設定しておらず、 ユーザー(user1)の.bash_profileにも /home/user1/testをPATHに設定していない。 どこかでPATH設定を行っていると思いますが わかりません。 PATHの設定は、.bash_profileを設定するとは わかっているのですが、 スーパーユーザーの.bash_profileの記述と echo $PATHで見たPATHの構成がことなるのは なぜでしょうか? よろしくお願い致します。

  • パス(PATH)の設定ファイルについて

    OSはRed Hat Linux 9 を使用しております。 また、シェルはbashを使用しております。 ユーザがシステムにログインする際は、通常ですと /etc/profile ~/.bash_profile ~/.bash_login ~/.profile ファイルを読込、パス(PATH)の設定を行うと思いますが、 sshでrootユーザでシステムにログインした際は、 「echo $PATH」の結果は以下でした。 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/sbin su -で再度rootユーザでログインした際、もしくは、他ユーザからsu -でログインすると 「echo $PATH」の結果は以下でした。 /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/sbin ログインの仕方でパス(PATH)に違いがあります。 また、「/usr/local/bin」をパス(PATH)として設定している記述が 上記ファイルに見当たりません。 http://sakaguch.com/PastBBS/0038/B0018808.html http://oshiete1.goo.ne.jp/kotaeru.php3?q=800405 等のサイトを参考に、以下ディレクトリ配下を確認しましても /etc/profile.d /etc/rc.d/init.d /etc/rc.d/rc3.d 「/usr/local/bin」をパス(PATH)として設定している記述が 見当たりません。 ログインの仕方でパス(PATH)に何故違いがあるのか、 また「/usr/local/bin」をパス(PATH)として設定している記述がある ファイルをご存知の方ご教授頂きたく思います。 宜しくお願いします。

  • シェル変数(path)の挙動がわかりません

    シェル変数の挙動がわからなくて困っています。 以下のような3ファイルがあります。 % cat /tmp/test_config.sh #!/opt/local/bin/zsh path=($path /tmp) % cat /tmp/test.sh #!/opt/local/bin/zsh . /tmp/test_config.sh echo $PATH echo $path /tmp/test2.sh % cat /tmp/test2.sh #!/opt/local/bin/zsh echo $PATH echo $path which test.sh これを、所有者のユーザで実行するのとsu -c で実行するので挙動が変わります。 % /tmp/test.sh /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/tmp /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/local/bin /opt/local/sbin /tmp /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/tmp /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/local/bin /opt/local/sbin /tmp /tmp/test.sh % sudo su - hogehoge -c /tmp/test.sh /bin:/usr/bin:/usr/ucb:/usr/local/bin:/tmp /bin /usr/bin /usr/ucb /usr/local/bin /tmp /bin:/usr/bin:/usr/ucb:/usr/local/bin /bin /usr/bin /usr/ucb /usr/local/bin test.sh not found この挙動の違いは、何から産まれるんでしょう? .zshrc でそういう設定ができるんでしょうか? .zshenv は使ってません。 (なお、環境変数$PATHを使えば目的は果たせると言うのはわかっています)

  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • cronが動かない

    cron初心者なのでお願いいたします。 fedora5で以下のようなCronを動かそうとしています。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin HOME=/htdocs/program 45 18 * * * perl U9901.pl rootで作成し、/var/spool/cronのrootの実行権限は755になっています。 しかし実行されません。 編集後、crondは再起動しています。 どのような原因が考えられますでしょうか? 過去ログも見たのですが、それらしいものが無かったので質問させてください。 お願いします。

  • シェルがありません

    このたび、シェルを /usr/sbin/bashに変更しようとしたところ、 /user/sbin/bashと誤って入力してしまったため、 root権限になることができなくなって(シェルがありません)しまいました。 解決方法はありますでしょうか? よろしくお願いします。

  • sshdコマンドへのpathの貼りかた

    Linuxに関して質問があります。ターミナルでsshdを入力すると、 [xyz@localhost ~]$ sshd bash: sshd: command not found と出ます。 echo $PATHをやると、 [xyz@localhost ~]$ echo $PATH /usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/xyz/bin:/sbin とでます。 pathが通っていないのだと思うのですが、 .bash_profileに何と追記すれば良いのでしょうか?御教示下さい。宜しくお願い致します。

  • LiveからインストしたFedora MAKE出来ない

    こんにちは。 そのままですが・・・ Liveから起動後に、 HDDにインストールした Fedora8です。 # yum -y install update など一通りは終わってます。 一通りってアバウトで申し訳ありませんが。。。。 qmailをインストールしようと思いまして、 /usr/local/src にwgetで取って来て解凍後に、 パッチなどを当てて後に、 # make setup check とすると。 bash: make: command not found と出ます。 makeがないのかな?って思いまして、 # whereis make make: /usr/bin/make でした。 # echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin: だったので一応、 #vi .bash_profile export PATH=$PATH:/usr/bin/make で通すと /usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/bin/make になりましたが、 # make setup check すると、 bash: make: command not found と出ます。 その他、 アプリケーション→ソフトウェア追加・削除から、 開発なども少し追加してみましたが。。。 どうも上手くmakeが動きません。 その他、アプリケーションとか稼働させてますので、 再インストールすれば良い! などの回答ではなく、今の状況からmakeが使えるように、 なる方法をご教授下さい。 よろしくお願いします。

  • Linux  CentOS shellスクリプト内でユーザーをスイッチする方法教えて下さい。

    困っています。ご存知の方教えて下さい。 一般ユーザーでshellスクリプトを実行して、root権限にスイッチして、root権限のみに許されたコマンドを実行してから、 一般ユーザーに戻る方法がわかりません。 ターミナルで sudo su コマンドを実行すると、対話式でパスワードを入力できますが、スクリプト内で対話式のパスワードを入力してrootに ユーザーをスイッチする方法がわかりません。 ------------ !#/bin/sh mkdir /home/user1/tmp ←一般ユーザーで実行したいコマンド sudo su ←ここでパスーワード入力して rootに権限スイッチ mkdir /var/log/aaa   ←root権限で実行したいコマンド su user1 touch /home/user1/bbb ← 一般ユーザーに戻ってコマンド実行 ------------ 環境:CentOS5 お願いします。

  • OS X bash実行ファイルからexport

    Mac OS X 10.6でbashシェルスクリプトに実行権限を与えて使います。 この中のexportが環境変数に反映されないのは何故でしょう? 以下実行ファイル(do.sh*)の中味です: #!/bin/sh KankyoHensu=Foo export KankyoHensu echo $KankyoHensu $source do.sh を行なうとちゃんとKankyoHensuが設定されますが、 $do.sh では設定されません。echoの方は予定通り動きます。 どなたか、よろしくお願い致します。