rootアカウントで作業を行うと操作ミスした場合、システム全体に影響を与えてしまう恐れがあります。極力一般ユーザーアカウントで作業を行い、管理者権限が必要な操作はsudoを介して行うとリスクを軽減できます。
“sudo”についての全般的な内容は下記を参考にしました。
サービスをセキュアにするための利用制限(3)~管理者権限の制限のためのsuとsudoの基本~
※目次をクリックすると目次の下部にコンテンツが表示されます。
sudoの使用目的、メリット
・コマンド実行ミス時の影響範囲が大きいため、システム全体に関わる作業以外にはrootアカウントは使用したくない。
・root権限が必要な時にrootにスイッチし、終わったらまた元のユーザーに戻る作業が面倒。
・”sudo”では、特定のコマンドのみroot権限で実行させる事が出来るので、コマンド入力ミスによる影響範囲を狭める事が出来る。
・”sudo”で実行したコマンドの履歴がログに残る。
・root権限が必要な時にrootにスイッチし、終わったらまた元のユーザーに戻る作業が面倒。
・”sudo”では、特定のコマンドのみroot権限で実行させる事が出来るので、コマンド入力ミスによる影響範囲を狭める事が出来る。
・”sudo”で実行したコマンドの履歴がログに残る。
sudoの設定方法
1)設定するファイル
sudoの設定は、”/etc/sudoers”ファイルで行いますが、編集はviなどのエディタで直接編集するのではなく、sudo用の編集コマンド”visudo”コマンドを使います。
2)設定ファイルの構文
下記のような構文で設定します。
who where = (as_whom) what
[誰が どのホストで = (誰に変身して) 何を]
例えば、”wpuser”というユーザーがすべてのホスト(ALL)でrootを含めたすべてのユーザー権限(ALL)でcpコマンドを実行できるようにしたい場合は、下記のように設定します。
wpuser ALL = (ALL) /bin/cp
上記4つの項目は、下記のようにエイリアスを使って定義する事も出来ます。詳細は参考サイトを参照ください。
User_Alias ユーザー名の別名を定義する
Runas_Alias 実行ユーザー名の別名を定義する
Host_Alias 接続元ホストの別名を定義する
Cmnd_Alias 実行するコマンドの別名を定義する
3)設定例
WordPressディレクトリをバックアップする際には、WordPressディレクトリを丸ごと、所有者、権限モードをそのままの状態にしてコピーしたい場合があります。
コピー対象のファイルの所有者は自アカウントなのですが、所有グループが”apache”と他グループになっていて、”cp -Rp”でコピーすると、所有グループが自グループになってしまいます。
そこで、cpコマンドを”sudo”に登録し、”root”権限でcpコマンドを実行させるための設定を行います。
・設定するユーザー
wpuserとします。
・実行するホスト
ALLでも問題ないと思いますが、Host_Aliasで自サーバーのIPアドレスを指定して制限しています。”localhost”や”127.0.0.1″では動作しないようです。
Host_Alias LOCALHOST = 192.168.1.1/32
・実行ユーザー名
ALLでも良いのですが、root以外は使用しないと思うのでrootにしました。
sudoの設定は、”/etc/sudoers”ファイルで行いますが、編集はviなどのエディタで直接編集するのではなく、sudo用の編集コマンド”visudo”コマンドを使います。
2)設定ファイルの構文
下記のような構文で設定します。
who where = (as_whom) what
[誰が どのホストで = (誰に変身して) 何を]
例えば、”wpuser”というユーザーがすべてのホスト(ALL)でrootを含めたすべてのユーザー権限(ALL)でcpコマンドを実行できるようにしたい場合は、下記のように設定します。
wpuser ALL = (ALL) /bin/cp
上記4つの項目は、下記のようにエイリアスを使って定義する事も出来ます。詳細は参考サイトを参照ください。
User_Alias ユーザー名の別名を定義する
Runas_Alias 実行ユーザー名の別名を定義する
Host_Alias 接続元ホストの別名を定義する
Cmnd_Alias 実行するコマンドの別名を定義する
3)設定例
WordPressディレクトリをバックアップする際には、WordPressディレクトリを丸ごと、所有者、権限モードをそのままの状態にしてコピーしたい場合があります。
コピー対象のファイルの所有者は自アカウントなのですが、所有グループが”apache”と他グループになっていて、”cp -Rp”でコピーすると、所有グループが自グループになってしまいます。
そこで、cpコマンドを”sudo”に登録し、”root”権限でcpコマンドを実行させるための設定を行います。
・設定するユーザー
wpuserとします。
・実行するホスト
ALLでも問題ないと思いますが、Host_Aliasで自サーバーのIPアドレスを指定して制限しています。”localhost”や”127.0.0.1″では動作しないようです。
Host_Alias LOCALHOST = 192.168.1.1/32
・実行ユーザー名
ALLでも良いのですが、root以外は使用しないと思うのでrootにしました。
・実行するコマンド
とりあえず必要なのはcpコマンドですが、今後追加するかもしれないので、Cmnd_Aliasでエイリアスを定義しました。
Cmnd_Alias WEBUNYO = /bin/cp
以下、実際の設定例です。
# visudo
下記3行を追加します。
Host_Alias LOCALHOST = 192.168.1.1/32
Cmnd_Alias WEBUNYO = /bin/cp
wpuser LOCALHOST = (root) WEBUNYO
sudoの実行
1)sudoの実行
上記設定例で実行した結果です。
上記設定例で実行した結果です。
$ sudo cp -Rp wptest wptest.bak [sudo] password for wpuser:
パスワードの入力を求められるのでwpuserのパスワード(rootではなく)を入力します。
2)sudo実行時のログ
下記のように実行時のログが記録されています。
# tail /var/log/secure Oct 8 16:18:06 localhost sudo: wpuser : TTY=pts/0 ; PWD=/home/wpuser ; USER=root ; COMMAND=/bin/cp -Rp wptest wptest.bak
-
システム管理
- CentOSのブートの流れ、ランレベルの指定
- CentOS6のrc.sysinitスクリプトの処理内容の概要
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- vmstatコマンドでシステムの状況をモニター
- シェル変数と環境変数の違い
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- 日本語設定、シェル環境設定
- umaskはどこで設定されている?
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- CentOS6のTCPラッパーの概要と設定方法
- LinuxのNetworkManagerプロセスの概要
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限
64ビットサポート
-
CentOSの概要
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
- CentOS6インストール手順のメモ
- CentOSのブートの流れ、ランレベルの指定
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定の確認
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- 日本語設定、シェル環境設定
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- umaskはどこで設定されている?
- シェル変数と環境変数の違い
- CentOSのネットワークフィルタリング設定を一から行う
- CentOS6のTCPラッパーの概要と設定方法
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
システム管理
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限