このブログ記事では、Linuxにおけるユーザ管理とファイルのアクセス権限についてを紹介します。

私たちがよく知っているmacOSやWindowsOSのように、Linuxでも複数のユーザーを設定し、それぞれのファイルやプロセスへのアクセス権限を管理することができます。 本記事では、Linuxにおけるユーザー管理と権限について説明します。
新しいユーザーの作成
これまで各行の先頭に root@~
と表示されているのを見てきました。これは、私たちがルートユーザー(root user)を使用していることを意味します。
ルートユーザーはスーパーユーザーであり、すべてのファイルやプロセスにアクセスできます。しかし、Linuxで特定のサービスやアプリケーションをルートユーザーで実行することは、
セキュリティ上の理由から理想的ではない場合があります。そのため、制限された権限を持つ新しいユーザーを作成することができます。
新しいユーザーを作成するには、以下のコマンドを使用します。
useradd -m -s /bin/bash [user_name]
-m
フラグは /home/[user_name]
にホームディレクトリを作成し、-s
フラグはログインシェルを指定します。
他にも、コメントを指定する -c
や、ユーザーID(UID)を指定する -u
などのフラグがあります。ユーザーを作成した後、
passwd [user_name]
コマンドでパスワードを設定する必要があります。ユーザーが正常に作成されたことを確認するには、
ユーザー情報が記載されている /etc/passwd
を確認します。
newuser:x:1000:1000:NewTestUser:/home/newuser:/bin/bash
上記は /etc/passwd
に表示される追加されたユーザーの例です。この情報はコロン(:)で区切られています。
最初の部分はユーザー名、2番目の部分はユーザーパスワード(x
は /etc/shadow
に隠されていることを意味します)、
3番目と4番目はユーザーIDとグループID、5番目はコメント、6番目はホームディレクトリ、最後の部分はシェルを示します。
新しいユーザーでログインするには、su - [user_name]
コマンドを使用します。各行の先頭が root@~
から [user_name]@~:/#
に変わることを確認してください。
通常ユーザーの /
ディレクトリはそのユーザーのホームディレクトリに設定されているはずで、pwd
コマンドで確認できます。
ファイルの権限
ls -l
または ll
を使用してファイルをリスト表示し、詳細を確認すると、次のような行が表示されるはずです。
drwxr-xr-x 1 root root 4096 Oct 9 15:19 ./
それぞれの要素が何を意味するのかを説明します。行の最初の部分 drwxr-xr-x
はファイルの権限を示しています。
この文字列は d | rwx | r-x | r-x
のように4つの部分に分けられ、ファイルタイプ(d
はディレクトリ、-
は通常のファイル)、
ユーザー権限、グループ権限、その他のユーザーの権限を表します。リンク数の後の2つのブロックはユーザーとグループを示します。
最後の3つの部分はファイルサイズ(バイト単位)、最終更新日、ファイル名です。
r
は読み取り可能、w
は書き込み可能、x
は実行可能を意味します。上記の例では、ファイルはルートユーザーにとって読み取り、
書き込み、実行可能ですが、ルートグループおよびその他のユーザーにとっては読み取りと実行のみ可能です。そのため、
新しいユーザーとして新しいテキストファイルを書き込もうとすると、「権限が拒否されました」というエラーが表示されるはずです。
権限の変更
通常、ディレクトリやファイルの権限を変更できるのはルートユーザーだけで、chmod
(change mode)コマンドを使用します。以下は権限を変更するコマンドの例です。
chmod u+x [file_name]
u+x
はユーザー(u
)に実行権限(x
)を追加(+
)することを意味します。他の記号として、-
、r
、w
、g
などを使用して権限を変更することもできます。
ただし、これではユーザーまたはグループごとに1回ずつしか変更できません。より柔軟にするために、次のようなコマンドを使用できます。
chmod 755 [file_name]
各数字はユーザー、グループ、その他のユーザーに対応する権限を表します。数字はそれぞれの権限に割り当てられた値の合計です。 1 は実行可能、2 は書き込み可能、4 は読み取り可能に割り当てられています。したがって、3 は実行可能と書き込み可能、 5 は実行可能と読み取り可能、6 は書き込み可能と読み取り可能、7 はすべて可能を意味します。
所有権の変更
権限を変更するもう1つの方法は、ディレクトリやファイルの所有権を変更するか、それが属するユーザーとグループを変更することです。
このためには、chown
と chgrp
を使用します。chown
は所有者の変更、chgrp
はグループの変更を意味します。
どちらも新しい所有者またはグループとファイル名を指定します。
また、usermod -g [group_name] [user_name]
コマンドを使用して、ユーザーが属するグループを変更することもできます。
ここで、-g
フラグはグループが変更されることを指定します。新しいグループはgroupadd [group_name]
コマンドで作成できます。
グループの権限は、グループが所有する各ファイルに対して chmod
を使用して変更できます。
スーパーユーザー
通常ユーザーとしてLinuxを使用していると、新しいユーザーを作成したり、権限を変更したり、システムに新しいパッケージをインストールしたりする必要が出てくる場合があります。
これらはすべてスーパーユーザーでしか行えません。しかし、毎回ルートユーザーに切り替えるのは面倒であるだけでなく、システムや他のユーザーのセキュリティ上のリスクにもなります。
そのため、特定のディレクトリやファイルで指定されたコマンドを実行できるようにするには、sudo
(superuser do)を使用します。apt install sudo
で sudo
をインストールします(ルートユーザーで実行)。
通常ユーザーに sudo
を実行する適切な権限を割り当てるには、visudo
コマンドを使用して sudoers
ファイルを編集します。
このファイルはVimで開かれます。ファイル内には次のような内容が記載されています。
# User privilege specification
root ALL=(ALL:ALL) ALL
このセクションの下に[user_name] ALL=(ALL:ALL) ALL
を追加します。これにより、[user_name]
は任意のユーザーやグループとして任意のコマンドを実行できるようになります。
変更を保存し、[user_name]
が sudo
コマンドを使用してユーザー作成や権限変更、新しいパッケージのインストール(sudo apt install [package]
)などが行えることを確認してください。
結論
本記事では、Linuxを使用する際に知っておくべき基本的なユーザー管理、ファイル権限、および sudo
について説明しました。
ユーザーやグループを削除するにはuserdel [user_name]
やgroupdel [group_name]
をそれぞれ使用できます。
次回の記事では、Linuxオペレーティングシステムによって実行されているプロセスの監視方法について説明します。
リソース
- Juice. 2024. 【何となく使っている?】sudoコマンドの役割について. Qiita.
- Linux Journey. n.d. User Management. Linux Journey.
- Linux Journey. n.d. Permissions. Linux Journey.
- PythonプログラミングVTuberサプー. 2024. 【Linux入門】初心者向け!Linuxの基本的なコマンド操作を学ぼう! 〜 Ubuntu 環境で実演〜. YouTube.
- yasushi-jp. 2020. Linuxのユーザー追加、useraddコマンドの使い方. Qiita.