3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【adduser/userdel】安全にユーザをLinux(仮)サーバに追加(管理)する手順[Linux]

Last updated at Posted at 2019-01-08

はじめに

Apacheをインストールし、OSがCentOS(Linuxディストリビューション)であるサーバを一時期、運用していました。
その間に新しい仲間にサーバへのアクセス権限を与える必要がありましたが、権限に制限を設けるなど、いくらか手順を踏まなければいけなかったので、その際とった手順をまとめていきます。

手順

まずはじめに、前提として下記3点があります。

登場ユーザ

ユーザ ユーザの種類
1 root スーパーユーザ(私)
2 furukawa 管理者権限を持つユーザ(私)
3 takuyanin 追加ユーザ

流れ

  1. rootユーザ(私)でfurukawa(私)を作成
  2. furukawa(私)がtakuyanin(仲間)を作成

プロンプトの表記

コマンドコンソールだと入力を受け付けるプロンプトが、一般ユーザはシェルによってことなりますが、「$」もしくは「%」です。rootをスーパーユーザと呼びますが、スーパーユーザは「#」となります。

1. rootユーザ(私)でfurukawa(私)を作成

rootユーザは全ての操作を行うことができる一番強い権限を保持しているので、重大な問題を引き起こさないためにも極力利用しない方がいいです。
ですので、管理者の私もfurukawaというユーザを作成して操作を行うとします。

鍵を生成

$ ssh-keygen -t rsa -f id_rsa_furukawa

公開鍵をリモートサーバに送信

$ scp id_rsa_furukawa.pub root@153.122.203.7:~

リモートサーバにsshログイン

$ ssh -i ~/.ssh/id_rsa root@153.122.203.7

ユーザを追加

# adduser furukawa

ユーザが作成されたか確認

# ls -l /home
total 12
drwx------ 2 furukawa furukawa 4096 Jan  8 04:25 furukawa

作成したユーザにパスワードを設定

# passwd furukawa
New password:

作成したユーザにsudo権限を付与

sudo権限は安易にそのほかのユーザに与えてはいけません。
ここでは、furukawaが管理者(私)であるため、sudo権限を与えるとします。

下二つのコマンドどちらでも設定することができますが、visudo は文法チェックが働くので、基本はvisudoで設定したほうが良いでしょう。。

1. visudo

# visudo
furukawa ALL=(ALL)    ALL

2. vi /etc/sudoers

# vi /etc/sudoers
furukawa ALL=(ALL)    ALL

ローカルから送られた鍵を作成したユーザディレクトリに配置

.sshディレクトリを作成
# mkdir /home/furukawa/.ssh

root配下の鍵をfurukawa配下へ移動
# mv ~/id_rsa_furukawa.pub /home/furukawa/.ssh

ディレクトリを移動
# cd /home/furukawa

鍵の中身を移す(ここではファイル名変更)
# mv .ssh/id_rsa_furukawa.pub .ssh/authorized_keys

公開鍵の所有者を変更

公開鍵(authorized_keys)の所有者をrootからfurukawaに変更

所有者を確認、現段階はroot
# ls -la .ssh/authorized_keys
-rw-r--r-- 1 root     root 426 Jan  8 04:24 .ssh/authorized_keys

所有者をfurukawaへ変更
# chown furukawa .ssh/authorized_keys

所有者を確認、所有者はfurukawa
# ls -la .ssh/authorized_keys
-rw-r--r-- 1 furukawa root 426 Jan  8 04:25 .ssh/authorized_keys

公開鍵のグループを変更

所有者を変更するときと流れは全く同じなので、最低限必要なchgrpコマンドのみを下記では実行しています。(確認作業は省略)

グループをfurukawaへ変更
# chgrp furukawa .ssh/authorized_keys

.sshディレクトリ(鍵保管庫)の所有者、グループを変更

公開鍵ファイルのときと何ら変わりない作業なので、実行する必要のあるコマンドのみを下記に記しています。

# chown furukawa .ssh
# chgrp furukawa .ssh

鍵ファイル、.sshディレクトリの権限を変更

# chmod 600 .ssh/authorized_keys
# chmod 700 .ssh

権限を変更するchmodコマンドについてはこちらの記事にまとめています。
permission deniedで悩まされたので勉強してみた

また、「なぜ.sshディレクトリには700の権限で、authorized_keysファイルには600の権限を与えているのか」という点に関しては、下記記事に記しています。
SSH通信でリモートサーバに接続する流れ(公開鍵認証)[Linux]

作成したユーザに切り替えるため、ログアウト

# exit
logout
Connectin to 153.122.203.7 closed

2. furukawa(私)がtakuyanin(仲間)を作成

作成したユーザでログイン

$ ssh furukawa@153.122.203.7
furukawa@153.122.203.7's password:

sudoで仲間ユーザ(とパスワード)作成

こちらのコマンドは実行してもしなくても構いません(ここでは確認のため)
$ adduser takuyanin
-bash: /usr/sbin/adduser: Permission denied

上のコマンドはPermissionで弾かれますが、sudoコマンドで通りま
す。
$ sudo adduser takuyanin
$ sudo passwd takuyanin

sudoコマンドに必要なパスワードは「あなたのパスワード」です。
コマンド単位で「誰にどのコマンドをrootで実行させることを許可するか」を指定できます。こうすることでrootパスワードを知られることなく、必要なコマンドをroot権限で実行できるようになります。

仲間にユーザ名とパスワードを知らせる

今回の場合であれば、仲間に、
・ユーザ名:takuyanin
・パスワード: #######
を知らせ、ssh接続を試みてもらいます。

この作業に関しては、仲間にこちらの記事にしたがって、作業を進めてもらいます。

以上で安全にユーザを迎え入れることができました。

補足

ユーザを削除する

ユーザが組織から離れる時など既存ユーザを削除する必要があるときは、rオプションつきのuserdelコマンドで削除することができます。
rオプションをつけることでユーザに紐づいたホームディレクトリも同時に削除することができます。

$ sudo userdel -r takuyanin

削除できたか確認

$ cat /etc/passwd

ユーザが削除されていれば成功です。

仲間に、rootユーザのみ許可されているコマンドの実行権限を与えるとき

$ visudo
.
.
takuyanin localhost=/sbin/shutdown -h now
.

上記のようにすれば、コマンド毎に実行権限を与えることができ安全です。

さいごに

きちんとユーザ管理をすることで、システム(サーバ)を安全に運用していきたいですね。

こちらの記事が役に立ったという方は、いいね、よろしくお願いします(^^)
また、takuyaninのマイページにlinuxコマンドなどに関していくつか記事をまとめてますので、よければご参考ください。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?