VSFTPD Ограничить доступ пользователей к определенной папке

Проверочные операторы не имеют возможности выполнять оценку условий так же, как если/тогда может. Регистр/переключатель действительно может соответствовать только узорам и выполнять определенные случаи на основе соответствия.

Потенциальные решения

Я бы начал с использования [..] вот так.

[ -d /path/to/folder1 ] && echo cmd1
[ -d /path/to/folder2 ] && echo cmd2
[ -d /path/to/folder3 ] && echo cmd3
[ -d /path/to/folder4 ] && echo cmd4
[ -d /path/to/folder5 ] && echo cmd5

Если после этого необходимо выполнить более сложные команды, то может потребоваться переключение на формальный, если/то.

if [ -d /path/to/folder1 ]; then
  cmd1;
fi

-121--290759-

Не следует обрабатывать выходные данные ls в cpio . «Стандартным» способом получения имен файлов в cpio является использование find :

find /med*/ravb*/*36/b/c/* -type f | cpio ...

или в системах Linux:

find /med*/ravb*/*36/b/c/* -type f -print0 | cpio -0 ...

, который обрабатывает имена файлов с помощью новых строк и других специальных символов. -type f выбирает только файлы.

-121--290756-

Вы можете найти хороший ресурс здесь: http://docs.oracle.com/cd/E23824_01/html/821-1459/bkupsavefiles-21.html

-d Создает каталоги по мере необходимости.

0
24.03.2018, 05:45
1 ответ

Во-первых, вам нужно сделать /LDдомашним каталогом test_user. Вы сказали, что у вас нет команды usermod; затем используйте вместо этого vipwили, если это тоже недоступно, просто убедитесь, что пользователь в данный момент не вошел в систему, и отредактируйте /etc/passwdнапрямую.

Затем проверьте справочную страницу vsftpd.conf и прочитайте описания параметров chroot_local_user, chroot_list_enableи chroot_list_file.

Если вы хотите, чтобы FTP-подключения всех (или большинства )пользователей были ограничены их домашними каталогами, вы можете установить для chroot_local_userзначение YES и использовать файл /etc/vsftpd.chroot_list(или любой другой указанный файл. с помощью опции chroot_list_file), чтобы указать исключения.

Если необходимо ограничить только test_user, оставьте для chroot_local_userзначение НЕТ и вместо этого установите для chroot_list_enableзначение ДА, а затем добавьте test_userк /etc/vsftpd.chroot_listфайл (или любой другой файл, указанный chroot_list_fileопция ). Вы можете создать файл, если он еще не существует.

В результате этих действий, когда test_userвходит в систему по FTP-соединению, они увидят каталог /LDкак корневой каталог(/). В результате они не смогут перемещаться за пределами дерева каталогов /LD, так как для их FTP-подключения остальная часть файловой системы просто не будет существовать. Пользователь по-прежнему может иметь доступ к любым подкаталогам -каталога /LD; если это нежелательно, используйте разрешения файловой системы, чтобы заблокировать это.


Сначала определите пользователя (с )и/или группу (с ), которым требуется доступ к подкаталогам -каталога /LD. В идеале все пользователи подкаталогов -каталога /LD должны принадлежать к одной группе (, назовем ее LDsub), а test_userне должны входить в эту группу. test_userдолжен быть один в другой группе (назовем ее LDftpнапример ). Члены группы LDsubмогут быть или не быть членами группы LDftp, в зависимости от того, нужен ли им доступ на запись к самому каталогу /LD.

Если у вас нет команд usermodили groupmod, вы можете изменить членство в группах с помощью vigrили просто отредактировав /etc/group.

Теперь вы можете использовать команду chown, чтобы установить владельца каталога /LDи chmod, чтобы установить разрешения:

chown root:LDftp /LD
chmod 775 /LD        #this will be drwxrwxr-x 

Теперь test_userбудет иметь доступ на запись в каталог /LDчерез членство в группе, но они не будут владельцем каталога, поэтому они не могут изменять его разрешения. Разрешения «все r -x» позволят членам группы LDsubпроходить через этот каталог для доступа к его подкаталогам -в соответствии с их разрешениями.

Подкаталоги /LD могут принадлежать кому угодно, если только это не test_user. Группа этих подкаталогов -должна быть установлена ​​​​на LDsubи разрешения следующим образом:

chgrp LDsub /LD/subdirectory  # or chown <not_test_user>:LDsub /LD/subdirectory
chmod 770 /LD/subdirectory   # this will be drwxrwx---

Имейте в виду, что если test_userимеет доступ на запись к /LD, это обязательно означает, что они могут переименовывать любые подкаталоги -, создавать новые и удалять любые пустые подкаталоги -.

Если ваши требования более сложны, может быть проще убедиться, что поддержка ACL включена в файловой системе, и использовать ACL для указания пользователя (s )и/или группы (s )разрешен доступ к подкаталогам -каталога /LD. См. справочные страницы команд getfaclи setfaclи/или эту веб-страницу для получения подробной информации.


В качестве альтернативы вы можете рассмотреть возможность перемещения подкаталогов -каталога /LDв другое место и использования символических ссылок, чтобы пути к каталогам работали как раньше.

mv /LD/subdirectory /elsewhere/subdirectory
ln -s /elsewhere/subdirectory /LD/subdirectory

Для любого пользователя, кроме test_userв сеансе FTP, эти символические ссылки будут использоваться как обычно. Но поскольку FTP-сессия test_userбудет привязана к /LD, для них эти символические ссылки будут отображаться как непригодные неработающие ссылки. Если test_userимеет доступ на запись к /LD, они могут удалить «битые» ссылки.

0
28.01.2020, 04:27

Теги

Похожие вопросы