root権限に限らないのですが、他のユーザーの権限でしか実行できないコマンドを自分で実行する方法が知りたいのです。
と言っても、rootや他ユーザーのパスワードを知っているという前提です。

例えば、通常ユーザーで作業をしているときに、root権限で行う必要のあるコマンドを実行したいとします。
今は、suでログインしてから実行していますが、shellスクリプトで実行したいと思っています。

どういったshellスクリプトになりますでしょうか?

このQ&Aに関連する最新のQ&A

とは GNU」に関するQ&A: GNUとは?

とは シェル」に関するQ&A: シェルとは

A 回答 (2件)

> 今回やろうと思ってるのは、suでログインしてから、いくつかの操作を行いたいので



であれば、そのいくつかの操作をまとめてシェルスクリプトにして、
それを su の -c に渡せば良いですね。

例えば、rally というユーザで、シェルスクリプト名が do_rally.sh とします。
スクリプトに実行権限がついていなければ

% su - rally -c "sh do_rally.sh"

という感じ。実行権限がついていれば

% su - rally -c do_rally.sh

で良いです。

ただ、最低一回はパスワードの入力があるので、su を使っている限りは
それからは逃れられません。

# ちょっと遅くなったので、もう sudo を使っているかな?
    • good
    • 2
この回答へのお礼

> % su - rally -c "sh do_rally.sh"

あ、これいいですね。

> # ちょっと遅くなったので、もう sudo を使っているかな?

sudoはちょっと難しかったので、"su root"でログインしてからshellを実行するようにしてました。
そのshellでは、root以外のユーザーで実行したいプログラムもあったので、下のように書いてました。

su rallyx -c "runAAA"

1.su rootでroot権限を得る。
2.シェルを実行する。

という2つの処理をa-kumaさんの方法だと1つで済みますね。
#なんで気づかなかったんだろう・・・。(^^;

ありがとうございました。

お礼日時:2001/09/17 23:51

ひとつの方法は、su の man を詳しく見てみることです。



例えば、GNU の su には、-c というオプションがあり、コマンドを指定できます。
例えば、

% su -c ls -

で、root 権限で ls を実行できます。

もうひとつの方法は sudo というプログラムを使うこと。参考URLに紹介して
おきます。

もし、あなたが C 言語と、システムコールについてそこそこ詳しいのであれば、
プログラムを作るのは、さして難しいことではありません。setuid という
関数のマニュアルを読んでみてください。

参考URL:http://www.courtesan.com/sudo/

この回答への補足

suコマンドにそういうオプションがあったのですね。
manをちゃんと見る癖をつけないとだめですね~。

今回やろうと思ってるのは、suでログインしてから、いくつかの操作を行いたいので、su -cでは難しそうです。
1行ごとにpasswdを入力する必要がありますよね?

そういう場合はsudoになるのでしょうか?
この方向でも考えてみます。

補足日時:2001/09/15 12:22
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q職務権限基準表を英語で

職務権限基準表を英語でなんというのでしょうか。

Aベストアンサー

tabuk1さん、こんにちは!

私の会社では Authoritiesと言っていますね。
それが表になっているのなら、
Table of authoritiesとか、
Authorities chartで良いのではないかと思いますが。

Qiptableコマンドを複数記載したスクリプトを実行したいです。

Linuxのコマンドについてお聞きしたいです。
iptableコマンドを複数記載したスクリプトを作成し、そのスクリプトを実行することによってパケットフィルタリングの設定をしようと思っています。
Windowsで下記のようなファイルを作成しました。

#!/bin/sh

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -d 210.98.76.54 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -d 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -d 202.228.202.2 -p udp --sport 53 --dport 1024:65535 -j ACCEPT

iptables -A INPUT -j LOG --log-prefix "### INPUT ###"
iptables -A FORWARD -j LOG --log-prefix "### FORWARD ###"


これをLinuxの/rootに作成したbinフォルダにフロッピーでコピーしました。
ファイル名をfilterにしたので、[root@linux root]# filter とし、Enterとし、
スクリプトを実行して設定を反映させようとしました。

しかし、: bad interpreter: そのようなファイルやディレクトリはありません
と出てしまいます。

何が足りないのでしょうか?

Linuxのコマンドについてお聞きしたいです。
iptableコマンドを複数記載したスクリプトを作成し、そのスクリプトを実行することによってパケットフィルタリングの設定をしようと思っています。
Windowsで下記のようなファイルを作成しました。

#!/bin/sh

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -...続きを読む

Aベストアンサー

スクリプトをWindowsで作成したからです.
改行コードに余分な<CR>があり,/bin/sh<CR>という
コマンドは無いので,bad interpreter になります.

dos2unix というコマンドが使えれば,簡単コードを
変換できます.

まあ,今後のためには,Linux上でエディタを使える
ようになることをお勧めします.

Q管理者権限を英語で(IT英語)

管理者権限がありません。と英語で表現するにはどういうのが適切でしょうか?

また、IT関連用語の英語を学べるサイトなど教えて頂けないでしょうか?ぜひお願いいたします。

Aベストアンサー

administrative rightも一候補ですね。
http://vine-linux.ddo.jp/windows/domainremove.php

IT用語集 で検索すれば一杯ヒットします。
英/英サイトも参考にして下さい。
http://whatis.techtarget.com/

メーカーやベンダーのサイトにも用語集があります。

参考URL:http://yougo.ascii24.com/

Qsuコマンドが。。。

初心者の質問ですが、教えて下さい。
先日RedHat8.0をインストールしたのですが、root以外のログインができません。
ユーザーを追加し、パスワードを設定するところまではでき、GUI画面のユーザーとグループでも追加されていることを確認できています。
ただ、ログイン時にその追加したユーザーでログインできず、またターミナルでsuコマンドを使おうとしても、反応がありません。
画面的には、こんな感じです。

[root@xxx root]# su - aaa
[root@xxx root]#

このように、エラーすら出ない状態です。
ログイン時のroot以外のユーザ名を入れたときも同じ感じです。
ご助言、よろしくおねがいいたします。

Aベストアンサー

/etc/passwdファイルを確認して実際にユーザが追加されているか確認してみてください。
/etc/shadowファイルを確認してユーザのパスワードの設定がされているか確認してみてください。

ちなみにrootからsuを叩くとノンパスで通ってしまうので、もしかしたら成功しているかもしれません。
確認のためにsuの後にidコマンドを叩いてみてください。

Q管理者権限を英語で

管理者権限がありません。と英語で表現するにはどういうのが適切でしょうか?

また、IT関連用語の英語を学べるサイトなど教えて頂けないでしょうか?ぜひお願いいたします。

Aベストアンサー

You have no privilege of the administrator.

「あなたはシステム管理者の特権を有しない」

こんな感じではどうでしょうか?

Qユーザーを作成したのに、suできません。

あるLinuxサーバがあります。
ディストリビューションが不明で、RedHatかTurboだということだけわかっています。
ユーザー「rio_grande」を下記コマンドより追加しました。

useradd -p qwertyui -d /home/rio_grande rio_grande

追加後、rootからsu - rio_grandeすると問題なくrio_grandeユーザーになることができますが、他の一般ユーザーからはrio_grandeになれません。Login Incorrectというメッセージが表示されます。
どうしてでしょうか。

ディストリビューションとバージョンの発見方法も教えていただけると助かります。
よろしくお願いします。

Aベストアンサー

>残念ながら、/etc/pam.d/配下にはファイルは何もありませんでした。

空っぽですか? 変ですね~。
そのサーバの管理者が何か独自にシステムをカスタマイズしてるのでしょうか?
一度、サーバ管理者にきいてみてください。


たとえば、/etc/groupファイルを確認してみてください。

SUできるユーザが、あるグループに属していて、
rio-grandeというユーザはそのグループに属していない、ようになってないですか?

Q「業務分掌規程」、「職務権限規程」にあたる英語は?

上記規程を英文で作成したいと考えています。
それぞれに対応する英語訳は何になるのでしょうか。
また、それぞれの事例を集めた英文サイトあるいは書籍の
情報がありましたら、教えてください。
よろしくお願いします。

Aベストアンサー

翻訳者です。

「業務分掌規程」:Policies of Dividing Duties
「職務権限規程」:Policies of Administrative Authority

でどうでしょう? 
「規程」(多くの条項で構成される)は、ほとんどの場合
"Rules and Regulations "と訳すことが多いようです。
が、
内容が限定的で条項が少ない場合は、一般的に「規程」ではなく
「規定」と書きますよね?
「業務分掌について」「職務権限について」とかなり内容が絞られて
いるようなので、これらは「規定」="policy"に近いと思います。

サイトや書籍については、すみませんが即答しかねます。

Qshell の time コマンドの結果をファイルに出力する方法(AIX)

AIX4.3 の環境でプログラムのパフォーマンスを確認しようと思っています。「time XXXXX 2> perform.log」で標準エラー出力をファイルに書き出そうとしているのですがうまくいきません。time コマンドのパフォーマンス結果は標準エラー出力に書き出されると思うのですが、リダイレクトしたファイルは何も書かれていません。画面にtime コマンドの結果が表示されるだけです。time コマンドではなく通常のエラーは標準エラー出力からファイルに書き出すことはできます。原因がわからずこまっています。よろしくお願いします。

Aベストアンサー

 お使いのシェルの仕様にもよると思いますが、

(time XXXX) 2> perform.log

でどうでしょうか?
 手元の cygwin の bash ではうまく行きました。
 time の出力は、コマンドではなくシェル自身の出力なので、() で括ってやらないとリダイレクトできないものと思われます。

Q翻訳(日本語→英語)お願いいたします。

あるソフトウェアをインストールしました。
その結果をメーカーに英語で回答する必要があるのですが、
英語がまったくダメなため翻訳をお願いできればと思います。

--------------------------------
1)Administrator権限でのインストール ---> 問題なし
2)PC再起動 ---> 問題なし
3)"ソフトウェア"の起動 ---> 問題なし
4)ユーザ権限でのPC再起動 ---> 添付画像のエラー発生

エラーが表示されないようにしてください。
--------------------------------

よろしくお願いいたします。

Aベストアンサー

1. I installed the software with the administrator's permission. No problem, it worked.
2. I restarted my PC. No problem, it was successful.
3. I booted up the software. No problem. It started.
4. By right of the software user, I restarted my PC. Then the attached picture had an err.

I do not want to see the error message. How can I stop to it? Please help me.

以上でいかがでしょうか?

Q一般ユーザーからrootになったあとlinuxconfが立ち上がりません。

LASER5 7.2を使用しています。一般ユーザーでログインし、「su」でrootになってから「linuxconf」とうちこむと次の文が出てきます。
Error message from remadmin :Xlib:connection to ":0.0" refused by server
Error message from remadmin :Xlib:Client is not authorized to connect to Server
Error message from remadmin :
Error message from remadmin :Gtk-WARNING**: cannot open display: :0.0
アクセス権限がないということらしいですが、どこをどういじれば改善できるでしょうか。ちなみに、最初からrootで入るとちゃんとlinuxconfは立ち上がります。

Aベストアンサー

su する前に xhost + を実行し、 su した後に DISPLAY=localhost:0.0 と export DISPLAY としてください。
ログインシェルが csh 系の場合は、setenv DISPLAY localhost:0.0 としてください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報