カテゴリー:システム管理
質問
root権限でコマンドを実行したはずなのに,「Permission denied」と表示されてしまう 回答
「SELinux」と呼ばれるセキュリティ機能が有効になっている場合,root権限でもコマンドを実行できないことがあります。その場合には,SELinuxを無効にしてから再度実行してみます 難易度:★★★★ |
セキュアOSを実現する仕組みである「SELinux」を有効にすると,rootも含めてユーザーが実行できるコマンドや操作を制限できます。しかし,意図せずにSELinuxを有効にしていると,通常,root権限で実行できる操作ができずに戸惑うことがあります。
特にFedora Coreのように,インストール時にSELinuxがデフォルトで有効に選択されているディストリビューションなら,なおさらです(図1)。SELinuxが有効になっているか否かは,getenforceコマンドで確認できます。
|
|
図1●Fedora Core 4のインストール画面 SELinuxを無効にしたければ,ここで「無効」を選択する。 |
無効であれば「Disabled」,有効であれば「0」か「1」が表示されます。「1」は「enforcing」と呼ばれるモードで,設定したポリシーに従ってアクセスを拒否します。一方「0」は「permissive」モードです。本来はアクセスを拒否する場合でも,ログだけ残してアクセスを許可します。
SELinuxを無効するには,/etc/sysconfig/selinuxファイルの「SELINUX」の行を,
と書き換え,マシンを再起動します。また,起動時にカーネル・パラメータとして,「selinux=0」を与えるとSELinuxが無効にできます。
もし再起動せずに,アクセスを拒否されたコマンドを実行するのなら,
を実行してpermissiveにします。