Linuxのシステム管理では、ユーザー管理とアクセス権限の設定がシステムの安全性と効率性を確保するための基礎となります。ユーザーごとに適切な権限を割り当て、必要最低限のアクセスを提供することで、不正な操作やデータの漏洩を防ぐことが可能です。本記事では、ユーザーアカウントの作成やグループの設定方法から、アクセス権限の活用によるシステムの強化まで、実務に役立つ知識を徹底解説します。Linux初心者の方でも分かりやすいよう、具体的なコマンド例を交えながら説明しますので、ぜひ最後までご覧ください!
Linux基礎知識(全17記事)
├─【Linuxの基礎知識】Linuxとは?基本概要と仕組みをわかりやすく解説!
├─【Linuxの基礎知識】インストールからログインまでの完全マニュアル
├─【Linuxの基礎知識】カーネルの役割と起動プロセスをわかりやすく解説!
├─【Linuxの基礎知識】ファイルシステムを極める!ディレクトリ構造とその関連性を解説
├─【Linuxの基礎知識】ディレクトリとファイル操作を完全マスター!初心者向けガイド
├─【Linuxの基礎知識】初心者向け!Linux管理に役立つ基本コマンド完全ガイド
├─【Linuxの基礎知識】ユーザー管理を極める!アクセス権との連携で強固なシステム構築
├─【Linuxの基礎知識】リンクとiノードについて理解を深めよう!
├─【Linuxの基礎知識】LVMとは? LVMを理解しよう!
├─【Linuxの基礎知識】過去事例から学ぶ!システムセキュリティの基本
├─【Linuxの基礎知識】ディスク管理の完全ガイド!初心者から実践までを徹底解説
├─【Linuxの基礎知識】ネットワーク設定とトラブルシューティングを徹底解説!
├─【Linuxの基礎知識】リソース監視ツールの使い方を徹底解説!
├─【Linuxの基礎知識】パッケージ管理の応用テクニックをマスター!
├─仮想化とコンテナの基本を学ぶ!
├─バックアップとリストアのベストプラクティス
└─RAIDとディスク管理を徹底解説!
ユーザーアカウントを操作する
業務用としてLinuxが採用されるとき、その最も主な使いみちはサーバー用途が挙げられます。
社内状況にもよりますが、自社内でサーバーを利用する場合、メールサーバーやファイルサーバーといった使い方が想定されるわけですが、こうしたサーバーの管理はシステム管理部門の仕事というのが一般的といえます。
このような場合において、システム管理部門、もしくはそれに準ずる所属以外の社員が社内のサーバーに対して意図しない動作を起こさせないために、ユーザーの所属やそのユーザーごとに行える、操作の権限を予め付与しておく必要があります。
ユーザーとは?

Linuxは、あらかじめ登録された人しか操作出来ないようになっています。そしてあらかじめ登録された人のことを「ユーザー」といいます。ネットワークを経由して複数人で操作できるLinuxは、ユーザーに毎にそれぞれの利用者を区別しています。
ログインとは、単にLinuxで作業を開始するためのものではなく、Linuxの利用者を区別するためのものです。
ユーザーの役割
- ユーザー単位で作業できる範囲を限定する
- ホームディレクトリ毎に作業領域を分ける
- すべてのファイルのアクセス権はユーザー毎に管理される
- サービスの利用者を区別する
- メールやWeb、FTP等の利用者を区別できる
- 作業しているユーザーを特定できる
- ログイン中のユーザーを把握できる
- ユーザーの作業内容の記録を取ることが出来る
ユーザーを登録する「useradd」
新規ユーザーを登録するには「useradd」コマンドを使用します。
コマンドの書式
useradd[オプション] ユーザー名
コマンドの主なオプション
- -m(--create-home):ユーザーのホームディレクトリが存在しない場合、作成する
- -M(--no-create-home):ユーザーのホームディレクトリを作成しない
- -b(--base-dir BASE_DIR):ホームディクトリのベースとなるディレクトリ
- -d(--home-dir ディレクトリ)ユーザーのホームディレクトリを指定する
- -k(--skel ディレクトリ):ひな型ディレクトリ(デフォルトは/etc/skel)を指定する
- -u(--uid ユーザーID):作成するユーザーのユーザーIDを指定する
- -g(--gid グループ):ユーザーが属するプライマリグループ or グループIDを指定する
- -G(--groups リスト):ユーザーが属するセカンダリグループを指定する
- -U(--user-group):ユーザーと同じ名前のグループを作成する
- -N(--no-user-group):ユーザーと同じ名前のグループを作成しない
- -s(--shell シェル):ユーザーのログインシェル(フルパスで指定)を指定する
- -p(--password パスワード):cryptで暗号化されたログインパスワードを利用する
- -e(--expiredate 日付):ユーザーのアカウントが期限切れとなる日付を指定する
- -c(--comment コメント):/etc/passwdのコメント欄の内容を指定する
- -f(--inactive 日数):パスワードが期限切れからアカウントが無効化されるまでの日数
ここでは、ユーザー名「hoge」を登録してみます。
# useradd hoge
オプションを指定せずにユーザーを作成した場合、下記に挙げるいくつかの環境変数へデフォルト値が代入されます。
- SHELL=「/bin/bash」(デフォルト)
- HOME=「/home/hoge」(デフォルト)
- LANG=「ja_JP.UTF-8」(デフォルト)
- etc・・・
詳しくは、ユーザー作成後、「$ env」コマンドで確認してみてください。
1 2 3 | [root@CentOS7 ~]# useradd hoge [root@CentOS7 ~]# id hoge uid=1001(hoge) gid=1001(hoge) groups=1001(hoge) |
ユーザー「hoge」の作成が完了しました。
ユーザーパスワードを変更する「passwd」
パスワードを変更するには、「passwd」コマンドを使用します。
オプションを付与することにより、パスワードをの削除や変更を行うことが出来ます。
コマンドの書式
passwd[オプション] ユーザー名
コマンドの主なオプション
- -l ユーザー名:指定したユーザーをロックする
- -u ユーザー名:指定したユーザーのロックを解除する
- -d ユーザー名:パスワードを削除する
- -S ユーザー名:パスワードの状態を表示する
- -n 日数 ユーザー名:パスワード変更後、再度変更可能になるまでの日数を設定する
- -x 日数 ユーザー名:パスワードが有効な日数を設定する
- -w 日数 ユーザー名:パスワード失効前に警告を表示する日数を設定する
- -i 日数 ユーザー名:パスワードが有効期限に達した後、パスワードを無効にするまでの猶予期間を設定する
ここではオプションを省略して、「hoge」のパスワードを変更してみます。
※ 実行後、新しいパスワードの入力を2回求められるので、任意のパスワードを入力し変更を完了させます。
# passwd hoge
1 2 3 4 5 | [root@CentOS7 ~]# passwd hoge ユーザー hoge のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。 |
パスワードが変更されました。
ユーザー設定を変更する「usermod」
ユーザーに紐づく様々な設定を変更するには「usermod」コマンドを使用します。
変更する設定を指定する必要があるので、コマンドオプションは必須となります
コマンドの書式
usermod[オプション] ユーザー名
コマンドの主なオプション
- -L(--lock):ユーザーをロックする
- -U(--unlock):ユーザーのロックを解除する
- -e(--expiredate付):アカウントが使用不能になる日付を指定する
- -f(--inactive数):パスワードの使用期限切れから使えなくなるまでの日数を指定する
- -l(--loginログイン名):ログイン名を変更する
- -d(--homeス):ユーザーのホームディレクトリを変更する
- -m(--move-home):現ホームディレクトリの内容を新たな場所に移動する
- -R(--rootィレクトリ):「chroot」するディレクトリを指定する
- -p(--passwordスワード):新たなパスワードを指定する
- -s(--shellェル):ユーザーのシェルを変更する
- -g(--gidループ):プライマリーグループを変更する
- -G(--groupsループ):セカンダリーグループを変更する
- -a(--append):オプションで指定したグループをセカンダリーグループに追加する
- -u(--uidID):ユーザーIDを変更する
- -o(--non-unique):一意でないユーザーを許可する
- -c(--commentメント):コメント欄
ここではユーザー「hoge」のユーザIDを変更してみましょう。
# usermod -u 1234 hoge
1 2 3 | [root@CentOS7 ~]# usermod -u 1234 hoge [root@CentOS7 ~]# id hoge uid=1234(hoge) gid=1002(hoge) groups=1002(hoge) |
ユーザIDが「1234」に変更されました。
ユーザー登録を抹消する「userdel」
ユーザを削除するには、「userdel」コマンドを使用します。
コマンドの書式
userdel[オプション] ユーザー名
コマンドの主なオプション
- -r:対象ユーザーのホームディレクトリとメールスプールも同時に削除する
ユーザ「hoge」を削除し、同時に利用しているディレクトリも削除するには、下記のコマンドを実行します。
# userdel -r hoge
1 2 3 4 5 6 | [root@CentOS7 ~]# id hoge uid=1234(hoge) gid=1002(hoge) groups=1002(hoge) [root@CentOS7 ~]# cat /etc/passwd | grep hoge hoge:x:1234:1002::/home/hoge:/bin/bash [root@CentOS7 ~]# userdel -r hoge [root@CentOS7 ~]# cat /etc/passwd | grep hoge |
実行後、ユーザー:hogeに関する情報(パスワードファイルやホームディレクトリ等)が、同時に削除されました
グループを操作する
groupとは、ユーザーが属する集団、つまり部門を意味すると考えると分かり易いでしょう。

グループに対しての設定は、グループ内のすべてのユーザーに適用されます。また、ユーザーは複数のグループに所属することが出来ます。
ユーザーとグループの関係
- グループは自由に作成することが出来る
- グループと言う単位で作業する範囲を限定できる
- 1つのユーザーが複数のグループに所属することが出来る
たとえば「社内のファイルサーバーは全社員に使わせたいけれど、メールサーバーやウェブサーバーは、システム管理部門や広報部門など、一部のユーザーだけが使うようにしたい」といった場合には「groupadd」コマンドを使用します。
グループを追加「groupadd」
グループを追加するにはgroupaddコマンドを使用します。
コマンドの書式
groupadd[オプション] グループ名
コマンドの主なオプション
- -g(--gid グループID):作成するグループのグループIDを指定する
- -o(--non-unique):グループIDが同じグループの作成を許す
- -f(--force):グループが既に存在していた場合、終了する(エラーにはならない)
- -p(--password パスワード):暗号化されたログインパスワードを利用可能にする
- -K(--key キー=値):/etc/login.defsに保存されている値を一時的に置き換える
- -r(--system):システムアカウントを作成する
グループ番号(GID)が「5678」の番号の新たなグループ「newGroup」を追加してみます。
# groupadd -g 5678 newGroup
1 2 3 | [root@CentOS7 ~]# groupadd -g 5678 newGroup [root@CentOS7 ~]# cat /etc/group | grep 5678 newGroup:x:5678: |
実行後、GIDが5678番のnewGroupが追加されます。
グループパスワードを変更をする「gpasswd」
グループの管理(ユーザーの追加、削除、グループパスワードの削除など)を行うには、gpasswdコマンドを使用します。
コマンドの書式
gpasswd[オプション] グループ
コマンドの主なオプション
- -a(--add ユーザー):ユーザーをグループに所属させる
- -d(--delete ユーザー):ユーザーをグループのメンバーから外す
- -r(--delete-password):グループのパスワードを削除する
- -R(--restrict):グループへのアクセスをメンバーのみに制限する
- -A(--administrators ユーザー):グループの管理者を設定する
- -M(--members ユーザー):メンバーのリストを設定する
指定したグループにユーザーを追加してみましょう。
# gpasswd -a newUser newGroup
1 2 3 4 5 | [root@CentOS7 ~]# useradd -s /bin/bash -m newUser [root@CentOS7 ~]# gpasswd -a newUser newGroup ユーザ newUser をグループ newGroup に追加 [root@CentOS7 ~]# groups newUser newUser : newUser newGroup |
グループ名「newGroup」へ新たなユーザー「newUser」が追加されているのが分かります。
※ 指定したユーザが所属しているグループを表示するには「groups」コマンドを使用します。
グループを変更をする「groupmod」
グループIDやグループ名を変更するには、「groupmod」コマンドを使用します。
コマンドの書式
groupmod[オプション] グループ名
コマンドの主なオプション
- -n グループ名(--new-name グループ名):指定したグループ名に名前を変更する
- -g グループID(--gid グループID):指定したグループIDに変更する
- -p パスワード(--password パスワード):cryptで暗号化されたパスワードを利用する
- -R ディレクトリ(--root ディレクトリ):指定したディレクトリに変更を適用し、そのディレクトリにある構成ファイルを使用する
グループ名「newGroup」を「changeGroup」というグループ名に変更しみましょう。
# groupmod -n changeGroup newGroup
1 2 3 | [root@CentOS7 ~]# groupmod -n changeGroup newGroup [root@CentOS7 ~]# groups newUser newUser : newUser changeGroup |
実行後、グループ「newGroup」は「changeGroup」というグループ名に変更されました。
もともと「newGroup」に所属していた「newUser」のグループも「changeGroup」変更されています。
グループを削除する「groupdel」
グループを削除するには、「groupdel」コマンドを使用します。
コマンドの書式
groupdel [オプション] グループ名
コマンドの主なオプション
- -R(--root ディレクトリ):chrootするディレクトリ
- -f(--force):既存ユーザーのプライマリグループでも削除する
登録されているグループ「changeGroup」を削除します。
# groupdel changeGroup
1 2 3 | [root@CentOS7 ~]# groupdel changeGroup [root@CentOS7 ~]# groups newUser newUser : newUser |
実行後、削除が完了します。
アクセスを許可するグループを設定する「chgrp」
ファイルやディレクトリへアクセス許可するグループを設定するには、「chgrp」コマンドを使用します。
コマンドの書式
chgrp [オプション] 新しい所有グループ ファイル1 ファイル2…
コマンドの主なオプション
- -R(--recursive):ファイルとディレクトリを再帰的に変更する
- -v(--verbose):処理した内容を出力する
- -c(--changes):変更が行われた場合のみ処理内容を出力する
- -f(--silent):ほとんどのエラーメッセージを出力しない
オプション「-c」を利用し、実行結果を表示してみましょう。
# chgrp -c changeGroup test.sh
1 2 3 4 5 6 | [root@CentOS7 ~]# ls -l -rwxrwxrwx. 1 newUser newGroup 0 4月 6 12:52 test.sh [root@CentOS7 ~]# chgrp -c changeGroup test.sh `test.sh' のグループを newGroup から changeGroup へ変更しました [root@CentOS7 ~]# ls -l -rwxrwxrwx. 1 newUser changeGroup 0 4月 6 12:52 test.sh |
「test.sh」のグループを newGroup から changeGroup へ変更しました
実行結果から分かる通り、当該ファイル「test.sh」の所有グループが変更されました。
パーミッション(アクセス権)とは?
パーミッションとは、ディレクトリやファイルを閲覧、編集、実行可否を設定する権限のことです。Linuxは特にサーバー用OSとして利用されることが多いので、パーミッションをちゃんと設定することが大切です。
この設定を怠ると、外部の悪意あるユーザがアクセスしてファイルを操作したり、そうでなくとも一般ユーザが不意の誤操作を招いてしまう恐れもあります。
では、実際のパーミッションを見てみましょう。
「ls」コマンドとオプションの「-l」を実行することにより、ディレクトリ及びファイルのパーミッションを表示させることができます。
ここでは「ls」コマンドで「test.sh」というファイルのパーミッションを表示させます。
1 2 3 | [root@CentOS7 ~]# ls -l -rwxrw-r--. 1 user group 100 Dec 23 13:14 test.sh [root@CentOS7 ~]# |

ここの「-rwxrw-r--」(①②③④)は4つの領域に区分けできます。
パーミッション情報
① :ファイルのタイプを表記する領域です。
「ディレクトリか(d)」「リンクファイルか(l)」「通常ファイルか(-)」を判別するためのフラグが表示されます。今回はスクリプトファイルですので、「-」が表示されています。
② :そのファイルの所有ユーザの権限が表示されます。
ここでいう所有ユーザ名は「user」となります。
③ :グループに所属しているユーザの権限が表示されます。
ここでいう所属グループ名は「group」となります。
④ :②、③以外のその他ユーザの権限が表示されます。
ココがポイント
r :読み込み許可 ファイルを開くときなどに必要な権限です。
w:書き込み許可 ファイルを編集変更する場合に必要な権限です。
x :実行許可 このフラグが設定されていると、ファイルに実行権限が与えられ実行可能となります。
すなわち、②所有ユーザは読みこみ、書き込み、実行のすべてが許可されています。
③グループに所属しているユーザは、読みこみ、書き込みは許可されていますが、実行は許可されていません。
④その他ユーザは、読みこみのみ許可となります。
リンク数、サブディレクトリ数
⑤ ファイルの場合はリンク数、ディレクトリの場合は、サブディレクトリ数が表示されます。
今回はスクリプトファイルですので、「1」が表示されています。
所有者、グループ
⑥ 所有者情報が表示されます。
今回の例では、ユーザー「user」がファイル所有者になります。
⑦ グループ情報が表示されます。
今回の例では、グループ「group」が所属グループになります。
パーミッションマスク値の設定「umask」
ファイルやディレクトリを作成する際、mkdirコマンドと-mオプションの指定でパーミッションを指定することができます。
「777」や「666」のように3桁の数値を指定します。1文字目が所有者、2文字目がグループ、3文字目がその他ユーザの設定となります。
ココがポイント
r :読み込みを可能にするには「4」
w:書き込みを可能にするには「2」
x :実行を可能にするには「1」
所有者 :「r(4)」+「w(2)」+「x(1)」≒「7」
グループ:「r(4)」+「w(2)」≒「6」
その他 :「x(1)」≒「1」
パーミッション値:「761」≒「-rwxrw-r--」
実行を可能にするには「1」、書き込みを可能にするには「2」、読み込みを可能にするには「4」でその数字を合算した値で指定します。
すなわち、「777」は全ユーザにすべての権限を付与し、「666」は全ユーザに実行以外の権限を付与するということになります。
以上を前提とし、umaskコマンドは初期設定のパーミッションを制限することが可能です。
Linuxの初期設定は、ファイル作成時は「666」(rw-rw-rw-)ディレクトリ作成時は「777」(rwxrwxrwx)となっていますが、これらをマスクし制限を厳しくすることができます。
# umask 022
上記を実行すると、グループ、その他ユーザから「書き込みを可能にする」権限をはく奪し、「書き込み不可」とすることができます。
umask制限の例
ファイル:「666(rw-rw-rw-)」-「022」=「644(rw-r--r--)」
ディレクトリ:「777(rwxrwxrwx)」-「022」=「755(rwxr-xr-x)」
以上のように、パーミッションの引き算する値を決めるコマンドが、umaskとなります。
アクセス権を変更する「chmod」
chmodコマンドを使用することで、ファイルのパーミッションを変更することができます。
コマンドの書式
chmod [オプション] モード ファイル1 ファイル2 ファイル3……
コマンドの主なオプション
- -R(--recursive):ファイルとディレクトリを再帰的に変更する
- -v(--verbose):処理した内容を出力する
- -c(--changes):変更が行われた場合のみ処理内容を出力する
# chmod 777 test.sh
1 2 3 4 | [root@CentOS7 ~]# chmod 777 test.sh [root@CentOS7 ~]# ls -l -rwxrwxrwx. 1 user group 0 4月 6 12:52 test.sh [root@CentOS7 ~]# |
上記コマンドを実行することにより、test.shに全ユーザに対し、全ての権限を付与させることになります。(rwxrwxrwx)
オーナーを変更する「chown」
chownコマンドを使用することで、ファイルの所有者を変更することができます。
ココがポイント
chown [オプション] 新しい所有者 ファイル1 ファイル2……
コマンドの主なオプション
- -R(--recursive):ファイルとディレクトリを再帰的に変更する
- -v(--verbose):処理した内容を出力する
- -c(--changes):変更が行われた場合のみ処理内容を出力する
所有者が「user」になっている「test.sh」を「change」に変更する場合、下記のコマンドを実行します。
# chown change test.sh
1 2 3 4 | [root@CentOS7 ~]# chown change test.sh [root@CentOS7 ~]# ls -l -rwxrw-r--. 1 change group 100 Dec 24 18:27 test.sh [root@CentOS7 ~]# |
「# ls -l」コマンドを実行することにより、所有者が「change」になっていることが確認できます。
アクセス制御の応用
Linuxのアクセス制御には、基本的なパーミッション設定だけでなく、さらに高度な管理を可能にする応用的な手法があります。特殊なアクセス権限(SUID、SGID、Stickyビット)やデフォルトのパーミッションを設定するumaskコマンドは、システムの安全性や作業効率を向上させるための重要なツールです。このセクションでは、これらの応用的な設定の仕組みや活用法について詳しく解説します。セキュリティを強化しながら柔軟な運用を実現するための知識を身につけましょう。
特殊なアクセス権限(SUID、SGID、Stickyビット)
アクセス権限の基本を超えた特殊な設定として、SUID、SGID、Stickyビットがあります。これらの設定は、特定の操作におけるセキュリティと効率を向上させるために使用されます。それぞれの役割と設定方法を以下で詳しく解説します。
SUIDの設定とセキュリティ
SUID(Set User ID)は、ファイルが実行された際に、実行ユーザーではなくファイル所有者の権限で動作するようにする特殊なアクセス権です。主にシステムコマンド(例: passwd
コマンド)で利用されます。
- 設定方法:
chmod u+s ファイル名
- 確認方法:
ls -l
で確認すると、実行権限(x
)の部分がs
に置き換わります。
- 注意点: SUIDを乱用するとセキュリティリスクが高まるため、必要最低限の設定に留めてください。
1 2 3 | [root@CentOS7 -]# chmod u+s file.txt [root@CentOS7 -]# ls -l -rwSr--r-- 1 root root 0 Jan 12 03:29 file.txt |
SGIDのグループ管理
SGID(Set Group ID)は、ファイルまたはディレクトリに適用され、アクセス時にグループの権限が適用される仕組みです。ディレクトリに設定すると、新しく作成されたファイルが親ディレクトリのグループを引き継ぎます。
- 設定方法:
chmod g+s ディレクトリ名
- 確認方法:
ls -ld
で確認すると、ディレクトリの権限にs
が追加されます。
- 活用例: プロジェクトごとに同じグループでファイルを共有する際に便利です。
1 2 3 | [root@CentOS -]# chmod g+s test [root@CentOS -]# ls -l drwxr-sr-x 2 root root 4096 Jan 12 03:29 test |
Stickyビットでのディレクトリ管理
Stickyビットは、ディレクトリ内のファイルを管理する際に適用されます。このビットが設定されたディレクトリでは、ファイルの所有者または管理者のみがファイルを削除できます。
- 設定方法:
chmod +t ディレクトリ名
- 確認方法:
ls -ld
で確認すると、ディレクトリ権限の最後にt
が表示されます。
- 用途: 共有ディレクトリ(例:
/tmp
)での安全なファイル管理。
1 2 3 | [root@CentOS7 -]# chmod +t test [root@CentOS7 -]# ls -l drwxr-sr-t 2 root root 4096 Jan 12 03:29 test |
デフォルトのパーミッションを設定する(umask コマンド)
umask
コマンドを使用すると、ファイルやディレクトリが作成された際のデフォルトのパーミッションを設定できます。適切な umask
設定は、セキュリティ強化に役立ちます。
- 基本構文:
umask [値]
- 例:
- デフォルトで読み取りと書き込みの権限を許可する場合:
umask 022
- デフォルトで全権限を制限する場合:
umask 077
- デフォルトで読み取りと書き込みの権限を許可する場合:
- 確認方法:
umask
- 注意点: セキュリティ要件に応じて適切な値を設定してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # デフォルトで読み取りと書き込みの権限を許可する場合 [root@CentOS7 -]# umask 022 [root@CentOS7 -]# mkdir test1 [root@CentOS7 -]# ls -l drwxr-sr-t 2 root root 4096 Jan 12 03:29 test drwxr-xr-x 2 root root 4096 Jan 19 17:13 test1 #デフォルトで全権限を制限する場合 [root@CentOS7 -]# umask 077 [root@CentOS7 -]# mkdir test2 [root@CentOS7 -]# ls -l drwxr-sr-t 2 root root 4096 Jan 12 03:29 test drwxr-xr-x 2 root root 4096 Jan 19 17:13 test1 drwx------ 2 root root 4096 Jan 19 17:14 test2 |
umaskの概要と設定方法
umask
は、新しく作成されるファイルやディレクトリに対するデフォルトの権限を設定するためのコマンドです。この設定により、ユーザーが意図しない権限を他のユーザーに付与しないように制御できます。
誰が設定するのか?
システム管理者または通常のユーザーが、自身のセッションやスクリプト実行環境で設定します。
誰に対して行うのか?
設定を行うユーザー自身に適用され、そのユーザーが作成するすべての新しいファイルやディレクトリにデフォルトの権限が決まります。
セキュリティを強化するため、デフォルトで特定のアクセス権限を制限します。
例えば、重要なファイルが意図せずに他のユーザーに読み取られたり、書き込まれたりするリスクを防ぎます。
具体例での説明
例1: デフォルトのファイル権限を確認
以下のコマンドを実行すると、現在のセッションで設定されている umask
値を確認できます。
umask 022
結果: この設定では、新しいファイル作成時に他のユーザーに書き込み権限が付与されません。
例2: ファイルのデフォルト権限を変更
以下のコマンドを実行すると、すべてのアクセスを他のユーザーから禁止する設定になります。
umask 077
結果: umask を設定したユーザーが新しく作成するファイルやディレクトリにおいて、他のすべてのユーザーからアクセスが禁止されます。
補足情報
- デフォルト権限の計算方法:
- ファイルの最大権限は
666
、ディレクトリは777
。 umask
の値をこれらから引き算することで実際の権限が決まります。
- ファイルの最大権限は
- 例:
umask 022
の場合- ファイル:
666 - 022 = 644
(所有者には読み書き、その他は読み取りのみ) - ディレクトリ:
777 - 022 = 755
(所有者には読み書き実行、その他は読み取り実行のみ)
- ファイル:
umask を正しく設定することで、Linuxシステムのセキュリティとファイル管理を強化できます。
これらの応用設定を活用することで、Linuxシステムのセキュリティと効率が大幅に向上します。適切に理解し、必要な場面で柔軟に活用しましょう。
ユーザーとアクセス権限のトラブルシューティング
Linuxシステムの運用では、ユーザー管理やアクセス権限の設定に関連する問題が発生することがあります。このセクションでは、ログインできない場合や権限エラーの原因を特定し、適切に対処する方法を解説します。
ログインできない場合の原因と対策
- ユーザーアカウントが無効化されている
- 原因: ユーザーアカウントが一時的に無効化されているか、削除されている。
- 対策: アカウントを有効化します。
usermod -U username
- パスワードの設定ミス
- 原因: パスワードが間違っているか期限切れになっている可能性。
- 対策: パスワードをリセットします。
passwd username
- ホームディレクトリが存在しない
- 原因: ユーザーのホームディレクトリが削除またはアクセス不能になっている。
- 対策: ホームディレクトリを作成し、適切な権限を設定します。
mkdir /home/username
chown username:username /home/username
chmod 700 /home/username
- 権限の設定ミス
- 原因: ユーザーの権限が適切に設定されていない。
- 対策: 必要なグループに追加します。
usermod -aG groupname username
アクセス権限のエラーを解消する方法
- 「Permission denied」の解消
- 原因: ユーザーに必要な権限が付与されていない。
- 対策: ファイルに必要な権限を付与します。
chmod u+rwx filename
- グループ権限の設定ミス
- 原因: ファイルやディレクトリが正しいグループに属していない。
- 対策: グループを設定し、権限を付与します。
chown :groupname filename
chmod g+rw filename
- 特殊なパーミッションの設定が必要な場合
- 原因: 特殊な条件での操作が必要(例: StickyビットやSUID)。
- 対策: 特殊な権限を設定します。
chmod +t directoryname
chmod u+s filename
- ACLのエラー
- 原因: ACL(アクセス制御リスト)で許可されていないユーザーが操作を試みた。
- 対策: ACLを設定します。
setfacl -m u:username:rw filename
区切り文字 :『:(コロン)』は所有者とグループの間を区切る記号として使用されます。
省略の意図: グループだけを変更する場合、所有者部分を空にして : を残すことで、グループだけを明示的に指定できます。
書式例): chown :[グループ] ファイル名
これらのトラブルシューティング手順を活用することで、Linuxシステムのユーザー管理やアクセス権限の問題を効率的に解決することができます。適切な権限設定を維持しながら、問題が発生した際に迅速に対応できるようにしましょう。
この記事を読んだら、次は 「【Linuxの基礎知識】リンクとiノードを理解してファイル管理をマスターしよう」 を読むのがおすすめです!