Используя команду useradd с опцией -d, вы можете добавить определенного пользователя (например: ftpuser), а также его домашний каталог (/homedir), как показано ниже:
useradd ftpuser -d /homedir
passwd ftpuser
Вам будет предложено ввести новый пароль:
Changing password for user <username>
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Отредактируйте оболочку для этого пользователя на /sbin/nologin в /etc/passwd:
vi /etc/passwd
ftpuser:x:506:508::/homedir:/sbin/nologin
Включение chroot_list:
vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
(по умолчанию)
chroot_list_file=/etc/vsftpd.chroot_list
Затем необходимо добавить пользователя ftpuser
в файл /etc/vsftpd.chroot_list
vi /etc/vsftpd.chroot_list
ftpuser
Перезапуск vsftpd:
/etc/init.d/vsftpd restart
Если я понимаю ваши требования, это должно работать:
awk '{ for (i=9; i<=NF; i++) {
if ($i ~ "string" && $1 != "wineserv" && $5 == "REG" && $NF ~ "\.pdf$") {
$1=$2=$3=$4=$5=$6=$7=$8=""
print
}
}}'
Перебрать все поля с 9 до конца, если одно из них содержитstring
:
wineserv
REG
.pdf
(Я думаю, можно с уверенностью предположить, что даже если в файле есть пробелы, расширение должно быть в последней части)Если все условия соблюдены, сотрите первые 8 полей и распечатайте то, что осталось
Использование регулярных выражений:
$... | perl -nlE '/.*? (\d+).*?(\/.*)/ and print("$1 ; $2")'
1788 ; /home/t/some/path1/white space/string1 + string2 string3.pdf
3737 ; /home/t/some/path2/white space/string5 string3.pdf