Проверочные операторы не имеют возможности выполнять оценку условий так же, как если/тогда может. Регистр/переключатель действительно может соответствовать только узорам и выполнять определенные случаи на основе соответствия.
Я бы начал с использования [..]
вот так.
[ -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 Создает каталоги по мере необходимости.
Во-первых, вам нужно сделать /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
, они могут удалить «битые» ссылки.