OS-X 10.8 の /Library/Python/2.7/site-packages にファイルをインストールしたいです。管理者としてログインしていますが、それでも「アクセスが拒否されました」というエラーが表示されます。ターミナルからそこにディレクトリを作成しようとすると、同じエラーが発生します。どうやらルート領域に書き込む権限がないようです。どうすれば修正できますか?
答え1
MacOSX に「管理者」としてログインすると、特定の特権コマンドを実行する権限が与えられますが、root (ユーザー ID 0 - スーパーユーザー) になるわけではありません。Python ディレクトリと、/Library の下にあるほとんどすべてのものは、root のみが所有し、書き込み可能です。例:
mymac:Python kentalt$ ls -l
total 0
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.3
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.5
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.6
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.7
mymac:Python kentalt$ touch foo
touch: foo: Permission denied
管理者は、管理者権限で sudo (ルート ユーザーとしてコマンドを実行) を使用できます。
mymac:Python kentalt$ sudo touch foo
Password:
mymac: Python kentalt$ ls -l
total 0
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.3
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.5
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.6
drwxr-xr-x 3 root wheel 102 Jun 20 2012 2.7
-rw-r--r-- 1 root wheel 0 Jan 10 08:57 foo
このようなコマンドごとに sudo を使用する必要があることに注意してください (短時間にこのようなコマンドを複数実行する場合、そのたびにパスワードを求められることはありません)。
mymac:Python kentalt$ rm foo
override rw-r--r-- root/wheel for foo? y
rm: foo: Permission denied
mymac:Python kentalt$ sudo rm foo
mymac:Python kentalt$ ls
2.3 2.5 2.6 2.7
すべてのメンテナンスを root として行うのではなく、ディレクトリの権限を変更して、グループまたはすべてのユーザーが書き込みできるようにすることもできます。権限の変更によって一部のプログラムが壊れたり、システムの更新時に元に戻ったりする可能性があることに注意してください。ただし、Python はおそらく問題ありません。または、サイト パッケージのシンボリック リンクをユーザーが書き込み可能なスペースの別の場所に追加して、更新をシステムでサポートされているファイルから明確に分離します。
「sudo bash」を使用すると、シェル セッションを root として開始できます。これは非常に危険な行為です。root はほとんど何でも実行でき、システム全体を削除する前に「rm -rf . /*」などのサニティ チェックさえ必要としない可能性があるからです (これは、古い UNIX 管理者なら誰でも少なくとも 1 回はやったことがあるタイプミスです)。