本稿ではKUSANAGIで作業用ユーザー(一般ユーザー)を作ってsudoできるようにします。
sudoの意味すら知らない初心者に向けて書いてますので、わかる方にはまどろこしいと思います。
(わかる方なら本稿を読まないと思いますが)
なお、サーバーによってKUSANAGIのデフォルト設定が異なる可能性があります。
その場合は適宜読み替えてください。
私の環境はConoHa VPSです。
はじめに #と$
コマンドを見ると頭に「#」と「$」がついています。
どちらも入力する必要はないよ
かつて私はこれでドハマリしました。
そして#と$が混在していますが、
気にしなくていいです
rootか作業用ユーザーかの違いなだけですので。
本来はこんなに混在することはないのですが。
本稿は作業用ユーザーを作るという内容のため混在しています。
初心者の方は深く考えず読み進めてください。
作業用ユーザーを作る
まず、作業用ユーザーの名前とパスワードを考えて
名前は覚えやすければなんでもいいです。
パスワードは長くした方がいいですが、人によってはしょっちゅう使うことになるので覚えやすい方がいいです。
どうしても覚えるのが面倒ならパスワードなしで作業する設定にも後からできます(非推奨ですが)。
ターミナルソフトを起動して、rootでログイン。
黒い画面に次のコマンドを打ち込みます。
ユーザー名はtenzen パスワードはkouganinpoutyouとします。
# useradd tenzen
パスワードを設定します。
# passwd tenzen
パスワードを聞かれたら「kouganinpoutyou」と入力します。
wheelグループに追加する
作業用ユーザーのtenzenに権限を与えるためwheelグループに追加します。
wheelグループはsudoする権限を持つグループです。
# usermod -G wheel tenzen
wheelグループに追加されたか確認します。
# getent group wheel
tenzenが表示されればOKです。
sudoとは?
文中にコマンドが2回重なってわかりづらいかもしれません。
例を挙げて説明します。
rootからtenzenに切り替えます。
(rootはsu+ユーザー名を入力するとパスワードなしで当該ユーザーに切り替えられます)
サーバーを再起動しようとコマンドを打ち込みます。
# su tenzen $ reboot
しかし作業用ユーザーのtenzenが実行しようとしても、こんなメッセージが出て怒られます。
Call to Reboot failed: Interactive authentication required.
「実行したければ権限が必要だよ」という意味です。
そこで、コマンドにコマンドを重ねる形で次のように打ち込みます。
$ sudo reboot [sudo] tenzen のパスワード: (↑パスワードが必要な設定にしている場合。パス無しにもできます)
これでrebootを実行できます。
sudoをするためには、sudoできる権限を与える必要があります。
そのためwheelグループに追加したわけです。
以降は飛ばしても構いません
急ぎたい方は「sudoの設定をする」に進んでください
KUSANAGI9(ConoHa VPS)の場合、wheelグループ以外はsudoできない設定になっています。
そしてwheelグループにはtenzenしかいません。
これがどういう意味か、kusanagiユーザーでテストをしましょう。
一旦rootに戻ってからkusanagiユーザーになります。
$ exit # su kusanagi $ sudo reboot あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] kusanagi のパスワード: kusanagi は sudoers ファイル内にありません。この事象は記録・報告されます。
sudoできずに怒られます。
パスワードが合っていても怒られます。
権限がないのですからどうやってもsudoできません。
言ってみれば、
tenzenの方がkusanagiより強いということだね
sudoの設定をする
次のコマンドを入力します。
# visudo
編集画面が開きます。
120行目あたりに次の記述があります。
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL
2行目か4行目のどちらかだけコメントアウト(#のこと)を外します。
2行目と4行目の意味は、
「%wheel ALL=(ALL) NOPASSWD: ALL」:「(略)パスワードなしでsudoを許可する」
後者はセキュリティ上推奨されません。
通常は2行目のコメントアウトを外して4行目をコメントアウトします。
パスワードなしにするなら自己責任でお願いします。
変更したなら、保存して編集画面を閉じます。
:wq
変更してないなら、そのまま閉じます。
:q
tenzenでsudoを実行してみて、設定通りになっているか確認してください。
鍵を作る
前項の続きならtenzenのままのはずです。
もしrootならtenzenに切り替えます。
# su tenzen
カレントディレクトリ(今、自分がいるディレクトリ)を移動します。
ディレクトリを移動するコマンドは「cd」です。
tenzenのホームディレクトリに移動します。
$ cd /home/tenzen
鍵を格納するフォルダ「.ssh」を作成します。
$ mkdir .ssh
パーミッション(権限)を700にします。
$ chmod 700 .ssh
700の意味は「所有者のみ読み・書き・実行できる」という意味です。
今はわからなくてもいいので、このまま続けてください。
ssh-keygenコマンドで鍵を作成します。
$ ssh-keygen
デフォルトでrsa形式2048ビットで暗号化されます。
この後は色々聞かれますが、全て空打ちでOKです。
Generating public/private rsa key pair. Enter file in which to save the key (/home/tenzen/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/tenzen/.ssh/id_rsa Your public key has been saved in /home/tenzen/.ssh/id_rsa.pub (略)
パスフレーズは任意ですが、私は空打ち2回(パスフレーズ無し)に設定しています。
最後の2行から鍵が2つ出来たことがわかります。
秘密鍵(id_rsa)と公開鍵(id_rsa.pub)です。
公開鍵の名前をauthorized_keysにリネームして、権限を600に変更します。
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys
秘密鍵の内容を表示します。
$ cat .ssh/id_rsa
こんな感じの画面が出ます。
-----BEGIN OPENSSH PRIVATE KEY----- (英数字の羅列) -----END OPENSSH PRIVATE KEY-----
この部分をローカル(自分のパソコン)でテキストファイルにコピペします。
ファイル名はtenzen.pem、「改行=LF」で保存します。
(tenzenの部分は自分でつけた名前に変えてください)。
この鍵を使ってログインしてみます。
ログインできたならOK&完了です。
まとめ
昔はこうした情報も出てこず、苦労したものでした。
コードその他設定はできる限り簡素化しています。
一方で自分が当時わからなくて詰まったことは徹底的に付け加えました。
現段階でのKUSANAGI最新版(ConoHa VPS)に完全対応させたつもりです。
お疲れ様~
お疲れ様! ……と言いたいのだけど
次はrootログインを禁止します。
引き続きこちらをお読みください。