Я поместил Ваш отрывок в файл, названный alois:
sed -r 's/^([^ ,]+)[^0-9]+([0-9]+).*$/\1 \2/' alois
Aloise-Young 1993
Banerjee 2002
Bennett 1989
Быстрое объяснение: мы используем поиск sed и заменяем функцию s/pattern/replacement/
^ ([^], +) средства: с начала строки берут что-либо, что это не пространство или a, и помните их. (это - то, что круглые скобки там для).
[^0-9] + ищут что-либо, что это не числовое значение, но проигнорируйте его.
([0-9] +), берут и помнят любые последовательные цифры
.* $ соответствуют всему остальному в конец строки.
\1 \2 замены все подобранное (целая строка) с помнившими значениями сверху.
Если бы вы хотите всю установку весь ограничивающий материал, вы упоминаете, что я предложил бы использовать ProFTPd.
Используя sftp_module
вы можете только позволить безопасную сессию. См. http://www.proftpd.org/docs/contrib/mod_sftp.html для получения дополнительной информации о функциональность sftp
. Около конца страницы перечисляется конфигурация в качестве примера.
Используя директива DefaultRoot
можно изолировать предоставленного пользователя в его собственный каталог
Используя <ПРЕДЕЛ>
структура, вы можете ограничить FTP, управляет, чтобы вы хотели позволить, т.е. ЧИТАЕТ
, таким образом, пользователь не может получить файлы. См. http://www.proftpd.org/docs/howto/Limit.html для деталей.
, Когда вы устанавливаете конфигурация sftp
в ProFTPd, вы, вероятно, хотите иметь его для слушания на другом порте, чем ssh
, например, 2222. Настроить свой брандмауэр и/или маршрутизатор для разрешения трафика, происходящего от незнакомец
к порту, который вы выбираете для ProFTPd. Другая возможность состоит в том, чтобы выполнить ProFTPd модуль sftp
на порте 22 и реконфигурировать ssh
для слушания на другом порте.
демонстрационная конфигурация А может быть похожей:
<IfModule mod_sftp.c>
<VirtualHost a.b.c.d>
# The SFTP configuration
Port 2222
SFTPEngine on
SFTPLog /var/log/proftpd_sftp.log
# Configure the RSA, DSA, and ECDSA host keys, using the same host key
# files that OpenSSH uses.
SFTPHostKey /etc/ssh_host_rsa_key
SFTPHostKey /etc/ssh_host_dsa_key
SFTPHostKey /etc/ssh_host_ecdsa_key
<Limit READ>
DenyAll
</Limit>
DefaultRoot ~ users,!staff
</VirtualHost>
</IfModule>
Примечание : Это не полная конфигурация ProFTPd, необходимо рассмотреть и изменить конфигурацию значения по умолчанию ProFTPd, чтобы иметь его, соответствует потребности.
существует другая возможность просто использовать OpenSSH для этого:
Создают пользователя незнакомец
и устанавливают пароль для пользователя:
useradd -m -d /home/stranger -s /bin/true stranger
passwd stranger
Редактирование файл /etc/ssh/sshd_config
и проверка, если следующая строка существует, добавьте его, если это не делает существует:
Subsystem sftp internal-sftp
Следующий добавляют блок Соответствия у основания /etc/ssh/sshd_config
:
Match User stranger
ChrootDirectory %h
ForceCommand internal-sftp -P read,remove
AllowTcpForwarding no
Примечание : пользователь сможет перезаписать существующий файл.
Перезапуск демон sshd
.
Набор владелец каталога /home/stranger
к корень
:
chown root:stranger /home/stranger
Примечание : корень
должен быть владельцем и может быть единственным, чтобы иметь разрешение записи, если ChrootDirectory используется. Альтернатива могла бы быть должна добавить -d %u
к ForceCommand, внутренний-sftp
строка и установить ChrootDirectory / домой
, но пользователь будет мочь к CD /
и видеть другие имена пользователей с , ls
Создает каталог загрузки для пользователя:
mkdir /home/stranger/upload; chown stranger:stranger /home/stranger/upload
Теперь можно войти в систему как пользователь незнакомец
использование:
sftp stranger@somehost
при загрузке файла, он должен быть в порядке:
sftp> put myfile
Uploading myfile to /upload/myfile
myfile 100% 17 0.0KB/s 00:00
sftp> get myfile
Fetching /upload/myfile to myfile
/upload/myfile 0% 0 0.0KB/s --:-- ETA
Couldn't read from remote file "/upload/myfile" : Permission denied
Лично, если цель состоит в том, чтобы просто разрешить копирование файлов на сервер, я бы пошел по маршруту sftp вместо scp. scp предполагает доступ по ssh, и если нет необходимости предоставлять доступ к оболочке, лучше не пытаться заблокировать его только для передачи файлов.
Итак, sftp. Некоторые рекомендации. Отключите обычный FTP и вместо этого запустите что-то, что позволяет вам легко контролировать доступ, который вы также можете запустить на уникальном порту с помощью sftp. Я только что закончил настраивать proftpd, например, на сервере, и он неплохо справляется со своей задачей. Вы можете заблокировать доступ, чтобы пользователи попадали в свой домашний каталог и не могли перемещаться по всему вашему дереву. Вы также можете определить, какие команды вы разрешаете, например, полностью отключить cd и т. Д. Вы также можете контролировать пользователей FTP, кроме учетных записей * nix, поэтому вы можете создать эту учетную запись пользователя только в контексте FTP и фактически не иметь аккаунт для пользователя.
Дополнительно (для подхода с поясом и подтяжками) на уровне ОС вы можете изменить права доступа к домашнему каталогу пользователей (к которому будет подключаться их сеанс SFTP), чтобы у них была возможность только писать, а не читать (но опять же , вы можете ограничить команды с помощью демона ftp, такого как proftpd, чтобы они тоже не могли получить).
Раньше я пользовался другими ftp-серверами (хотя их имена сейчас ускользают от меня), и все они, кажется, предлагают больше контроля, чем демоны ftp по умолчанию, поэтому я уверен, что другие предоставляют аналогичные функции (я упоминаю proftpd только как Я просто работал над этим, не потому, что считал, что это лучший вариант).