1. はじめに
Pythonでファイル操作を行う際、「ファイルの権限を変更する方法」を知っておくと、スクリプトの自動化やセキュリティ管理に役立ちます。
本記事では、Pythonの標準モジュールos
やstat
を使って、ファイルの読み取り・書き込み・実行権限を変更する方法について、具体的なコード例とともに解説します。
この記事を読むことで、以下のことが分かります。
- Pythonでファイルの権限を変更する基本方法
- 数字(8進数)で指定する権限の意味
- chmodを使った実務的な応用例
2. Pythonでファイルの権限を変更する基本解説
2-1. ファイルの権限とは?
UNIX系のOSでは、ファイルには所有者・グループ・その他ユーザーそれぞれに対して「読み取り(r)」「書き込み(w)」「実行(x)」の権限を設定できます。
Pythonでは、os.chmod()
関数を使ってこれらのパーミッションを変更できます。
2-2. os.chmod()の基本的な使い方
以下は、Pythonでファイルの権限を変更するシンプルな例です。
import os
# 対象ファイルのパス
file_path = "sample.txt"
# 読み取り・書き込み・実行をすべて許可(所有者のみ)
os.chmod(file_path, 0o700)
実行結果:
(このコードは実行結果を出力しませんが、sample.txt の権限が 700 に変更されます)
0o700
のような表記は8進数(octal)で、パーミッションを表します。以下はよく使われる値の一例です:
8進数 | 意味 |
---|---|
0o777 | 全員に読み取り・書き込み・実行を許可 |
0o755 | 所有者に全権限、他は読み取り・実行 |
0o644 | 所有者に読み取り・書き込み、他は読み取りのみ |
0o600 | 所有者のみ読み取り・書き込み |
3. よくある使い方・応用例
3-1. 実行ファイルに権限を付ける(スクリプト実行可能にする)
Pythonで生成したシェルスクリプトを、実行可能な状態にしたい場合の例です。
import os
# スクリプトファイル
script_path = "myscript.sh"
# 実行可能にする(rwxr-xr-x)
os.chmod(script_path, 0o755)
実行結果:
myscript.sh が実行可能になり、他のユーザーも実行できるようになります
3-2. 複数ファイルの権限を一括変更
ディレクトリ内のすべてのファイルに対して、権限を一括で変更する例です。
import os
target_dir = "./logs"
for file_name in os.listdir(target_dir):
file_path = os.path.join(target_dir, file_name)
if os.path.isfile(file_path):
os.chmod(file_path, 0o644) # 所有者:rw, 他:r
実行結果:
./logs フォルダ内のすべてのファイルの権限が 644 に変更されます
3-3. 権限を数値で取得・確認する
変更前にファイルの権限を取得して確認するには、os.stat()
とstat
モジュールを使います。
import os
import stat
file_path = "sample.txt"
mode = os.stat(file_path).st_mode
print(oct(mode)[-3:]) # 最後の3桁だけ抽出
実行結果:
644
4. 注意点・エラー対策
4-1. Windowsではchmodの挙動が異なる
os.chmod()
はUNIX/Linuxでは動作しますが、Windows環境では一部制限があります。読み取り専用属性の変更程度にとどまるため、クロスプラットフォームで使う場合は注意が必要です。
4-2. パーミッション変更の失敗と対処
ファイルが存在しない、または権限がない場合、PermissionError
や FileNotFoundError
が発生します。
try:
os.chmod("not_exist.txt", 0o644)
except FileNotFoundError:
print("ファイルが見つかりません。")
except PermissionError:
print("権限がありません。管理者で実行してください。")
実行結果:
ファイルが見つかりません。
5. まとめ
Pythonでファイルの権限を変更する方法として、os.chmod()
を使う手法を学びました。
特に、UNIX/Linux環境での自動化スクリプトやログファイル管理では、権限の設定が非常に重要になります。
最後に、本記事のポイントをまとめます:
os.chmod()
で8進数を使い、ファイルのパーミッションを簡単に変更可能os.stat()
とstat
で権限を確認できる- WindowsとLinuxで動作に違いがあるので環境に注意
権限の設定はセキュリティ対策の基本でもあります。Pythonのスクリプトを安全かつ効率的に運用するために、ぜひ実務でも活用してみてください。