Показ дописів із міткою переклад. Показати всі дописи
Показ дописів із міткою переклад. Показати всі дописи

четвер, 8 листопада 2007 р.

Покращення інформативності рядка стану для VIM.

Автор: Кім Шульц (Kim Shultz)
Переклад: Андрій Боровий
Оригінал статті

В нижньому кутку редактора Vim знаходяться дві речі: буфер командного рядка (де вводяться команди) та рядок стану. У первинній конфігурації рядок стану є простим та неінформативним, однак це можна змінити за допомогою простих методів.

Цей розділ є витягом з нещодавно опублікованої книжки Hacking Vim.
Праворуч, первинний рядок стану відображає номер поточного рядка та колонки, а ліворуч - назву відкритого файлу, якщо такий є. Як тільки виконується команда Vim, замість рядка стану відображається буфер команд. Якщо ж команда виводить повідомлення, вони з'являються в правому кутку рядка стану.
Такий рядок стану цілком підходить для простого та швидкого редагування файлів. Однак, якщо Ви використовуєте Vim щодня і редагуєте різні формати файлів - значно зручніше використовувати більш інформативний рядок стану.
Команда, яка визначає вигляд рядка стану викликається наступним чином:

:set statusline format
де format
рядок у printf-подібному форматі, який описує вигляд статусу рядка. Зазирнувши у довідкову систему Vim, за допомогою :help 'statusline', Ви помітите, що рядок стану може показувати різну інформацію. Деякі параметри можуть бути більш корисними для щоденного використання, ніж інші.
Мій рядок стану містить наступну інформацію:
  1. ім'я файла, який я наразі редагую;
  2. формат цього файлу (DOS або UNIX);
  3. тип файлу, визначений Vim для цього файлу;
  4. символьний та шістнадцятковий код поточного символу;
  5. місце знаходження в документі у вигляді номера рядка та позиції в цьому рядку;
  6. довжина файлу (кількість рядків).

За допомогою наступної команди Ви отримаєте рядок стану із зазначеними вище параметрами:

:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\
[TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\
[POS=%04l,%04v][%p%%]\ [LEN=%L]

Я додав квадратні дужки для кожного параметру, щоб легше розрізняти їх між собою. Ці дужки є естетичним додатком, який Ви можете безпечно видалити.
Однак, навіть після введення цієї команди Ви не побачите жодних змін, рядок стану все ще буде мати старий вигляд, як при первинному встановленні. Це пояснюється тим, що Vim первинно не відображає рядок стану. Натомість він показує буфер команди з невеликою кількістю інформації. Для того, щоб Vim відобразив справжній рядок стану, слід змінити параметри у vimrc. Слід ввести команду, яка накаже програмі, виводити рядок стану як ще один останній рядок у вікні редактора.

:set laststatus=2

Після цього Ви побачите, що буфер команди залишився на своєму ж місці. Правда тепер з'явилося місце для рядка статусу, і Ви завжди будете мати на видному місці дані про поточний файл. Звісно, рядок стану займає певне місце області редагування. При потребі Ви можете видалити його до кінця сесії редагування, виконавши в середовищі Vim команду:

:set laststatus=0

Перемикання меню та рядка інструментів


Якщо Ви працюєте з Vim у консольному режимі, Вам не звикати до відсутності меню та рядка інструментів у верхній частині редактора. Зазвичай, Gvim, первинно використовуються обидва елементи.
Багато користувачів переконані, що наявність додаткового місця для редагування є значно важливішим, ніж наявність меню та рядка інструментів. Однак, деякі скрипти з меню додають більшої функціональності, а тому корисно мати під руками меню. Вирішити цю проблему можна за допомогою тимчасового вмикання/вимикання меню та рядка інструментів.
Наступний код прив'язує комбінацію Ctrl+F2 режиму увімкнення меню та рядка інструментів у Gvim. Щоб увімкнути цю можливість, додайте до файлу vimrc наступний код:

map   :if &guioptions =~# 'T'
\set guioptions-=T
\set guioptions-=m
\else
\set guioptions+=T
\set guioptions+=m
\endif

Тепер, якщо Вам не потрібне меню та рядок інструментів, натиснувши Ctrl+F2, Ви звільните місце для тексту. Для того, щоб приховати лише меню або лише рядок інструментів, слід трішки відредагувати файл налаштувань vimrc. Щоб ховати лише меню, використайте:

:set guioptions-=m 

Щоб сховати рядок інструментів:

:set guioptions-=T 

Інші частини графічного інтерфейсу можна змінювати за допомогою команд setguioptions. Отримати перелік того, що Ви можете змінити, можна за допомогою команди :help 'guioptions'.

пʼятниця, 5 жовтня 2007 р.

Безпечний віддалений доступ до стільниці

Автор: Федеріко Керекі (Federico Kereki)
Переклад: Андрій Боровий
Оригінал статті

Безпечний доступ до домашнього сервера може бути проблемою, особливо, якщо він не має статичної IP адреси, однак, ви можете розв'язати цю задачу за допомогою Linux, DynDNS, PAM та NX Free.

Кілька місяців тому мені потрібно було поїхати з дому, який знаходиться у Монтевідео (Уругвай) до Нью-Йорка. Оскільки планувалося перебувати за кордоном кілька тижнів, мені потрібно було переконатися, що я можу мати безпечний доступ до домашнього сервера. Незважаючи на стабільність Лінукса, я припускав, що у моєї родини можуть виникнути певні проблеми, а я не міг покладатися на передачу інструкцій за допомогою телефону або повідомлень.

Для того, щоб все добре працювало, було потрібно вирішити три проблеми. По-перше я використовую ADSL-з'єднання, не маючи статичної IP адреси, тобто моя адреса може змінюватися, а отже слід забезпечити доступ за умов, що я не знатиму поточної адреси. По-друге, я, звісно, можу використовувати SSH, однак багато хто намагається атакувати машини, які мають відкритий SSH-порт, а я не хочу робити свій комп'ютер мішенню. Зрештою, я чув про NX Free Edition, хотів спробувати його в роботі, однак я повинен бути певним, що роблю це безпечним чином.

Доступ до комп'ютера, який не має статичної адреси

Відсутність статичної адреси є проблемою, яку можна вирішити за допомогою DynDNS від Dynamic Network Services. Ця безкоштовна послуга дозволяє будь-кому мати власний піддомен, який асоціюється зі змінною IP-адресою. Все що потрібно,— це лише встановити невеликий клієнт поновлення, який буде зберігати відповідність імені комп'ютера його поточній IP-адресі, повідомляючи центральний сервер щоразу при зміні IP-адреси комп'ютера. Якщо ж ви використовуєте один із сучасних маршрутизаторів, його можна налаштувати на відсилання таких повідомлень, не використовуючи клієнт.

Перейдіть до сторінки DynDNS, отримайте безкоштовний рахунок та оберіть ім'я домену (я обрав remotekereki.homelinux.com). Наприкінці скористайтеся поданими інструкціями, щоб отримати клієнтську програму DD, яка є простим скриптом на мові Perl. Встановлення DDclient є дуже простим: отримайте код, розпакуйте його до /usr/bin (для цього потрібно мати права користувача root) та відредагуйте /etc/ddclient/ddclient.conf, вказавши деталі сайту:

pid=/var/run/ddclient.pid
daemon=600
protocol=dyndns2
use=web, web=support.easydns.com/utils/get_ip.php
server=members.dyndns.org
login=вашеІм'яКористувача
password=вашПароль
вашеІм'яДомену

Використовуючи рахунок root, я виконав chkconfig ddclient on після /etc/init.d/ddclient start та був готовий вирушати. Для того, щоб перевірити чи все справді працює, я виконав ping remotekereki.homelinux.com та отримав відповідь, яка означала, що моя адреса доступна з будь-якої точки світу. Першу проблему було вирішено!

Безпечний SSH доступ

Змінний модуль автентифікації (pluggable authentication module, PAM) є ключем до більшої гнучкості в питаннях безпеки. Зазвичай для користувача існує лише один шлях проходження автентифікації – ввести пароль та перевірити, чи він відповідає тому, який зазначено у /etc/passwd. Однак сьогодні використовується багато інших методів, які включають заміну файлу /etc/passwd смарт-картками (картки, які мають вбудовані логіку та мікропроцесор прим. перекл.) та іншими пристроями. Замість того, щоб переписувати усі програми для підтримки цих методів, достатньо встановити PAM — і усі перетворення відбуватимуться прозоро.

Я хотів встановити деякі обмеження на доступ, тому додав наступний рядок до файлу /etc/pam.d/sshd:

#%PAM-1.0
auth include common-auth
auth required pam_nologin.so
account include common-account
password include common-password
session include common-session
account required pam_access.so

Модуль pam_access містить додаткові методи перевірки безпеки, які описано у файлі /etc/security/access.conf. Я відредагував його, вказавши, хто має доступ до мого комп'ютера:

+ : ALL : 192.168.
+ : remote1776 : ALL
+ : nx : ALL
- : ALL : ALL

Перший рядок означає, що будь-хто (“ALL”) може отримати доступ до мого комп'ютера з внутрішньої домашньої мережі. Другий рядок дозволяє користувачеві remote1776 отримати доступ до комп'ютера з будь-якої точки планети, а третя дає такі ж самі права користувачеві nx, який використовується NX Free. Останній рядок містить запис, який забороняє доступ до комп'ютера усім, кого не перелічено вище.

Користувач remote1776 є рахунком з мінімальними правами, який було створено лише для того, щоб отримати доступ до мого комп'ютера та запустити команду su і працювати або під своїм рахунком, або під рахунком root. Якщо ж хтось і вгадає пароль цього користувача, йому буде потрібно вгадати паролі інших, більш важливих користувачів; в даному випадку це додатковий бар'єр, який потрібно пройти зловмиснику до того, як він зможе завдати серйозної шкоди.

Тепер потрібно налаштувати SSH, який буде використовувати всі ці налаштування. Я відредагував /etc/ssh/sshd_config, включивши наступне:

Port 16949
Protocol 2
PermitRootLogin no
MaxAuthTries 3
UsePAM yes

Завважте, що зазначені вище рядки це все, що є у цьому фалі; розглянемо їх. Перший рядок змінює стандартний, загальновідомий порт (22) на інший для того, щоб потенційному зловмиснику було важче його вгадати. Переконайтеся, що вказаний вами порт незайнятий. Також, я відкрив цей порт у своєму фаєрволі.

Рядок protocol 2 дозволяє уникнути використання простіших протоколів. Третій рядок пояснює себе сам: я не хочу, щоб хтось міг увійти у систему, використовуючи рахунок root; ускладнимо кракерам життя. Дозволяємо лише 3 спроби автентифікації перед появою перерви, зупиняємо атаки грубої сили (brute-force). І нарешті, останній рядок примушує SSH використовувати налаштування PAM.

Після цього всього я перезапустив ssh за допомогою /etc/init.d/sshd restart і тепер для доступу до свого комп'ютера міг використовувати ssh remote1776@remotekereki.homelinux.com:9622; отаку довгу команду!

Використання NX Free

Після зробленого, змусити працювати NX Free із вказаними обмеженнями було дуже легко. NX Freeмає власні методи безпеки, однак я додав кілька покращень. По-перше, я додав користувача nx у перелік користувачів, які мають доступ. По-друге, коли я вказував з'єднання, я змінив стандартний порт (22) на (16949). Це все, що було потрібно зробити. Звісно, ви маєте перевагу встановленої інфраструктури, однак чи не чудово зробити трішки більше роботи і отримати кращу систему безпеки?

Вивчення наведених вище методів — це шмат роботи, але змусити це все працювати разом було досить легко та дало потрібний ефект. Я використовував домашній ПК з Нью-Йорку без жодних перешкод, вирішивши кілька проблем, які мали мої родичі, працюючи з комп'ютером “відкрито”, без жодних спроб вторгнень.

Федеріко Керекі — уругвайський системний інженер з понад 20-річним досвідом розробки систем, надання консультацій та викладання в університетах.