[wiki:docs Vine Linux ドキュメント] / [wiki:../../ Vine Linux 7.x] / [wiki:../ CUI ユーザーズガイド] / root権限 = root権限 = == rootとは == root(ルート) は、一般ユーザとは異なり、システムの管理などのために、ほぼ全ての操作を行う権限を持った特別なユーザです。 アプリケーションのインストールおよびアンインストールや、ユーザーの登録および抹消や、(ハードディスクやUSBメモリなどの)ファイルシステムのマウントおよびアンマウントや、ファイルのアクセス制限を無視した読み書き作成削除が出来たりなど様々なことが出来るため、何か誤操作を行うとシステムを破壊したり、重要なデータを削除するということも起こります。 本当に必要な時だけrootで作業し、それ以外の時は一般ユーザで作業するようにしてください。 rootは、rootユーザ、スーパーユーザ、管理者などとも呼ばれます。 su - コマンド等で root になったうえで、あるいは root で login したうえで何か作業を行うことを、「root権限で○○を実行」、「スーパーユーザ権限で○○を実行」、「管理者権限で○○を実行」のように表現します。 sudo や gksu などのような、root権限で特定のコマンドを実行するためのプログラムもあります。 == rootユーザになるには == コンソールや、gnome-terminal(GNOME)、Konsole(KDE)、Terminal(XFce)、xterm(WindowMaker)、kterm、mlterm などの端末から、コマンドで su - root と入力し root のパスワードを入力します。 su コマンドは指定したユーザに切り替えるコマンドですが、ユーザ名を省略すると root になるので su - という形で利用できます。 {{{ $ su - パスワード(P): }}} Konsole では上部メニューの セッション → 新規シェル(root) を選択することでもできます。 rootユーザになり、コマンド入力によって作業を行ったりアプリケーションを起動することなどができます。 コマンドで exit もしくは logout と入力すると、su - を実行する前のユーザに戻ります。 {{{ # exit }}} また、gnome-terminal などのアプリケーションのタイトルバーのボタンをクリックすることでウィンドウを閉じて終了してもかまいません。 su コマンドついては、su - とする場合と su とした場合では動作が異なります。 jman su で日本語の man page を読むことが出来るので、-, -l, --login というオプションの部分について参照してください。 オプションの有無による違いを理解することが大切ですが、-オプションをつけることによるトラブルよりも -オプションをつけないことによるトラブルのほうが多いように思うので、「su コマンドを使うときには - というオプションも使う」と覚えてしまってもいいかもしれません。 LANとセキュリティ のセキュリティのところに PAMを使ったセキュリティ の方法が記述されています。参照しておいてください。 == root権限でアプリケーションを起動するには == コマンドやアプリケーションを root権限で起動するには、セクション IV.15.2 - rootユーザになるにはのようにgnome-terminalなどの端末で su -コマンドで rootユーザになったうえで、コマンドを入力してアプリケーションを起動します。 また、suコマンドの -c というオプションを利用することで実行するコマンドを指定することもできます。 {{{ $ su - root -c "apt-get update" パスワード(P): }}} この場合も root というユーザー名を省略して次のようにすることができます。 {{{ $ su - -c "apt-get update" }}} -c オプションでコマンドを指定して実行した場合は、そのコマンドが終了するともとの一般ユーザーに戻ります。 {{{ #!Admonition synaptic などのように、root権限を必要とするアプリケーションは、コマンドで起動したり、GNOME Panel などのメニューから選択して起動するだけで、rootのパスワードの入力を求めるウィンドウが開くものがあります。 }}} また、次のようにしてアプリケーションを起動することもできます。 GNOME Panel のメニューの アプリケーション→システムツール→Run as different user (GKsu) を選択します。 {{{ $ gksuexec }}} のようにコマンドを入力しても起動できます。 プログラムの実行というウィンドウが開くので 実行するコマンド と 実行するユーザ名 を入力します。 OK をクリックすると、実行するユーザ名で指定したユーザのパスワードの入力を求められるので、パスワードを入力すると、そのユーザの権限でアプリケーションを起動することができます。 実行するユーザ名の部分に root と入力することで root権限でアプリケーションを起動できます。 gksuexec を利用して gnome-terminal などのような端末を起動する場合には、高度なオプション(A) をクリックし、ユーザの変更時に使用するオプションの ログインシェル(L) にチェックをつけるとよいでしょう。 「ログインシェル」という言葉については、jman su を参照しておいてください。 == sudo == 特定のユーザや特定のグループに所属するユーザが、スーパーユーザ権限(あるいはそれ以外の特定ユーザの権限)でいくつかのコマンド操作を行うことを許可する sudo というプログラムがあります。 sudo は、あらかじめ、userAというユーザに対してスーパーユーザ権限で実行できるコマンドの一覧を作成しておき、実行する際には、userAというユーザであるかどうかを認証するという形になります。 su や gksuexec などでは、root のパスワードが必要でしたが、sudo では、認められたユーザ本人であるかを確認するので、root のパスワードは不要になります。 また、コマンドを制限できるので、誤操作の危険性を減らすことができます。 利用頻度の高いコマンドなどを登録しておくと便利です。 === visudo での設定 === root権限で visudo コマンドを実行し、ユーザ名、ホスト名(現在利用しているホストの名前は hostname コマンドで確認出来ます)、許可するコマンドなどを設定します。 visudo コマンドについては、jman visudo で、また、書式については、jman sudoers で確認してください。 visudo コマンドを実行すると、vi というエディタが設定ファイル(/etc/sudoers)を開いた状態で起動します。 {{{ #!Admonition ==== visudo では vi 以外のテキストエディタも使えます。 ==== GNOMEテキスト・エディタ(gedit) で編集するには VISUAL=gedit visudo のように、また、Emacs で編集するには VISUAL=emacs visudo のように、 {{{ # VISUAL=エディタのコマンド visudo }}} という形で指定します。 visudo コマンドでは、エディタ起動時、エディタ終了時に、文法のチェックなどが行われるようになっているので、他のエディタを用いる場合でも、visudo コマンドを用いてください。 }}} パスワードを用いた認証を省略するように設定することもできます。jman sudoers で "NOPASSWD と PASSWD" の部分などを読んでください。 {{{ #!Admonition ==== vi について ==== vi は、一般的なエディタとは操作方法が異なりますが、Unix,Linux では、Emacs と並んで人気のある有名なエディタの一つです。 Vine Linux では vi を改良した VIM(VIsual editor iMproved) があり、vim という名前のパッケージになっています。 慣れるまでには多少時間がかかるかもしれませんが、チュートリアルを体験してみるとよいでしょう。 {{{ $ vimtutor ja }}} とすると日本語でのチュートリアルが起動します。 {{{ $ vimtutor en }}} とすると英語でのチュートリアルが起動します。 }}} ==== ユーザごとの設定 ==== 次のように記述すると userA は localhost というホストにおいて、sudo を利用して root権限で /usr/bin/apt-get update というコマンドを実行出来るようになります。 {{{ userA localhost = /usr/bin/apt-get update }}} ===== visudo でのユーザごとの設定例 ===== 18〜19行のところに、ユーザーごとの設定の部分があるので、その次の行あたりに書いておくとよいでしょう。 {{{ # User privilege specification root ALL=(ALL) ALL # for user : userA userA localhost = /usr/bin/apt-get update }}} 行頭に # をつけることでその行を無効にできるのでコメントを書いておきます。ひらがなや漢字など日本語は用いないほうがよいでしょう。 この場合、update という部分も書いているので、/usr/bin/apt-get upgrade や /usr/bin/apt-get install や /usr/bin/apt-get remove など、update 以外は実行できません。 install や upgrade や remove なども認めるのであれば、 {{{ userA localhost = /usr/bin/apt-get upgrade userA localhost = /usr/bin/apt-get install userA localhost = /usr/bin/apt-get remove }}} のようにそれぞれ指定するか、 {{{ userA localhost = /usr/bin/apt-get }}} のように apt-get 以降は指定しない形で書きます。 ==== グループごとの設定 ==== ユーザ一人一人についてではなく、グループ単位での設定も可能です。 補助グループなどを利用すると便利です。グループについては、ユーザ登録 を参照してください。 power というグループに所属するユーザが /sbin/shutdown コマンドを実行出来るようにするには次のように記述します。 {{{ %power localhost = /sbin/shutdown }}} 先頭のユーザ名だったところを %グループ名 に変えるだけで、あとの書式は同じです。 ===== visudo でのグループごとの設定例 ===== 21〜22行のところに、グループごとの設定の例の部分があるので、その次の行あたりに書いておくとよいでしょう。 {{{ # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # for group : power %power localhost = /sbin/shutdown }}} ==== sudo -l での確認 ==== 一般ユーザは sudo -l とすると自分がどんなコマンドを実行できるか確認できます。 userA で確認してみると次のようになります。 {{{ $ sudo -l Password: }}} root のパスワードではなく、userA 自身のパスワードを入力します。 {{{ User userA may run the following commands on this host: (root) /usr/bin/apt-get update }}} 二行目以降で、root権限で実行できるコマンドが表示されます。 sudo でのコマンドの実行が認められていない場合には、パスワード入力のあとに {{{ Sorry, user test may not run sudo on localhost. }}} のようなメッセージが表示されます。 ==== sudo でのコマンドの実行 ==== 実際に実行するには次のようにします。 {{{ $ sudo /usr/bin/apt-get update Password: }}} root のパスワードではなく、userA 自身のパスワードを入力します。