vsftpd chroot opps en ubuntu 12.04

vsftpd chroot opps en ubuntu 12.04

No estoy familiarizado con los sistemas basados ​​en Deb, así que me disculpo si la solución es simple.

Estoy intentando configurar vsftpd para encarcelar a los usuarios en sus directorios personales. Obtengo el 500 OOPS: vsftpd: negarse a ejecutar con raíz grabable dentro de chroot()

Investigo este problema y encuentro que la solución común es utilizar el backport proporcionado por thefrontiergroup de esta manera:

sudo add-apt-repository ppa:thefrontiergroup/vsftpd

Cuando hago esto, aparece un error de Python:

You are about to add the following PPA to your system:
 vsftpd 2.3.5 with the allow_writeable_chroot feature backported from vsftpd 3.
 More info: https://launchpad.net/~thefrontiergroup/+archive/vsftpd
Press [ENTER] to continue or ctrl-c to cancel adding it

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 99, in run
    self.add_ppa_signing_key(self.ppa_path)
  File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 132, in  add_ppa_signing_key
    tmp_keyring_dir = tempfile.mkdtemp()
  File "/usr/lib/python2.7/tempfile.py", line 322, in mkdtemp
    name = names.next()
  File "/usr/lib/python2.7/tempfile.py", line 141, in next
    letters = [choose(c) for dummy in "123456"]
  File "/usr/lib/python2.7/random.py", line 274, in choice
    return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty
ValueError: cannot convert float NaN to integer

Al intentar encontrar otra solución, encuentro una recomendación para cambiar los permisos de los directorios de inicio como en este artículo.vsftpd: restringe a los usuarios al directorio de inicioSin embargo, seguir esto daría lugar a una gran cantidad de restablecimiento manual de permisos, porque quiero que se pueda acceder a un subdirectorio de cada usuario a través de Apache, como se describe en la configuración de UserDir de Apache.http://httpd.apache.org/docs/2.2/howto/public_html.html

Al final, quiero poder agregar el usuario foo y mágicamente terminar con la capacidad de que foo tenga privilegios completos de lectura/escritura en /home/foo SIN poder ver ninguna otra parte del sistema de archivos, para tenerhttp://xxxx/~foo/accesible para cualquiera, y acceso al shell si cambio su shell de nologin a bash.

Ubuntu 12.04 LTS, vsftpd 2.3.5

Por favor, ofrece algún consejo... ¡Estoy atascado rascándome la cabeza!

Respuesta1

Solo estoy adivinando, porque tu situación no es exactamente la misma, pero...

apt-get install python-software-properties

(o quizás apt-get update python-software-properties)?

Ese era un paso previo en el sistema 12.04 que estaba configurando, pero también recibí el error "add-apt-repository: comando no encontrado", no errores de Python. Son esos errores los que me hacen pensar que Python es su problema, ya que ese comando se ejecutó exitosamente una vez que instalé python-software-properties.

La única otra alternativa que se me ocurre (demasiado tarde para intentar/arreglar mi propia configuración) en lugar de agregar un repositorio externo, sería hacer que todos sean el hogar /home/ y luego modificar los permisos en todos los demás directorios para que el único directorio que pueden VER cuando leen /home/ es "foo". Aún tendrían que navegar en él o tendrían que cambiar de alguna manera su CWD después de iniciar sesión, pero cuando se muestre la pantalla inicial nada más que "foo" y no se puede escribir, debería tener un impacto bastante bajo tener que "cd foo" o hacer clic en la carpeta foo si se usa una GUI. Y aparentemente esto no es tan simple como había imaginado, estaba pensando en IIS con permisos NTFS cuando imaginé una configuración de permiso que determina si se puede ver un directorio. Encontré que hay una opción en vsftpd.conf llamada " hide_files", que podría lograr esto con términos cuidadosamente seleccionados (te permite especificar una expresión regular, pero no sé si podrías hacer algo como expandir una variable basada en el inicio de sesión del usuario actual para hacerla diferente para cada usuario...)

información relacionada