【Linux】パーミションとは?設定や変更方法/chmodコマンドの使い方

この記事からわかること

  • Linuxパーミション(アクセス権)とは?
  • パーミションの設定/変更方法
  • chmodコマンドなどの使い方
  • umaskコマンドでデフォルトのパーミションを変更する

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

パーミション(アクセス権限)とは?

Linuxを始めとするOS(オペレーティングシステム)では複数のユーザーを登録(マルチユーザーシステム)できるため、ユーザーに対してファイルにアクセスできる制限を設けることが重要になってきます。

パーミションとはまさしくファイルに対して付与する、ユーザーに対してのアクセス権限のことです。読み取りのみ許可したり、書き込みも許可したりと設定を変更することで予期せぬユーザーからの変更や削除を防ぐことができるようになります。

Linuxにおけるユーザーの管理

Linuxにおいてもマルチユーザーシステムを導入しているため複数のユーザーを作成可能です。作成されているユーザーは「管理者ユーザー(スーパーユーザー)」と「一般ユーザー」に分かれます。

管理者ユーザー(スーパーユーザー)とは

管理者ユーザー(スーパーユーザー)は「root」という名前で最初から登録されており、システムやソフトウェア、ファイルに対して自由に設定、変更、操作できる強い権限を付与されているユーザーです。またファイルに対して付与されるパーミション(アクセス権)を無視して実行できてしまうため基本的な操作は一般ユーザーを作成して行うのが定石です。

一般ユーザーとは

一般ユーザーは1つのOSに対して何個でも作成可能なユーザーです。家族で使う場合など1つのPCに複数アカウントを作っているのがまさしく複数のユーザーを登録していることになります。

一般ユーザーはGUIでもCUIでも作成可能です。「ユーザー名」と「パスワード」を登録すれば作成でき、自動で/home/user名ディレクトリが作成されます。GUIでもデスクトップ部分がまさしくuser名ディレクトリの中の領域になります。

├── Home
│    ├── ame
│        ├── Documents
│        ├── Public
│        ├── Movies
│        ├── vendor
│        ├── Applications
│        ├── Downloads
│        └── Desktop
│    ├── taro
│        ├── Documents
│        ├── :
│        └── Desktop
│    └── yuki
│        ├── Documents
│        ├── :
│        └── Desktop

CUI操作でのユーザ作成方法

CUIでユーザーを新規作成する場合は管理者ユーザー(スーパーユーザー)でなければ実行できません。

$ su -            // スーパーユーザーに切り替え
Password:         // スーパーユーザーのパス入力
# useradd ユーザ名 // ユーザー作成
# passwd ユーザ名  // ユーザーパスワード設定
# exit           // 一般ユーザーに戻る

作成しているユーザーを確認したい時は管理者ユーザー(スーパーユーザー)でログイン後ls /homeで表示させることができます。

$ su -            // スーパーユーザーに切り替え
Password:         // スーパーユーザーのパス入力
# ls /home        // ユーザーを確認
ame taro yuki

ユーザー(所有者)とグループ

ユーザ名ディレクトリ配下はそのユーザーが「所有者」のファイルやディレクトリになります。なので作成したファイルは基本読み取り、書き込み、実行が可能になります。

また一般ユーザーはグループにまとめて管理することもできます。ユーザー作成時は自動でユーザー名と同名のグループ(グループだけど1人だけ)が作成され所属することになります。グループも新規作成やユーザーの追加などが行えます。自分がどこのグループに属しているかはユーザー情報を取得できるidコマンドで確認できます。

$ id
uid=501(ame) gid=20(ame) groups=20(ame) ...

uidgidはユーザーとグループに自動で付与される固有のidです。

所有者ではないユーザー(一般ユーザー)は「その他のユーザー」として扱われます。スーパーユーザーはこれに属しません。

要点

パーミションの表示方法

ファイルにかけられているパーミションを確認するにはlsコマンドのオプション-lで確認できます。

$ ls -l
-rwxr-xr-x 4 user staff 128 3 4 21:15 sample.txt

パーミションは左端の先頭を除いたrwxr-xr-x部分に表示されます。先頭部分はファイル種別を表しています。

    -      rwx    r-x     r-x
ファイル種別 所有者 グループ その他のユーザー

表示は3つずつのブロックに分かれており左から「所有者」「グループ」「その他のユーザー」のアクセス権限を表しています。

パーミションの表示形態

パーミションの種類

パーミションは上記の3つの種類に分かれそれぞれ記号で表されrwxの順番に左から対応しています。付与されていない場合は「-」で表示されます。

r-- : 読み取り権のみ
r-x : 読み取り/実行
rw- : 読み取り/書き込み
rwx : 読み取り/書き込み/実行

上記のような権限をブロック(所有者/グループ/その他)ごとに指定されているのでrwxr-xr-xのような長い文字列になります。

数値で指定するパーミション

また記号ではなく数値で表すことも可能で、lsの確認時ではなく後述するchmodコマンドの引数に使う場合に使用することができます。

4 : 読み取り権のみ
5 : 読み取り/実行
6 : 読み取り/書き込み
7 : 読み取り/書き込み/実行

数値の場合も3つのブロックごとに順番に対応します。755や600などと言った3桁の数値で指定(表示)します。

パーミションを変更するchmodコマンド

パーミション指定(変更)するのはchmodコマンド(change mode)の役割です。

$ chmod [-R] アクセス権 ファイル名/ディレクトリ名

オプション-Rを指定すると引数に指定したディレクトリだけでなくその配下のファイル全てのアクセス権を変更できます。

アクセス権は先ほど説明した数値(755や600など)で指定するのが一番直感的で分かりやすいです。

$ chmod 755 sample.txt

もちろん記号形式でも変更できますが記号の場合は「変更対象」「変更」「アクセス権(rwx)」の3つを指定します。

変更対象

記号 概要
u 所有者
g グループ
o その他のユーザー
a 全てのユーザー

変更

記号 概要
+ 追加
- 削除
= 指定
$ chmod g+w sample.txt

複数の記号を連ねることでまとめて指定すること可能です。

$ chmod ug-wx sample.txt

umaskコマンド:アクセス権のデフォルト値を設定する

ファイルやディレクトリを新規作成する時はumaskコマンドで定義されている値に基づいてパーミションが自動設定されています。umaskの値を変更すればファイル作成時に自動設定されるパーミションを任意の値に変更することが可能になります。

デフォルトのumask値を確認する

$ umask
022

umask値は3桁(または4桁)の数値でこれ自体がパーミションを表している訳ではありません。ファイルなら「666」、ディレクトリなら「777」からumask値を引いた値がパーミションとして設定されます。例えば上記の通りumask値が「022」なら新規作成時のパーミションはファイルが「644」、ディレクトリが「755」で自動で設定されます。

// ファイルのアクセス権
-rw-r--r--   1 usr staff       0  4 28 06:20 sample.txt
// ディレクトリのアクセス権
drwxr-xr-x  28 usr staff      896 4 28 06:20 laravel

umaskコマンドの引数に数値を渡せばumask値を変更できます。ユーザーごとに設定されているので変更しても影響があるのは自身のみです。

umask値を変更する

// 変更
$ umask 002
// 確認
$ umask
002

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index