ファイルの各権限の見方・操作・sudoについて
はじめに
多少は実践的にLinux使えるようになりたいと思い書籍「新しいLinuxの教科書」を読み進めています。
本記事では「新しいLinuxの教科書」で学んだ内容と別途気になって調べた内容や知識も含めアウトプットしていきます。
前回の記事の続きとなっております。
ファイルのオーナーとグループ
Linuxにおいて、ファイルには所有者とグループという概念があります。
自身で作成したファイルからシステムが提供するライブラリや実行コマンドまで、すべてに所有者が設定されています。
ファイルのオーナー(所有者)
ls -lコマンド - ファイルオーナーの確認
lsコマンドに-lオプション
をつけることでファイルのオーナーを含む詳細を確認することができます。
以下はcatコマンドのファイルのオーナーを見ています。
# 実行 ~/w/gig ❯❯❯ ls -l /bin/cat # 結果 -rwxr-xr-x 1 root wheel 148K 7 14 2022 /bin/cat*
この例でいうとroot
がファイルのオーナーで、wheel
がファイルが所属するグループ名になります。
グループ
グループとは、ユーザをまとめた集まりを指します。
システム管理を行うwheel
というグループに複数の管理者ユーザを所属させ、wheelグループ
に対して許可を与えることで、同じ役割を持つ複数のユーザに同一の権限を与えることができます。
下記のファイルは所有者がroot、グループがwheel、パーミッションがrwxr-xr-xとなっておりますが
仮に自分のユーザー名がuserだとした場合、読み込み・実行の権限はありますが、書き込みの権限はありません。
-rwxr-xr-x 1 root wheel 148K 7 14 2022 /bin/cat*
もしwheelというグループにuserが追加された場合は、ファイルの所有者がwheelグループに所属している場合は、そのグループに所属するユーザーにはファイルの読み書き権限が与えられる可能性があります。
ただし、ファイルのパーミッション設定によっては、wheelグループに所属するユーザーにも書き込み権限が付与されない場合があります。
ユーザー名を確認するコマンド - whoami
rootユーザーであるか確認するには、以下のコマンドを実行します。
whoami
もしくは、以下のコマンドを実行します。
id -u
もし結果が0
であれば、現在のユーザーはrootユーザーであることを意味します。
上記のコマンドは、現在ログインしているLinuxユーザーのUID(User ID)を表示するためのものです。
ファイルのパーミッション
1つ1つのファイルには「誰に、どのような操作を許可するか」という権限を規定する情報=パーミッション
が設定されています。
下記の出力しているファイルは所有者がroot、グループがwheel、パーミッションがrwxr-xr-x
となっております。
-rwxr-xr-x 1 root wheel 148K 7 14 2022 /bin/cat*
以下は各タイプのパーミッションの例です。
# 実行 ~/w/整/linux_test ❯❯❯ ls -l # 結果 -rw-r--r-- 2 yano staff 0 4 11 09:06 link # シンボリックリンク drwxr-xr-x 2 yano staff 64 4 11 09:07 test/ # ディレクトリ -rw-r--r-- 2 yano staff 0 4 11 09:06 test.txt # ファイル
ディレクトリは頭文字がd
となります。書籍にはシンボリックリンクは**l**
になると記載ありましたが私の環境では通常ファイルと同様に**-**
となっておりました。
先頭の1文字はファイルタイプを表し、ファイルタイプの後ろの9文字は3文字ごとのブロックになっており、それぞれが「オーナー」、「グループ」、「その他のユーザ」に対するパーミッションになります。
パーミッション | 読み取り(r) | 書き込み(w) | 実行(x) |
---|---|---|---|
r | ○ | ||
w | ○ | ||
x | ○ | ||
rw- | ○ | ○ | |
r-x | ○ | ○ | |
-wx | ○ | ○ | |
rwx | ○ | ○ | ○ |
ディレクトリのパーミッション
ファイルと同様に、ディレクトリにもパーミッションが設定されています。
-ld
オプションをつけることで確認ができます。
# 実行 ~/w/整/linux_test ❯❯❯ ls -ld test # 結果 drwxr-xr-x 2 yano staff 64 4 11 09:07 test/
d rwx r-x r-x 意味は若干ファイルの時とことなります。
パーミッション | 意味 |
---|---|
r | ファイルの読み込みが可能 |
w | ファイルへの書き込みが可能 |
x | ファイルを実行可能にする |
--- | 全てのアクセスを拒否 |
--x | 実行のみ許可 |
-w- | 書き込みのみ許可 |
-wx | 書き込みと実行のみ許可 |
r-- | 読み込みのみ許可 |
r-x | 読み込みと実行のみ許可 |
rw- | 読み込みと書き込みのみ許可 |
rwx | 全てのアクセスを許可 |
chmodコマンド - パーミッションの変更
chmodはファイルやディレクトリのパーミッション(アクセス権限)を変更するためのコマンドです。
chmodコマンド - 基本構文
基本的な使い方は、以下のようになります。
chmod [オプション] モード ファイル名
モード
は、パーミッションを表す数値または記号のいずれかで指定します。
数値で指定する場合は、r
(読み込み権限)、w
(書き込み権限)、x
(実行権限)のそれぞれに対応する値を3桁の数値で表現します。たとえば、読み込み権限のみを設定する場合は、以下のように指定します。
chmod 400 ファイル名
400というのは読み込み権限の数値である4を3桁で表したものになります。
他の数値や解説は以下になります。
数値 | 記号 | パーミッション |
---|---|---|
0 | --- | なし |
1 | --x | 実行のみ |
2 | -w- | 書き込みのみ |
3 | -wx | 書き込み・実行 |
4 | r-- | 読み取りのみ |
5 | r-x | 読み取り・実行 |
6 | rw- | 読み取り・書き込み |
7 | rwx | 読み取り・書き込み・実行 |
記号を使って指定する場合は、以下のようになります。
記号 | 意味 |
---|---|
u | ファイル所有者(user) |
g | ファイル所有者のグループ(group) |
o | その他のユーザー(others) |
a | すべてのユーザー(all) |
+ | 権限を追加する |
- | 権限を削除する |
= | 権限を指定したものに置き換える |
読み込み権限を持っているグループを追加する場合は、chmod g+r ファイル名
のように指定します。
また、読み込み権限を持っているグループから書き込み権限を削除する場合は、chmod g-w ファイル名
のように指定します。
以下はtest.txtテキストファイルの書き込み権限を削除する例です。
# 実行 (権限を確認) ~/w/整/linux_test ❯❯❯ ls -l # 結果 (-rw-なのでディレクトリの読み書きと実行権限があることがわかる) -rw-r--r-- 2 yanokouhei staff 0 4 11 09:06 test.txt # 実行 (書き込み権限を削除) ~/w/整/linux_test ❯❯❯ chmod u-w test.txt # 実行 (再度権限を確認) ~/w/整/linux_test ❯❯❯ ls -l # 実行 (-r--なので書き込み権限のwが削除されていることがわかる) -r--r--r-- 2 yanokouhei staff 0 4 11 09:06 test.txt # 実行 (echoコマンドで実際に書き込み) ~/w/整/linux_test ❯❯❯ echo 書き込みテスト >> test.txt # 結果 (パーミッションエラーを確認) zsh: permission denied: test.txt
スーパーユーザ
Linuxにおいて全ての権限を持つ最高管理者のことを指します。
スーパーユーザーはrootと呼ばれることが多く、一般ユーザーとは異なり、システム全体に対して操作を行うことができます。
スーパーユーザーとしてログインすることで、パスワードの変更、システムの設定変更、ファイルやディレクトリの作成・削除など、通常のユーザーではできない操作を行うことができます。
また、全ての操作が許可されているため、誤った操作や不用意な操作によってシステムが壊れる可能性があります。
スーパーユーザーの権限を持ったrootでの作業は、必要最低限にとどめることが望ましいです。また、root権限で作業する際は、確認を怠らず、慎重に作業を行うようにする必要があります。
suコマンド - 一時的にユーザを変更する
suコマンドは、別のユーザーに切り替えるためのコマンドです。"su"は "switch user" の略です。
一般的に、suコマンドはrootユーザーに切り替えるために使われます。
suコマンドを使用するためには、ターミナルで以下のように入力します。
su [ユーザー名]
このコマンドを実行すると、パスワードの入力
を求められます。
rootユーザーに切り替える場合、パスワードを求められる前に以下のように入力します。
su -
また、suコマンドは、切り替え先のユーザー名を指定しない場合、デフォルトでrootユーザーに切り替わります。
用途
suコマンドは、以下のような用途に使われます。
- rootユーザーで特定の操作を実行する必要がある場合。
- 他のユーザーに切り替えて、ファイルの編集やプログラムの実行などを行う場合。
終了するには以下のコマンドを実行します。
exit
sudoコマンド - 管理者として実行する
スーパーユーザー権限でコマンドを実行するためのコマンドです。
rootユーザーのパスワードを知らなくても、sudoコマンドを使用することで、スーパーユーザー権限でコマンドを実行できます。
sudoコマンドの基本的な使い方は、次のようになります。
sudo command
用途
管理者権限が必要なタスクを行うときに使用されます。
例えば、システムの設定を変更する、システムのログを監視する、ファイルやディレクトリの所有者を変更するなどのタスクを行うときに使用できます。
最初の説明にもありましたがsu
やsudo
コマンドを使用する場合には注意点してください。
続く…
コメント
本記事の内容は以上になります!
書籍の続きのアウトプットも随時更新したいと思います。
プログラミングスクールのご紹介 (卒業生より)**
お世話になったプログラミングスクールであるRUNTEQです♪
こちらのリンクを経由すると1万円引きになります。
RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。
もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。