CodeGym /コース /Docker SELF /アクセス権の基礎: chmod, chown, umask

アクセス権の基礎: chmod, chown, umask

Docker SELF
レベル 2 , レッスン 0
使用可能

アクセス権の基礎: chmod, chown, umask

1. アクセス権の概念

Linuxでファイルやディレクトリを扱う場合、そのアクセス権を管理する必要があります。たとえば、靴下をその辺に放置していたら、家中の人がそれを使えるようになってしまいますよね!Linuxのアクセス権は、こうした「靴下の無許可使用」(もっと重要なもの、例えばスクリプトなど)を防ぐことができます。始めましょう。

Linuxのすべてのファイル(とディレクトリ)には、読む、書く、または実行する権利を誰が持つかを定めた3つのアクセス権セットがあります:

  1. 読み取り (r): ファイルの内容を見る、またはディレクトリ内のファイル一覧を見ることができます。
  2. 書き込み (w): ファイルの内容を変更したり、ディレクトリにファイルを追加/削除できます。
  3. 実行 (x): ファイルをプログラムとして実行する(またはディレクトリに入る)ことができます。

三層モデル

各権利は3つのユーザーグループに適用されます:

  • 所有者 (owner): ファイルを作成した人。
  • グループ (group): ファイルに割り当てられたグループに属するユーザー。
  • その他 (others): システム内のそれ以外のすべてのユーザー。

ファイルのアクセス権の例:

-rwxr-xr--

分解してみましょう:

  • 最初の文字 - はファイルであることを表します(ディレクトリの場合は d)。
  • 最初の3文字 rwx — 所有者の権利 (読み取り、書き込み、実行)。
  • 次の3文字 r-x — グループの権利 (読み取り、実行)。
  • 最後の3文字 r-- — その他のユーザーの権利 (読み取りのみ)。

2. コマンドchmod: アクセス権管理

シンボリック形式

コマンドchmodは、ファイルやディレクトリのアクセス権を変更するためのものだよ。シンボリック形式の書き方はこんな感じ:

chmod [誰][アクション][権限] ファイル名
  • 誰: u (所有者), g (グループ), o (その他), a (全員).
  • アクション: + (権限を追加), - (権限を削除), = (権限を正確に設定).
  • 権限: r (読み取り), w (書き込み), x (実行).

例:


# 全員に実行権限を付与
chmod a+x script.sh

# グループにのみ書き込み権限を追加
chmod g+w file.txt

# その他の読み取り権限を削除
chmod o-r document.txt

数値形式

数値形式(またはオクタル形式)はコンパクトだけど、「数字の魔法」を理解する必要があるんだ。この形式では、各権限の組み合わせが数字で表されているよ:

  • r = 4
  • w = 2
  • x = 1

権限は足し算される:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

書き方:

chmod [数字][数字][数字] ファイル名

例:


# 所有者にrwx、グループにr-x、その他にr--を設定
chmod 754 file.sh

3. ファイルの所有者を変更する: コマンド chown

ファイルを別のユーザー(またはグループ)に渡す必要がある場合、chownコマンドが役立ちます。

フォーマット:

chown [ユーザー]:[グループ] ファイル名

例:


# user1に所有権を渡す
chown user1 myfile.txt

# 所有者とグループを渡す
chown user1:group1 myfile.txt

# グループの変更のみ
chown :group2 myfile.txt

4. デフォルトマスク: umask

ファイルを作成すると、そのアクセス権はシステムによって決定されます。例えば、アクセス権は rw-r--r-- になる場合があります。でも、それはどこから来るのでしょう?答えは umask コマンドにあります。

umask とは何ですか?

umask は、新しいファイルに対して設定されない権限を決定します。

例えば:

  • ファイルの基本権限セット: 666 (実行権限なし).
  • マスク: 022.
  • 最終的な権限: 644 (666 - 022).

コマンド:

  • 現在のマスクを見る: umask
  • 新しいマスクを設定する: umask 0022

例:


# 新しいファイルが rw-rw-r-- の権限を持つようマスクを設定
umask 0002

5. 管理者権限とsudo

sudoとは?

sudo"superuser do"の略)は、LinuxやUnix系システムでスーパーユーザー(root)または他の特権を持つユーザー名でコマンドを実行できるコマンドだよ。

sudoシステムは、一時的に管理機能へのアクセスを提供し、常にrootアカウントで作業する必要がないので、システムの偶発的または悪意のある変更のリスクを減らせるよ。

重要!

簡単に言うと、管理者権限で実行するコマンドの前にsudoを書くんだ。

sudoはどう動作するの?

コマンドの実行:

sudo付きでコマンドを入力すると、システムはそのユーザーが特権付きのコマンドを実行する権利があるかどうかを確認するよ。

例えば:

sudo apt update

認証:

セッション中に最初にsudoを使うと、システムは現在のユーザーのパスワード(rootではない)を入力するよう求めるよ。

パスワードを正しく入力すると、システムは短い期間(通常は5~15分)認証情報を保持して、毎回パスワードを求めないようにするんだ。

コマンドの実行:

ユーザーがsudoの設定で指定された権限を持っていれば、そのコマンドはスーパーユーザー権限で実行されるよ。

sudoの主な機能とコマンド

特権付きでコマンドを実行:

sudo <コマンド>

例えば:

sudo apt install nginx

他のユーザー名でコマンドを実行: -uフラグを使用:

sudo -u <ユーザー名> <コマンド>

例えば:

sudo -u user1 ls /home/user1

管理者用のターミナル取得: root権限のシェルを起動:

sudo -i

または:

sudo su

sudo設定の確認:

sudo -l

現在のユーザーが実行可能なコマンドを表示するよ。

sudo設定の編集:

sudo visudo

このコマンドは、/etc/sudoers構成ファイルを安全に編集するために開くんだ。

6. 例

実践で知識を試してみましょう。

タスク 1: chmodを使った権限管理

  1. ファイルを作成する:

    touch myfile.txt
    
  2. 所有者に読み取り、書き込み、実行の権限を付与する:

    chmod u+rwx myfile.txt
    
  3. 他のユーザーには読み取り権限だけを付与する:

    chmod o+r myfile.txt
    
  4. 権限を確認する:

    ls -l myfile.txt
    

タスク 2: chownを使った所有者変更

  1. ファイルを作成する:

    touch ownedfile.txt
    
  2. 所有者をユーザーuser1に変更する (管理者権限が必要):

    sudo chown user1 ownedfile.txt
    
  3. 変更を確認する:

    ls -l ownedfile.txt
    

タスク 3: umaskでの実験

  1. 現在のumaskを確認する:

    umask
    
  2. umaskを027に設定する:

    umask 027
    
  3. 新しいファイルを作成する:

    touch newfile.txt
    
  4. 作成されたファイルの権限を確認する:

    ls -l newfile.txt
    

7. 典型的なミスと特徴

  1. 所有者変更時にsudoを忘れる: ファイルの所有者を変更できるのは管理者だけだよ。もし"Operation not permitted"エラーが出たら、sudoを追加してみて。
  2. chmodコマンドの順序ミス: 間違ったオブジェクトの権限を変更しちゃった。正しいファイルやディレクトリを選んでいるか確認してね。
  3. umaskは新しいファイルにだけ影響する: 既存のファイルの権限をumaskで変更しようとしても無理だよ。chmodを使ってね。

Linuxのアクセス権がめっちゃ柔軟だって知ってた? 実は、全宇宙でたった一人だけが"見える"ファイルを作ることもできるんだよ!「大きな力には大きな責任が伴う」ってやつだね! さあ、chmodchown、そしてumaskを使いこなして、自分のLinuxシステムを便利で安全なものにしよう!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION