- ベストアンサー
別ユーザでのコマンド実行(root権限)のやり方を教えて下さい
現在、Solaris9でroot権限のコマンドを実行したいのですが、いちいちroot権限になってからコマンドを実行するのが面倒です。 ex) aaaユーザでrebootを実行したい。 出来るならaaaユーザにはスーパーユーザのパスワードを教えたくない 一応、「sudo」というコマンドを使用すれば出来ると分かったのですが、現在の環境ではsudoコマンドはありませんでした。 別の方法で出来るかどうか教えて頂けないでしょうか。 すみませんが、回答よろしくお願いします。 環境: OS:Solaris9
- doh
- お礼率21% (7/32)
- Solaris系OS
- 回答数7
- ありがとう数8
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
RBAC(ルバック)を使うとどうでしょう? 通常はロールと呼ばれる特殊なユーザーにshutdownのようにrootの権限のなかから必要な権限だけを割り当てておいて、通常のユーザーからsuして特定のユーザーにrootの権限の一部のみを渡します。これが通常のRole-Based Access Control(RBAC)の使い方です。 ただ、推奨されてはいませんが、RBACの仕様上、ユーザーに直接こういう限定された権限を直接渡すこともできます。 推奨はロールをユーザーとして登録して、ユーザーでログイン後にこのロールにsuしてあとはそのまま作業をするという方法となります。それなりの権限を渡すので、それなりに敷居は高くて(手間はかかって)いいと思いますよ。このロールにsuするときのパスワードはこのロール個別に付けられますので、rootパスワードの漏洩無しにルートの機能を分散できるということです。 (以下は、ユーザーに直接「限定されたコマンド実行権」割り当てる手順です。(ファイルパーミッションなんかは自分で判断されてください) 1. /etc/security/exec_attrファイルに以下のエントリを追加する。 Shutdown User:suser:cmd:::/usr/sbin/shutdown 2. /etc/security/prof_attrファイルに以下のエントリを追加する。 Shutdown User:::Can Shutdown:auths=solaris.system.shutdown 3. /etc/user_attrファイルに以下のエントリを追加する。 aaa::::type=normal;profiles=Shutdown User,All 4. 念のため、以下のコマンドを実行してネームサービスキャッシュデーモンを再起動します。 # /etc/init.d/nscd stop # /etc/init.d/nscd start 5. 当然ですが、ユーザーがログイン中でしたら、一度ログオフしてももらいましょう。 ※私自身、ユーザーに直接ロールを割り当てることができることは知っていてもやったことはありません。もしかしたら、ユーザーaaaのシェルを該当するプロファイルシェルに変更する必要があるかもしれません。その場合は普通にusermod -sで変更してください。 (ロールをユーザーとして登録するときはそのロールに対して必須の設定です) sh: /usr/bin/pfsh、csh: /usr/bin/pfcsh、ksh: /usr/bin/pfksh がそれぞれ対応するプロファイルシェルです。 もし、NIS、NIS+ またはLDAPを使っている場合など多少話が変わってきます。詳しくは以下の文書を参照されてください。「役割によるアクセス制御(概要・手順・参照)」です。
その他の回答 (6)
補足ばかりで申し訳ないのですが、usermodで-s pfshをやると、現在設定されているパスが通らなくなるかも。(っていうかたぶんそう) なので、コマンド実行時に # pfsh -c /usr/sbin/shutdown -g0 -i6 -y したほうがいいでしょう。 あと、できればrebootコマンドよりもshutdownコマンドのほうがいいでしょう。rebootするなら事前に # sync;sync;sync したほうがいいような気が...
ごめんなさい。uidを指定するの忘れていた。 1. /etc/security/exec_attrファイルに以下のエントリを追加する。 Shutdown User:suser:cmd:::/usr/sbin/shutdown:uid=0 それと使い方ですが、ユーザーaaaにPATHの指定をしていなければフルパスで指定しなければいけません。 /usr/sbin/shutdown -g0 -i6 -y もちろん、rebootコマンドを使うならそういう設定にすればOKです。
- komugi100g
- ベストアンサー率58% (108/186)
sudoを導入すればいいのでは…。 <<Sudo>> http://www.courtesan.com/sudo/download.html 各FTPサイトのバイナリフォルダから sudo-*-sun4+Solaris9.tar.gzを落として展開後 TODOに従って導入します。
- shige_70
- ベストアンサー率17% (168/946)
特定のコマンドだけ実行できればいいのであれば、Cで、rootにseteuid()してからそのコマンドをexeclp()等するプログラムを作ればできます。 #1さんの方法だと、コマンドによっては内部でrootじゃないと使えない機能を利用していたりするので使えません。rootのsetuidしたとしてもこんどは誰でも実行できてしまったりするので危険です。コマンドの実体がシェルスクリプトである場合はその方法も使えません。 まあ、原則論としては他の方のおっしゃるとおりおすすめできないのですが、たとえば社内のテスト用サーバなどセキュリティより利便性を求められる場合もたしかにありますから、とりあえず紹介しておきます。
- shirabero
- ベストアンサー率21% (7/32)
>いちいちroot権限になってからコマンドを実行するのが面倒です。 こういう考え方をするユーザにroot権限を与えるのはやめましょう。 人間セキュリティホールになる事間違いなしです。 内部の個人情報を平気で持ち出すタイプです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
コマンドに一般ユーザに実行権限を与えるように chmod すればいいのでは 余計なお世話かと思いますが しかし、そういうようなことは、面倒だからといってやるべきことではないと思います。 勝手に誰れもが、rebootできたら(自分が使っている時に勝手に再起動かけられたら)、イヤでしょう?
関連するQ&A
- root権限の実行コマンドを通常ユーザーで実行
root権限に限らないのですが、他のユーザーの権限でしか実行できないコマンドを自分で実行する方法が知りたいのです。 と言っても、rootや他ユーザーのパスワードを知っているという前提です。 例えば、通常ユーザーで作業をしているときに、root権限で行う必要のあるコマンドを実行したいとします。 今は、suでログインしてから実行していますが、shellスクリプトで実行したいと思っています。 どういったshellスクリプトになりますでしょうか?
- ベストアンサー
- その他(OS)
- 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 お願いします。
- 締切済み
- Linux系OS
- ユーザー権限でログインするとsuでもフルパスコマンド?
root権限でifconfigとすると実行されますが、普通のユーザー権限で一旦suでroot権限になっても、ifconfigとすると -bash: ifconfig: command not foundとなります。 いちいち/sbin/ifconfigとしなければいけないので不便です。 コマンドごとにどのディレクトリにあるか知っていないと使えないし、whichコマンドも効かないので困っています。 何か良い方法はありますか? suにしてroot権限
- ベストアンサー
- Linux系OS
- ユーザ版のsudoってありますか
sudoでスーパーユーザでコマンドを実行できますが、逆にrootアカウントで一般ユーザ権限でコマンドを実行するコマンド、プログラムがありましたら教えてください。
- ベストアンサー
- Linux系OS
- Linuxでユーザ権限の確認コマンド
初歩的な質問です。 宜しくお願いします。 vipwコマンドで、 /etc/passwdのファイル編集画面を起動しました。 ユーザ一覧が表示されているのですが、 どのユーザにsudo権限が割り振られているのか確認する術はございますでしょうか。 ※rootの確認ではありません。 ※sudoユーザが複数いるものとして、どのユーザがsudo権限を持っているか確認したいと思っております。 宜しくお願い致します。
- ベストアンサー
- Linux系OS
- Linux root権限を持つユーザの作成について
どなたかご存知であれば教えてください。 Linux のsles10sp3にて、root権限を持つユーザーを以下で作成。 #useradd -o -u 0 -g 111 ~ 特に問題なく利用できていました。 しかし、Linuxのsles11sp3で同様にroot権限を持つユーザーを作成したところ おかしな事象が発生するようになりました。 事象はroot権限を持つユーザーを仮にadminという名前で作成したとします。 そのadminでLinuxへログインしてidコマンドを実行すると uid 0:root → uid 0:admin と表示されるようになり、ファイルのオーナーがrootだったものが一律adminで変わってしまうという事象が発生しました。 そのときは大いに焦りましたが約1時間放置するとなぜか元に戻ります。 suseのバージョンがあがってLinuxのユーザー管理で仕様が変更されておりますでしょうか? どなたかご存知でしたらご教授頂きたく、よろしくお願い致します。
- 締切済み
- Linux系OS
- 【コマンド】root権限 のコマンドを教えて下さい
いつもお世話になっております。 この度、皆様に教えて頂きたい事象が発生しました。 内容は以下の1点です。 現在Linux上にデータベース(MySQL)があります。 通常MySQLの操作を行うには (1)rootユーザ (2)一般ユーザ (3)匿名ユーザ 等でログインして操作を行うかと思われます。 しかし、ここであえてMySQLでのユーザで操作するのではなくOS上のユーザ(root)で操作することは可能でしょうか? 教えて頂きたいことをまとめると 【質問】 Linuxにログインする際のユーザ(OSのrootユーザ権限)でMySQLのエクスポートやインポートを行うことは可能かどうか? *補足 MySQLのrootのPWを忘れたからこういうことをやりたいのか? ⇒ いいえ、違います。PWを忘れた際の対処法は知っております。 単純に、Linux(OS)全体を扱っているrootユーザ権限で、データベースをいじれるかどうか(エクスポート、インポートが可能か)を知りたいのです。 サーバ系の知識が豊富な玄人の方々、アドバイス等頂けましたら幸いです。 *無理という回答でも結構です。 できるか、できないかが知りたいのです。 よろしくお願い致します。 以上
- 締切済み
- MySQL
- 権限の違うシェルスクリプトの実行
3つのシェルスクリプトがあります。 ●root権限で実行 aaa.csh ●ユーザ指定権限で実行 bbb.csh ●root権限で実行 ccc.csh この3つのシェルスクリプトはaaa.csh →bbb.csh →ccc.cshの順番でバッチ処理として cronに設定したいのですが、 権限が違うのでroot権限のcrontabとユーザ指定のcrontabに それぞれ設定しなくてはいけません。 あまりスマートではないかと思い、 何かよい方法はないかと質問させて頂きました。 3つのシェルスクリプト1つシェルスクリプトにまとめてroot権限のcrontabに設定してしまう方法とかどうでしょうか? ちなみにスクリプトの処理の内容は単純なファイルコピーなどです。 意味分かりますでしょうか? よろしくお願いします。
- ベストアンサー
- Solaris系OS
- コマンドプロンプトで別ユーザで実行するとき記述
Windows2000コマンドプロンプトで管理者権限でソフトを起動させようと考え RUNAS /USER:administrator "実行ファイル名" とバッチファイルに記述したのですが実行時にユーザーのパスワードを聞かれてしまいます。 何かユーザ名を聞かれなくする方法があれば教えてください。
- ベストアンサー
- Windows系OS
- phpでsudoコマンドの実行
ブラウザからAndroidアプリのプロジェクト作成を可能にしようとしています。 Linux端末もしくわターミナルのroot権限で 「android create project --target ○ --name △ --path /var/../../.. --activity △ --package ■〇△」←「..や〇、△等は適当です(笑)」 というコマンドを実行するとプロジェクトが作成されます。端末、ターミナルでのこのコマンド実行には成功しています。 上記のコマンドをブラウザで実行させようと、まず一般ユーザモードでsudoコマンドでの実行を試みました。 「sudo /home/../../android create project --target ○ --name △ --path /var/../../.. --activity △ --package ■〇△」 というコマンドを実行するとsudoコマンドでもプロジェクトが作成されます。端末、ターミナル内でのこのコマンド実行も成功しています。 次にブラウザからの実行ですが、 ブラウザからphpのsystem関数を用いてsudoコマンドを使ったコマンド実行を試みているのですが、できません。 自分なりに調べて、sudoコマンドに必要なパスを入力不要にし、サイトに書いてあったので、viコマンドで、sudoure内の「Defaults requiretty」に#も追加しました。 ブラウザでphpのsystem関数を用いて上記コマンドの実行は不可能なのでしょうか?
- 締切済み
- PHP