суббота, 29 июля 2017 г.

Как удалить каталог Linux

В операционной системе Linux можно выполнить большинство действий через терминал. Удаление каталога Linux - это достаточно простое действие, которое можно выполнить просто открыв файловый менеджер.
Однако в терминале это делается немного быстрее и вы получаете полный контроль над ситуацией. Например, можете выбрать только пустые папки или удалить несколько папок с одним названием. В этой статье мы рассмотрим как удалить каталог Linux через терминал.

Как удалить каталог Linux

Существует несколько команд, которые вы можете использовать для удаления каталога Linux. Рассмотрим их все более подробно. Самый очевидный вариант - это утилита rmdir. Но с помощью нее можно удалять только пустые папки:
$ rmdir моя_папка
Другая команда, которую можно применить - это rm. Она предназначена для удаления файлов Linux, но может использоваться и для папок если ей передать опцию рекурсивного удаления -r:
$ rm -R моя_папка
Такая команда уже позволяет удалить непустой каталог Linux. Но, можно по-другому, например, если вы хотите вывести информацию о файлах, которые удаляются:
$ rm -Rfv моя_папка
Команда -R включает рекурсивное удаление всех подпапок и файлов в них, -f - разрешает не удалять файлы без запроса, а -v показывает имена удаляемых файлов. В этих примерах я предполагаю что папка которую нужно удалить находится в текущей рабочей папке, например, домашней. Но это необязательно, вы можете указать полный путь к ней начиная от корня файловой системы:
$ rm -Rfv /var/www/public_html
Читайте подробнее про пути в файловой системе в статье путь к файлу Linux.  Теперь вы знаете как удалить непустой каталог в консоли linux, далее усложним задачу, будем удалять папки, которые содержат определенные слова в своем имени:
$ find . -type d -name "моя_папка" -exec rm -rf {} \;
Подробнее про команду find смотрите в отдельной статье. Если кратко, то -type d указывает, что мы ищем только папки, а параметром -name задаем имя нужных папок. Затем с помощью параметра -exec мы выполняем команду удаления. Таким же образом можно удалить только пустые папки, например, в домашней папке:
$ find ~/ -empty -type d -delete
Как видите, в find необязательно выполнять отдельную команду, утилита тоже умеет удалять. Вместо домашней папки, можно указать любой нужный вам путь:
$ find /var/www/public_html/ -empty -type d -delete
Перед удалением вы можете подсчитать количество пустых папок:
$ find /var/www/public_html/ -empty -type d | wc -l

Другой способ удалить папку linux с помощью find - использовать в дополнение утилиту xargs. Она позволяет подставить аргументы в нужное место. Например:
$ find ~/ -type f -empty -print0 | xargs -0 -I {} /bin/rm "{}"
Опция -print0 выводит полный путь к найденному файлу в стандартный вывод, а затем мы передаем его команде xargs. Опция -0 указывает, что нужно считать символом завершения строки \0, а -I - что нужно использовать команду из стандартного ввода.
Если вы хотите полностью удалить папку Linux, так, чтобы ее невозможно было восстановить, то можно использовать утилиту wipe. Она не поставляется по умолчанию, но вы можете ее достаточно просто установить:
$ sudo apt install wipe
Теперь для удаления каталога Linux используйте такую команду:
$ wipe -rfi ~/моя_папка/*
Опция -r указывает, что нужно удалять рекурсивно все под папки, -f - включает автоматическое удаление, без запроса пользователя, а -i показывает прогресс удаления. Так вы можете удалить все файлы в папке linux без возможности их восстановления поскольку все место на диске где они были будет несколько раз затерто.

суббота, 22 июля 2017 г.

Ошибка bash permission denied

Многие новички пытаются выполнить запись определенных значений в системные файлы с помощью операторов перенаправления ввода и вывода и получают ошибку bash permission denied. Эта ошибка выводится, даже если вы использовали sudo.
Казалось бы, sudo есть, значит права суперпользователя получены и все должно работать но тут все не так просто. В этой статье мы рассмотрим почему возникает ошибка bash permission denied и как ее обойти.

Ошибка bash permission denied

Допустим, вы выполняете команду:
$ sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
А в результате вместо записи строчки в /etc/resolv.conf получаете ошибку:
bash: /etc/resolv.conf permission denied
В русской локализации это будет отказано в доступе bash linux. Так происходит потому что вы запускаете с правами суперпользователя утилиту echo и она честно выводит вашу строку в стандартный вывод bash с правами суперпользователя. Но bash запущен от обычного пользователя, и когда интерпретатор bash пытается записать полученную строчку в системный файл, естественно, что вы получите ошибку.
Но существует несколько способов обойти это ограничение, вы можете, например, использовать команду tee, которая записывает стандартный вывод в файл или запустить саму оболочку от имени суперпользователя. Рассмотрим сначала вариант с tee:
echo 'текст' | sudo tee -a /путь/к/файлу
$ echo 'nameserver 8.8.8.8' | sudo tee -a /etc/resolv.conf
Это очень простое решение, но, кроме того, вы можете запустить оболочку bash с правами суперпользователя, чтобы дать ей доступ на запись:
sudo sh -c 'echo текст >> /путь/к/файлу'
sudo bash -c 'echo текст >> /путь/к/файлу'
Например:
$ sudo bash -c 'echo nameserver 8.8.8.8 >> /etc/resolv.conf
 Еще одно решение, призванное, упростить эту команду, добавить такой код в ~/.bashrc:
sudoe() {
[[ "$#" -ne 2 ]] && echo "Usage: sudoe <text> <file>" && return 1
echo "$1" | sudo tee --append "$2" > /dev/null
}
Дальше для вывода строки в файл выполняйте:
sudoe 'текст' >> /путь/к/файлу
Например:
$ sudoe "nameserver 8.8.8.8" > /etc/resolv.conf
Теперь все будет работать, как и ожидалось, и ошибка bash отказано в доступе не появится. Еще можно поменять права на файл, а потом уже выводить в него строку. Но это очень неправильное решение. И даже не потому, что это небезопасно, а больше потому что там намного больше действий.

среда, 5 июля 2017 г.

10 полезных возможностей nmap

Nmap (Network Mapper) — свободная утилита с открытым исходным кодом, предназначенная для сканирования сетей и аудита сетевой безопасности. Nmap использует множество различных методов сканирования (UDP, TCP, TCP SYN, FTP, ICMP и т.д.), а также поддерживает большой набор дополнительных возможностей.
Ниже описаны некоторые полезные возможности этой замечательной утилиты.
Для выполнения большинства операций nmap требуются полномочия пользователя root. При запуске nmap от имени обычного пользователя значительная часть функ­ций будет не доступна.

1. Получение информации об удаленном хосте и определение операционной системы

Nmap используются в следующем виде:
$ sudo nmap -sS -P0 -sV -O <target>
где:
  • < target > — IP, хост или подсеть
  • -sS — TCP SYN сканирование (полуоткрытое)
  • -P0 — отключение ICMP сканирования.
  • -sV — определение закрытых и фильтруемых портов
  • -O — определение версии операционной системы
Еще опции:
  • -A — включает определение «отпечатка» и версии операционной системы
  • -v|-vv — уровень вывода диагностических сообщений
Используя дополнительные опции, команда выглядит следующим образом:
$ sudo nmap -sS -P0 -A -v < target >

2. Определение списка серверов с открытым портом

Nmap используются в следующем виде:
$ sudo nmap -sT -p 22 -oG - 192.168.1.* | grep open
Номер порта указывается после опции «-p». В данном примере, выполняется поиск
машин, для которых возможен вход по ssh (если, конечно, не изменен порт по
умолчанию для ssh).

3. Поиск активных IP адресов в сети

Nmap используются в следующем виде:
$ sudo nmap -sP 192.168.0.*
Чтобы опросить конкретную подсеть, можно использовать следующие параметры:
$ sudo nmap -sP 192.168.0.0/24

4. Опросить (пропинговать) диапазон адресов

Nmap используются в следующем виде:
$ sudo nmap -sP 192.168.1.100-254
Nmap понимает много натаций IP адресов.

5. Поиск неиспользуемых IP адресов в подсети

Nmap используются в следующем виде:
$ sudo nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″ /proc/net/arp

6. Поиск вируса Conficker в подсети

Nmap используются в следующем виде:
$ sudo nmap -PN -T4 -p139,445 -n -v \
    -script=smb-check-vulns \
    -script-args \
    safe=1 192.168.0.1-254
Чтобы скорректировать список IP адресов, заменить «192.168.0.1-256» на свой вариант.

7. Поиск в сети мошеннических точек доступа (AP)

Nmap используются в следующем виде:
$ sudo nmap -A -p1-85,113,443,8080-8100 \
       -T4 -min-hostgroup 50 \
       -max-rtt-timeout 2000 \
       -initial-rtt-timeout 300 \
       -max-retries 3 \
       -host-timeout 20m \
       -max-scan-delay 1000 \
       -oA wapscan 10.0.0.0/8

8. Декорирование истинного IP адреса при сканировании сети

Nmap используются в следующем виде:
$ sudo nmap -sS 192.168.0.10 -D 192.168.0.2
В данном примере выполняется поиск открытых портов на машине 192.168.0.10, в качестве адреса, откуда ведется сканирование указывается адрес 192.168.0.2. Таким образом, в логах машины 192.168.0.10 будет отображен не истинный IP адрес, с которой ведется сканирование, а указанный — 192.168.0.2.

9. Список обратных DNS записей для подсети

Nmap используются в следующем виде:
$ sudo nmap -R -sL 209.85.229.99/27 | \
    awk '{if($3=="not")print"(" $2 ") no PTR";else print $3 " is "$2}' | \
    grep ‘(‘
В этом примере, nmap выполняет поиск обратных DNS записей для подсети. Результатом поиска будет список IP адресов с соответствующими PTR записями для подсети. Чтобы выполнить запрос через конкретный DNS сервер, необходимо добавить «-dns-servers x.x.x.x» после опции «-sL».

10. Подсчет Linux/Windows машин в сети

Nmap используются в следующем виде:
$ sudo nmap -F -O 192.168.0.1-255 | \
    grep "Running: " > /tmp/os; \
    echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; \
    echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"