sudo make install: permiso denegado

3

Tengo una pregunta muy molesta sobre la construcción a partir de fuentes. He buscado una respuesta durante mucho tiempo y en ninguna parte puedo encontrarla ... He compilado software de fuentes antes y esto me desconcertó.

Así que estoy tratando de instalar Python 2.7.2 desde las fuentes. Puedo hacer un éxito ./configure, también makeparece funcionar bien. Pero cuando lo hago sudo make install, obtengo una variedad de errores ...

Primero, sudo make installme da esto:

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.

Entonces lo hice chmod +rx Makefile*. En vano.

Entonces, sudo ls .dice

ls: cannot access .: Permission denied

Luego ls -d .dice que los permisos sondrwxr-x---

Entonces, como una medida desesperada, chmod +rx .. Eso me dio:

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

Entonces algo de progreso ... ¿Qué está pasando aquí? Parece un problema de permiso. Supuse que sudo sería la solución, pero claramente hay algo más aquí ... Lo intenté sudo -spero vuelvo a tener esos problemas de permisos ...

Estoy usando Ubuntu 10.04LTS.

Wojtek Rzepala
fuente
No estás haciendo esto en un volumen NFS por casualidad, ¿verdad?
FatalError
Sí, lo estoy haciendo en un volumen NFS. Soy el dueño de los archivos. Mi directorio de inicio es sacado de NFS. Y mis archivos están en algún lugar de ese monte. Estoy tratando de instalar en la máquina local (entonces, compilar archivos en mi montaje NFS, instalar en la computadora local, donde estoy en la lista de sudoers).
Wojtek Rzepala

Respuestas:

5

Creo que lo que estás golpeando es en realidad una política NFS llamada "root squash". No es raro que los usuarios necesiten root en un host en particular, pero no desea que tengan el mismo tipo de privilegios en los volúmenes NFS compartidos. Por lo tanto, otorgar acceso a la raíz local no permite que un usuario ejecute bruscamente sobre ningún volumen NFS montado y acceda / modifique los archivos de otros usuarios: el servidor NFS asignará el uid de la raíz de 0 a 65534 ( nobody), por lo que puede ni siquiera enumere el directorio en su ejemplo.

Entonces, eso te deja con un par de opciones:

  1. Puede intentar hacer que todos los archivos estén accesibles nobodyen su compilación haciendo un chmod -R o+rw .directorio en el nivel superior, otorgando a "otros" permisos de lectura / escritura en sus archivos (puede o no ser suficiente; por ejemplo, puede necesitar o+xdirectorios si necesita buscarlos).
  2. Si tiene acceso al /etc/exportsarchivo del servidor NFS , puede deshabilitar el squash raíz (quizás no sea una buena idea).
  3. Sólo construir en un directorio local, como /usr/local/src, /usr/src, /tmpetc, o simplemente crear su propio directorio local (que incluso puede hacer que sea propiedad de su usuario) desea /scratch/myuser. Esta es probablemente la opción que causa la menor cantidad de dolores de cabeza.
Error fatal
fuente
¡Gracias! Eso funcionó perfectamente. Usé la opción 3, ya que era la más fácil (y 2 no era posible). Tiene mucho más sentido ahora ...
Wojtek Rzepala
También funcionó para mí mientras instalaba Ruby desde la fuente. Inicialmente, la ubicación de construcción era ~/downloads/ruby-2.4.0. ./configure, makefuncionó, pero sudo make installdio error: :~/downloads/ruby-2.4.0$ 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 instalar '. Detener. `` ``. Ejecuté los pasos anteriores copiando los archivos de origen a / tmp y sudo make installfuncionó bien. /usr/local/src, /usr/srcno funcionó debido a errores de permiso
user3206440
0

Intenta compartirlo con tu usuario. Es decir, use "sudo chown user ./*" (reemplazando usuario con su nombre de usuario) cuando esté en el directorio y le cambiará el propietario de todos los archivos en el directorio.

Matthew Dudak
fuente
1
Soy el dueño de los archivos. Viven en mi directorio de inicio.
Wojtek Rzepala
0

Si está usando sshfs, monte usando la -o allow_otheropción

$ sudo sshfs -o allow_other hostfolder localfolder

antes de eso tienes que configurar user_allow_otheren /etc/fuse.conf

Necktwi
fuente