- ベストアンサー
別ユーザでのコマンド実行(root権限)のやり方を教えて下さい
現在、Solaris9でroot権限のコマンドを実行したいのですが、いちいちroot権限になってからコマンドを実行するのが面倒です。 ex) aaaユーザでrebootを実行したい。 出来るならaaaユーザにはスーパーユーザのパスワードを教えたくない 一応、「sudo」というコマンドを使用すれば出来ると分かったのですが、現在の環境ではsudoコマンドはありませんでした。 別の方法で出来るかどうか教えて頂けないでしょうか。 すみませんが、回答よろしくお願いします。 環境: OS:Solaris9
- みんなの回答 (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できたら(自分が使っている時に勝手に再起動かけられたら)、イヤでしょう?