Как я могу извлечь только столбец pid и только столбец пути в выводе lsof?

Используя команду 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
    
1
16.02.2019, 03:51
2 ответа

Если я понимаю ваши требования, это должно работать:

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:

    • Проверить, что поле 1 не равноwineserv
    • поле 5 действительно равноREG
    • Последнее поле содержит.pdf(Я думаю, можно с уверенностью предположить, что даже если в файле есть пробелы, расширение должно быть в последней части)
  • Если все условия соблюдены, сотрите первые 8 полей и распечатайте то, что осталось

2
27.01.2020, 23:15

Использование регулярных выражений:

$... | 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
3
27.01.2020, 23:15

Теги

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