0Pricing
Cyber Security Academy · レッスン

ファイルの権限と所有権

chmod、chown、sticky bit、SUID/SGIDと、権限によって不正アクセスを防ぐ方法を習得します。

「ファイルの権限と所有権」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

パーミッションが重要な理由

ファイルのパーミッションは、誰がファイルを読み取り、書き込み、実行できるかを制御します。パーミッションの設定ミスは、権限昇格やデータ侵害の最も一般的な原因の一つです。

パーミッション文字列の読み方

ls -laを実行すると、各ファイルに-rwxr-xr--のような10文字のパーミッション文字列が表示されます。これは、ファイル種別、所有者のパーミッション、グループのパーミッション、その他のユーザーのパーミッションに分けて考えます。

$ ls -la /etc/passwd
-rw-r--r-- 1 root root 2847 Jan 10 10:00 /etc/passwd
# -  = regular file
# rw- = owner (root) can read+write
# r-- = group can read only
# r-- = others can read only

数値(8進数)パーミッション

パーミッションは8進数でも表現できます。読み取り=4、書き込み=2、実行=1です。それぞれの対象区分について値を合計します。

# rwxr-xr-- = 754
# rw-rw-r-- = 664 (world-readable, group-writable)
# rwx------ = 700 (private executable)

パーミッションの変更: chmod

chmodを使用してパーミッションを変更します。シンボリックモード(u+x)または8進数モード(755)を使用できます。

$ chmod 755 script.sh      # rwxr-xr-x
$ chmod u+x script.sh      # add execute for owner
$ chmod o-r secret.txt     # remove read for others
$ chmod 600 id_rsa         # SSH key: owner read/write only

所有権の変更: chown

chownコマンドは、ファイルの所有者やグループを変更します。別のユーザーへの所有権の変更はrootだけが実行できます。

$ chown user:group file.txt
$ chown root:root /etc/shadow
$ chown -R www-data:www-data /var/www/html/

特殊パーミッション: SUID、SGID、スティッキービット

SUID(Set User ID)を設定すると、ファイルは所有者の権限で実行されます。ディレクトリのSGIDを設定すると、新しく作成されたファイルがそのグループを継承します。スティッキービットを設定すると、所有者以外のユーザーによる削除を防止できます。

$ ls -la /usr/bin/passwd
-rwsr-xr-x 1 root root 68208 /usr/bin/passwd
# The "s" in owner execute position = SUID
# This runs as root regardless of who calls it

SUIDバイナリの検索(権限昇格)

攻撃者は権限を昇格するためにSUIDバイナリを探します。既知のエクスプロイトや悪用方法が存在するSUIDバイナリは、rootアクセスを許してしまう可能性があります。

$ find / -perm -4000 -type f 2>/dev/null
/usr/bin/passwd
/usr/bin/sudo
/usr/bin/pkexec
/bin/mount

/etc/shadowファイル

/etc/shadowにはハッシュ化されたパスワードが保存されており、rootだけが読み取れます。これを読み取れる場合は、hashcatやjohnを使ってオフライン解析を試みることができます。

$ ls -la /etc/shadow
-rw-r----- 1 root shadow 1423 Jan 10 /etc/shadow
# Only root and the shadow group can read this

umask: デフォルトパーミッションマスク

umaskの値は、666(ファイル)または777(ディレクトリ)から差し引かれ、新しいファイルのデフォルトパーミッションを設定します。umaskが022の場合、新しいファイルのパーミッションは644になります。

$ umask
0022
$ touch newfile
$ ls -la newfile
-rw-r--r-- 1 user user 0 newfile  # 666 - 022 = 644

アクセス制御リスト(ACL)

ACLは従来のUnixパーミッションモデルを拡張し、所有者・グループ・その他のユーザーという3区分を超えて、ユーザーごとのパーミッションを設定できるようにします。getfaclとsetfaclを使用します。

$ getfacl /var/www/html/
# file: var/www/html/
# owner: root
# group: www-data
user::rwx
group::r-x
other::r-x

不変ファイル: chattr

chattr +iコマンドを使うと、ファイルを変更できない状態にできます。rootであっても変更や削除はできません。ルートキットは、ファイルを保護するためにこの機能を使用します。lsattrで確認できます。

$ chattr +i /etc/passwd   # make immutable
$ lsattr /etc/passwd
----i--------e-- /etc/passwd
$ chattr -i /etc/passwd   # remove immutability

確認問題

SUIDパーミッションによって何が可能になりますか?

まとめ: ファイルパーミッション

chmod、chown、およびSUIDの仕組みを習得しましょう。CTFや実際のペネトレーションテストでは、SUIDの設定ミスがroot権限を取得する最も一般的な経路の一つです。重要なファイルのパーミッションは必ず確認してください。

よくある質問

「ファイルの権限と所有権」レッスンは無料ですか?

はい。「ファイルの権限と所有権」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「ファイルの権限と所有権」で何を学びますか?

chmod、chown、sticky bit、SUID/SGIDと、権限によって不正アクセスを防ぐ方法を習得します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ファイルの権限と所有権」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ファイルの権限と所有権
  2. ユーザーとグループの管理
  3. SSHの堅牢化と鍵ベース認証
  4. iptablesとUFWのファイアウォールルール
← Cyber Security Academyに戻る