sudo make install: 権限が拒否されました

sudo make install: 権限が拒否されました

ソースからのビルドに関して、非常に困惑する質問があります。長い間答えを探しましたが、どこにも見つかりません... 以前にもソースからソフトウェアをコンパイルしたことがありますが、これには困惑しました。

そこで、ソースから Python 2.7.2 をインストールしようとしています。 は成功し./configure、正常makeに実行されているようです。 しかし、 を実行するとsudo make install、さまざまなエラーが発生します...

まず、sudo make install次のようになります:

make: stat: GNUmakefile: Permission denied
make: stat: makefile: Permission denied
make: stat: Makefile: Permission denied
make: stat: install: Permission denied
make: *** No rule to make target `install'. Stop.

それで私はそうしましたchmod +rx Makefile*。しかし、無駄でした。

そしてsudo ls .

ls: cannot access .: Permission denied

そして、ls -d .権限はdrwxr-x---

そこで、苦肉の策として、chmod +rx .次のことを思いつきました。

make: stat: Modules/config.c.in: Permission denied
make: *** No rule to make target `Modules/config.c.in', needed by `Makefile'. Stop.

少し進展がありましたが、何が起こっているのでしょうか? 何らかの権限の問題のようです。sudo が解決策になるだろうと思っていましたが、明らかに何か他のことが起こっています... 試してみましたsudo -sが、権限の問題がまた発生してしまいました...

Ubuntu 10.04LTSを使用しています。

答え1

あなたが実際に遭遇しているのは、「ルート スカッシュ」と呼ばれる NFS ポリシーだと思います。ユーザーが特定のホストでルートを必要とすることは珍しくありませんが、共有 NFS ボリュームで同じ種類の権限をユーザーに持たせたくないでしょう。したがって、ローカル ルート アクセスを付与しても、マウントされた NFS ボリュームをユーザーが乱暴に操作したり、他のユーザーのファイルにアクセスしたり変更したりすることはできません。NFS サーバーはルートの uid を 0 から 65534 ( nobody) にマップします。これが、例でディレクトリを一覧表示することさえできない理由です。

したがって、いくつかの選択肢が残ります:

  1. nobody最上位ディレクトリでを実行し、ファイルに対する「その他」の読み取り/書き込み権限を与えることで、ビルド内のすべてのファイルにアクセスできるようにすることができますchmod -R o+rw .(これで十分かどうかはわかりません。たとえば、o+x検索が必要な場合はディレクトリが必要になる場合があります)。
  2. NFS サーバーの/etc/exportsファイルにアクセスできる場合は、ルート スカッシュを無効にすることができます (あまり良い考えではないかもしれません)。
  3. /usr/local/src/usr/srcなどのローカル ディレクトリを構築する/tmpか、 などの独自のローカル ディレクトリを作成します (ユーザーが所有することもできます) /scratch/myuser。これはおそらく、最も手間のかからないオプションです。

答え2

sshfsを使用している場合は、-o allow_otherオプションを使用してマウントします

$ sudo sshfs -o allow_other hostfolder localfolder

その前にuser_allow_other設定ファイル

答え3

chown を実行して自分のユーザーに変更してみてください。つまり、ディレクトリ内で「sudo chown user ./*」(user を自分のユーザー名に置き換えます) を使用すると、ディレクトリ内のすべてのファイルの所有者が自分に変更されます。

関連情報