vsftpd chroot opps на ubuntu 12.04

vsftpd chroot opps на ubuntu 12.04

Я не знаком с системами на базе DEB, поэтому прошу прощения, если решение простое.

Я пытаюсь настроить vsftpd, чтобы запереть пользователей в их домашних каталогах. Я получаю 500 OOPS: vsftpd: отказывается работать с доступным для записи root внутри chroot()

Я изучаю эту проблему и нахожу, что общее решение — использовать бэкпорт, предоставленный thefrontiergroup, вот так:

sudo add-apt-repository ppa:thefrontiergroup/vsftpd

Когда я это делаю, я получаю ошибку 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

Пытаясь найти другое решение, я нахожу рекомендацию изменить права доступа к домашним каталогам, как в этой статье.vsftpd - ограничить доступ пользователей к домашнему каталогуОднако, следование этому приведет к большому количеству ручного сброса разрешений, поскольку я хочу, чтобы подкаталог каждого пользователя был доступен через Apache, как описано в конфигурации Apache UserDir.http://httpd.apache.org/docs/2.2/howto/public_html.html

В конце концов, я хочу иметь возможность добавить пользователя foo и волшебным образом получить возможность для foo иметь полные привилегии чтения и записи в /home/foo, НЕ имея возможности видеть какую-либо другую часть файловой системы, иметьhttp://xxxx/~foo/доступным для всех, и доступ к оболочке, если я изменю их оболочку с nologin на bash.

Ubuntu 12.04 LTS, vsftpd 2.3.5

Пожалуйста, дайте совет... Я застрял и чешу голову!

решение1

Я просто предполагаю, потому что ваша ситуация не совсем такая же, но...

apt-get install python-software-properties

(или, может быть apt-get update python-software-properties, )?

Это был предварительный шаг в системе 12.04, которую я настраивал, но я также получил ошибку "add-apt-repository: command not found", а не ошибки python. Именно эти ошибки заставляют меня думать, что проблема в python, поскольку эта команда успешно выполнилась для меня после установки python-software-properties.

Единственная альтернатива, которую я могу придумать (слишком поздно пытаться исправить собственную настройку), вместо добавления внешнего репозитория, это сделать домашним каталогом каждого пользователя /home/, а затем изменить разрешения для всех остальных каталогов так, чтобы единственным каталогом, который им разрешено ВИДЕТЬ при чтении /home/, был "foo". Им все равно придется переходить в него, или вам придется каким-то образом написать скрипт, изменяющий их CWD после входа в систему, но когда на начальном экране отображается только "foo" и он недоступен для записи, то при использовании графического интерфейса будет довольно незначительное влияние на работу "cd foo" или щелчка по папке foo. И, видимо, это не так просто, как я себе представлял. Я думал об IIS с разрешениями NTFS, когда представлял себе настройку разрешений, которая определяет, можно ли просматривать каталог. Я обнаружил, что в vsftpd.conf есть опция под названием «hide_files», которая может помочь сделать это с помощью тщательно подобранных условий (она позволяет указать регулярное выражение, но я не знаю, можно ли сделать что-то вроде расширения переменной на основе текущего имени пользователя, чтобы сделать ее разной для каждого пользователя...)

Связанный контент