sudo make install: permiso denegado

sudo make install: permiso denegado

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

Entonces estoy intentando instalar Python 2.7.2 desde las fuentes. Puedo hacerlo con éxito ./configurey también makeparece funcionar bien. Pero cuando lo hago sudo make install, aparece 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.

Así que 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 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 algunos avances... ¿Qué está pasando aquí? Parece algún tipo de problema de permisos. Supuse que sudo sería la solución, pero claramente hay algo más sucediendo aquí... Lo intenté sudo -spero tengo esos problemas de permisos nuevamente...

Estoy usando Ubuntu 10.04LTS.

Respuesta1

Creo que lo que estás alcanzando es en realidad una política de 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 de root local no permite a un usuario ejecutar sin contemplaciones ningún volumen NFS montado y acceder/modificar los archivos de otros usuarios: el servidor NFS asignará el uid de root de 0 a 65534 ( nobody), por lo que usted puede Ni siquiera incluye el directorio en su ejemplo.

Entonces, eso te deja con un par de opciones:

  1. Puede intentar hacer que todos los archivos sean accesibles nobodyen su compilación creando un chmod -R o+rw .directorio en el nivel superior, otorgando a "otros" permisos de lectura/escritura en sus archivos (puede que sea suficiente o no; por ejemplo, es posible que necesite o+xdirectorios si necesita buscarlos).
  2. Si tiene acceso al /etc/exportsarchivo del servidor NFS, puede desactivar el root squash (quizás no sea una buena idea).
  3. Simplemente cree un directorio local como /usr/local/src, /usr/src, /tmpetc, o simplemente cree su propio directorio local (incluso puede hacerlo propiedad de su usuario) como /scratch/myuser. Esta es probablemente la opción que menos quebraderos de cabeza da.

Respuesta2

Si está utilizando sshfs, monte usando -o allow_otherla opción

$ sudo sshfs -o allow_other hostfolder localfolder

antes de eso tienes que user_allow_otherconfigurar/etc/fuse.conf

Respuesta3

Intente entregárselo a su 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.

información relacionada