
Я не знаком с системами на базе 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», которая может помочь сделать это с помощью тщательно подобранных условий (она позволяет указать регулярное выражение, но я не знаю, можно ли сделать что-то вроде расширения переменной на основе текущего имени пользователя, чтобы сделать ее разной для каждого пользователя...)