Python|ファイルの権限を変更する

1. はじめに

Pythonでファイル操作を行う際、「ファイルの権限を変更する方法」を知っておくと、スクリプトの自動化やセキュリティ管理に役立ちます。
本記事では、Pythonの標準モジュールosstatを使って、ファイルの読み取り・書き込み・実行権限を変更する方法について、具体的なコード例とともに解説します。

この記事を読むことで、以下のことが分かります。

  • 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. パーミッション変更の失敗と対処

ファイルが存在しない、または権限がない場合、PermissionErrorFileNotFoundError が発生します。

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のスクリプトを安全かつ効率的に運用するために、ぜひ実務でも活用してみてください。

タイトルとURLをコピーしました