ファイルの権限と所有権
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 itSUIDバイナリの検索(権限昇格)
攻撃者は権限を昇格するために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 thisumask: デフォルトパーミッションマスク
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フィードバックを取得できます。ローカル設定は不要です。