Linux
Linuxユーザー管理
Linux(Centos)でのユーザー管理方法をまとめた。
以降、全てのコマンドは管理者(ルート)権限で実行する必要がある。 一般ユーザーからルートログインをして操作するのがよいだろう。# スーパーユーザーになる
[user@computer ~]$ su
# スーパーユーザーのパスワードを入力
ターミナルの表記が$から#へ変わる
[root@computer user]#
これにて無事、このパソコンの管理者になることができた。
しかし、管理者として間違った操作をすると非常に危険であることを十分に理解してほしい。
管理者として実行するコンピュータの操作は必要最低限にし、ルートからアクセス可能なファイルの直接の変更は行わないようにする。
(もしも変更が必要な場合は必ずバックアップをとること)
自分のアカウントを持っていない場合、いきなりルートログインをするしかないが、それはよくないとされている。
ssh root@computer
のように接続するのは控えよう。
ユーザーの追加
useradd
ユーザーの追加にはuseradd
を使用する。
新しくuser1という名前のユーザーを追加する場合には次のコマンドを実行する。
# ユーザーの追加
useradd user1
コマンドを実行した後に何も表示されないが、ユーザーの追加は完了している。 パソコンに存在するユーザーの一覧は/etc/passwdで確認することができる。
# ユーザー情報の確認
vi /etc/passwd
# /etc/passwdの一部を抜粋
root:x:0:0:root:/root:/bin/bash
user1:x:500:500::/home/user1:/bin/bash
/etc/passwdはユーザー管理のために重要なファイルであり、これがなくなると誰もLinuxにログインできなくなる。
変更や削除は絶対にしないようにする。
/etc/passwdの一行は一人のユーザーに対応しており、コロンで区切られた7つのフィールドそれぞれは次の情報を表している。
暗号化パスワードは現在使われておらず、"x"などが入れられている。
/etc/passwd | 説明 |
---|---|
第1フィールド | ユーザー名(ログイン名) |
第2フィールド | (暗号化パスワード) |
第3フィールド | ユーザー番号(UID) |
第4フィールド | グループ番号(GID) |
第5フィールド | コメントフィールド(名前など) |
第6フィールド | ホームディレクトリのパス |
第7フィールド | ログインシェル |
共同で利用するスパコンなどの場合、グループ番号(GID)をチーム内で統一することが多い。
ユーザーを追加する際、グループ番号も同時に指定するには-g
をつける。
グループ番号はそのまま番号で指定するだけでなく、グループ名で指定することもできる。
# グループ番号を指定してユーザーを追加
useradd -g 1000 user1
# グループの名前を指定する場合(guestグループに追加)
useradd -g guest user1
グループ情報が反映されていることを確認する。
id
コマンドを利用してもよい。
/etc/passwd
user1:x:500:1000::/home/user1:/bin/bash
# ユーザーのUIDとGIDを確認する
id user1
なお、グループ名を指定してユーザーを追加した場合、/etc/groupを参照して対応したグループ番号が自動的に割り振られる。 以下の例ではguestをグループ名とすると、GIDには1000が割り当てられる。
/etc/group
root:x:0:
guest:x:1000:
passwd
新しくユーザーを追加した後は、初期パスワードの設定を行う。 マルチノードのスパコンの場合は、すべてのノードでパスワードの変更を適用するために、追加のコマンドを実行する必要がある。
# 初期パスワードを設定
passwd user1
# 新しいパスワードを入力できるので設定する
# マルチノードの場合は以下を実行
make -C /var/yp
ユーザー情報の変更
usermod
ユーザー情報の変更はusermod
を使用して行う。
usermod
のオプションでよく使用するグループ関係を以下にまとめた。
usermodオプション | 説明 |
---|---|
-g | 主グループまたはグループ番号(GID)を変更する |
-G | 副グループを変更する |
-a | 副グループを追加する |
-u | ユーザーID(UID)を変更する |
-l | ログイン名を変更する |
例えば、user1の主グループはguestであり、副グループにmdを追加する場合は、以下のように設定する。
# 副グループを追加
usermod -aG md user1
副グループは複数に所属することも可能である。さらにtestにも所属する場合は以下のようになる。
# 2つ目の副グループに所属
usermod -aG test user1
# 以下のコマンドでも同様
usermod -G md,test user1
特定ユーザーにsudo権限を付与する
特定のユーザーにsudo実行権限を与える場合、そのユーザーをwheelグループに所属させる方法が一般的である。
ここからはその手順を見ていくが、まず初めにwheelグループのユーザーがsudoを使用できるような環境を作成する。
ルートユーザーでvisudo
を実行し、wheelグループにsudoの実行権限を付与する。
visudo
# 下記wheel部分のコメントアウトを外す
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
編集できたら保存し、特定のユーザーの副グループにwheelを設定する。
usermod -aG wheel user1
# user1がwheelに所属したことを確認
# /etc/groupに名前が追加されていることを確認してもよい
id user1
設定ができたら一般ユーザーからログインし、groups
コマンドを使用してwheelに所属していることを確認する。
sudoが実行できるようになっていれば完了である。
sudoできる一般ユーザーのパスワードは厳重なものに変更しておくこと。
ユーザーの削除
userdel
ユーザーを削除するにはuserdel
を使用する。
対象ユーザーのホームディレクトリも同時に削除する場合は-r
オプションを指定する。
# user1というユーザーを削除
userdel user1
# user1のホームディレクトリも同時に削除
userdel -r user1
パーミッションの変更
chmod
chmod
はパーミッションを変更するコマンドである。
パーミッションとはファイルやディレクトリへのアクセス権のことであり、ユーザーのファイルへのアクセス権や実行権を設定することができる。
使用例を以下に示す。
# submit.shというファイルのパーミッションを755に変更
chmod 755 submit.sh
# test.txtというファイルへのアクセスを600に制限
chmod 700 test.txt
パーミッションには「読み」「書き」「実行」の3つの権限と、「自分(Owner)」「グループ(Group)」「他人(Other)」の3つの所有者がある。
chmod
コマンドの3つの数字はそれぞれの所有者に対応していて、数字の番号が3つのアクセス権限を表す。
実行権 | 説明 | 記号 | 数字 |
---|---|---|---|
読み | ファイル・リストの表示 | r | 4 |
書き | ファイルの上書き・追加・削除 | w | 2 |
実行 | ファイルの実行、ディレクトリへの移動 | x | 1 |
これに従うと例えば755の場合、自分(7 = 4 + 2 + 1)グループ(5 = 4 + 1)他人(5 = 4 + 1)であり、自分は読み・書き・実行全ての権限が使用できるのに対して、グループと他人は書きの権限が与えられていない。
また700の場合、グループと他人はファイルにアクセスできない設定となる。
今回は権限を数字で指定しているが、「r」や「r+w」のように記号で指定することもできる。
ファイルやディレクトリのパーミッション(属性)はls -l
で確認することができる。
上の表と同じように記号で表してあるので、これを見てパーミッションを適切に変更してほしい。
# chmod 755 submit.sh
-rwxr-xr-x. 2 user user 1210 3月 17 16:00 submit.sh
# chmod 700 test.txt
-rwx------. 4 user user 400 3月 17 16:02 test.txt
# ディレクトリの場合、先頭はdとなる
drwxr-xr-x. 6 user user 3160 3月 17 16:25 sample_dir