Linux の基礎知識

【Linuxの基礎知識】アクセス制御・ユーザー管理の基本|アクセス権設定をわかりやすく解説

Linuxのシステム管理では、ユーザー管理とアクセス権限の設定がシステムの安全性と効率性を確保するための基礎となります。

ユーザーごとに適切な権限を割り当て、必要最低限のアクセスを提供することで、不正な操作やデータの漏洩を防ぐことが可能です。

本記事では、ユーザーアカウントの作成やグループの設定方法から、アクセス権限の活用によるシステムの強化まで、実務に役立つ知識を徹底解説します。

Linux初心者の方でも分かりやすいよう、具体的なコマンド例を交えながら説明しますので、ぜひ最後までご覧ください!

ITエンジニア基礎スキル

🟢 Linux の基礎知識
📌 サーバー運用の基盤となるOSの仕組みを理解する
├─【Linuxの基礎知識】Linuxとは?基本概要と仕組みをわかりやすく解説!
├─【Linuxの基礎知識】インストールからログインまでの完全マニュアル
├─【Linuxの基礎知識】カーネルの役割と起動プロセスをわかりやすく解説!
├─【Linuxの基礎知識】ファイルシステムを極める!ディレクトリ構造とその関連性を解説
├─【Linuxの基礎知識】ディレクトリとファイル操作を完全マスター!初心者向けガイド
├─【Linuxの基礎知識】初心者向け!Linux管理に役立つ基本コマンド完全ガイド
├─【Linuxの基礎知識】ユーザー管理を極める!アクセス権との連携で強固なシステム構築
├─【Linuxの基礎知識】リンクとiノードについて理解を深めよう!
├─【Linuxの基礎知識】LVMとは? LVMを理解しよう!
├─【Linuxの基礎知識】再起動時に入れ替わるデバイス名「sdX」を固定したい
├─【Linuxの基礎知識】過去事例から学ぶ!システムセキュリティの基本
├─【Linuxの基礎知識】ディスク管理の完全ガイド!初心者から実践までを徹底解説
├─【Linuxの基礎知識】ネットワーク設定とトラブルシューティングを徹底解説!
├─【Linuxの基礎知識】リソース監視ツールの使い方を徹底解説!
├─【Linuxの基礎知識】パッケージ管理の応用テクニックをマスター!
├─【Linuxの基礎知識】仮想化とコンテナの基本を学ぶ!仕組みと違いを解説!
└─【Linuxの基礎知識】バックアップとリストア!スナップショット活用も紹介!

ユーザーアカウントを操作する

業務用としてLinuxが採用されるとき、その最も主な使いみちはサーバー用途が挙げられます。

社内状況にもよりますが、自社内でサーバーを利用する場合、メールサーバーやファイルサーバーといった使い方が想定されるわけですが、こうしたサーバーの管理はシステム管理部門の仕事というのが一般的といえます。

このような場合において、システム管理部門、もしくはそれに準ずる所属以外の社員が社内のサーバーに対して意図しない動作を起こさせないために、ユーザーの所属やそのユーザーごとに行える、操作の権限を予め付与しておく必要があります。

ユーザーとは?

ログイン処理で、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 日数):パスワードが期限切れからアカウントが無効化されるまでの日数

[root@CentOS7 ~]# useradd hoge
[root@CentOS7 ~]# id hoge
uid=1001(hoge) gid=1001(hoge) groups=1001(hoge)

ここでは、ユーザー名「hoge」を登録してみます。

# useradd  hoge

オプションを指定せずにユーザーを作成した場合、下記に挙げるいくつかの環境変数へデフォルト値が代入されます。

  • SHELL=「/bin/bash」(デフォルト)
  • HOME=「/home/hoge」(デフォルト)
  • LANG=「ja_JP.UTF-8」(デフォルト)
  • etc・・・

詳しくは、ユーザー作成後、「$ env」コマンドで確認してみてください。

ユーザー「hoge」の作成が完了しました。

ユーザーパスワードを変更する「passwd」

パスワードを変更するには、「passwd」コマンドを使用します。

オプションを付与することにより、パスワードをの削除や変更を行うことが出来ます。

コマンドの書式

passwd[オプション] ユーザー名

コマンドの主なオプション

  • -l ユーザー名:指定したユーザーをロックする
  • -u ユーザー名:指定したユーザーのロックを解除する
  • -d ユーザー名:パスワードを削除する
  • -S ユーザー名:パスワードの状態を表示する
  • -n 日数 ユーザー名:パスワード変更後、再度変更可能になるまでの日数を設定する
  • -x 日数 ユーザー名:パスワードが有効な日数を設定する
  • -w 日数 ユーザー名:パスワード失効前に警告を表示する日数を設定する
  • -i 日数 ユーザー名:パスワードが有効期限に達した後、パスワードを無効にするまでの猶予期間を設定する

ここではオプションを省略して、「hoge」のパスワードを変更してみます。
実行後、新しいパスワードの入力を2回求められるので、任意のパスワードを入力し変更を完了させます。

# passwd hoge

[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

[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

[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とは、ユーザーが属する集団、つまり部門を意味すると考えると分かり易いでしょう。

ユーザーMr.Sは、二つのグループに所属している

グループに対しての設定は、グループ内のすべてのユーザーに適用されます。また、ユーザーは複数のグループに所属することが出来ます。

ユーザーとグループの関係

  • グループは自由に作成することが出来る
  • グループと言う単位で作業する範囲を限定できる
  • 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

[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

[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

[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

[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

[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」というファイルのパーミッションを表示させます。

[root@CentOS7 ~]# ls -l
-rwxrw-r--. 1 user group 100 Dec 23 13:14 test.sh

パーミッション情報

Linuxのパーミッション(アクセス権)表示は記号が並んでいて初心者にはわかりにくいですが、仕組みを理解すれば簡単です。

以下の表で、それぞれの記号や位置がどのような意味を持つのかを一目で確認できるようにまとめましたので参考にしてください。

番号表示部分意味・説明
-ファイルの種類(-: 通常ファイル、d: ディレクトリ、l: リンクファイルなど)
rwx所有ユーザーの権限(読み取りr、書き込みw、実行x)
rw-所有グループの権限(読み取りr、書き込みw、実行x)
r--その他ユーザーの権限(読み取りr、書き込みw、実行x)
1リンク数(ハードリンクの数)
user所有ユーザー名
group所有グループ名

パーミッションマスク値の設定「umask」

ファイルやディレクトリを作成するとき、初期のアクセス権(パーミッション)を設定できるのが「umask」です。

Linuxではアクセス権を3桁の数字で表し、左から「所有者」「グループ」「その他ユーザ」の順番で設定します。

r:読み込み許可(ファイル閲覧・ディレクトリ内確認)
w:書き込み許可(ファイル編集・ディレクトリ作成/削除)
x:実行許可(ファイル実行・ディレクトリ移動可能)

アクセス権の数字は次のように決まります。

r(読み込み)=4
w(書き込み)=2
x(実行)=1

これらを合計して権限を設定します。

例)

所有者にすべての権限を付与(rwx) → 4 + 2 + 1 = 7
グループに読み書き権限を付与(rw-) → 4 + 2 = 6
その他ユーザに実行権限だけ付与(--x) → 1

この場合、パーミッション値は「761」となり、記号では「-rwxrw--x」と表示されます。

通常、Linuxではファイル作成時は「666」(rw-rw-rw-)、ディレクトリ作成時は「777」(rwxrwxrwx)が初期設定ですが、セキュリティを高めるために不要な権限を制限する必要があります。

このとき「umask」を使うことで、ファイルやディレクトリ作成時のパーミッションから不要な権限を自動的に除外し、初期設定を制限することが可能です。

# 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

[root@CentOS7 ~]# chmod 777 test.sh
[root@CentOS7 ~]# ls -l
-rwxrwxrwx. 1 user group 0 4月 6 12:52 test.sh

上記コマンドを実行することにより、test.shに全ユーザに対し、全ての権限を付与させることになります。(rwxrwxrwx)

オーナーを変更する「chown」

chownコマンドを使用することで、ファイルの所有者を変更することができます。

ココがポイント

chown [オプション] 新しい所有者 ファイル1 ファイル2……

コマンドの主なオプション

  • -R(--recursive):ファイルとディレクトリを再帰的に変更する
  • -v(--verbose):処理した内容を出力する
  • -c(--changes):変更が行われた場合のみ処理内容を出力する

所有者が「user」になっている「test.sh」を「change」に変更する場合、下記のコマンドを実行します。

# chown change test.sh

[root@CentOS7 ~]# chown change test.sh
[root@CentOS7 ~]# ls -l
-rwxrw-r--. 1 change group 100 Dec 24 18:27 test.sh

「# 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を乱用するとセキュリティリスクが高まるため、必要最低限の設定に留めてください。

[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 が追加されます。
  • 活用例: プロジェクトごとに同じグループでファイルを共有する際に便利です。

[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)での安全なファイル管理。

[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
  • 注意点: セキュリティ要件に応じて適切な値を設定してください。

# デフォルトで読み取りと書き込みの権限を許可する場合
[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ノードを理解してファイル管理をマスターしよう を読むのがおすすめです!

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Linux の基礎知識