Pythonをsudoで実行する方法について解説します。sudoとは、Linux環境でroot権限でコマンドを実行するためのコマンドです。
sudoとは
sudoとは、Linux環境で「root権限でコマンドを実行する」ためのコマンドです。su (rootユーザに切り替えるコマンド) + 英語のdo、が語源です。以下のようにコマンドを入力すると、コマンドcommandをroot権限で実行します。
sudo command
sudoでは、実行できるコマンドを制限したり、コマンド履歴を取得したりできます。rootユーザへの切り替えを禁止するが、一部root権限の必要な作業がある、といった状況でよく用いられます。
Pythonをsudoで実行する方法
Pythonをsudoで実行するには、sudoに続けてPythonプログラムとソースコードファイルを指定します。sudoを使わない場合と同様に、ソースコードファイルの指定は絶対パス、相対パスのいずれでも可です。
sudo python script.py
sudo python /path/to/script.py
実際に書いてみよう
以下のソースコードファイルread_shadow.pyを作成しました。/etc/shadow (暗号化パスワードを保存しているファイル) を表示するプログラムです。
with open('/etc/shadow') as f:
print(f.read())
最初にsudoなし (普通のユーザ権限)で実行すると、Permission deniedというエラーになりました。これは、/etc/shadowの読取権限がないためです。次にsudoありで実行すると、/etc/shadowの中身を読み取れました。これは、Pythonプログラムがroot権限で実行されたためです。
以上がUbuntu環境でPythonをsudoで実行する方法についての解説です。この情報が皆さんのPythonプログラミングに役立つことを願っています。.