Архив рубрики: Публикации

Команда find в Linux

Команда find в Linux




Очень важно уметь вовремя и очень быстро найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале Linux. Он намного эффективнее и гибче обычного поиска, вы можете искать файлы не только по имени, но и по дате добавления, содержимому, а также использовать для поиска регулярные выражения. Кроме того, с найденными файлами можно сразу же выполнять необходимые действия.




В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.




Основная информация о FIND




Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.




Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.




Команда find имеет такой синтаксис:




find [папка] [параметры] критерий шаблон [действие]




Папка — каталог в котором будем искать




Параметры — дополнительные параметры, например, глубина поиска, и т д




Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.




Шаблон — непосредственно значение по которому будем отбирать файлы.




Основные параметры команды find




Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.




  • -P никогда не открывать символические ссылки
  • -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • -depth — искать сначала в текущем каталоге, а потом в подкаталогах
  • -mount искать файлы только в этой файловой системе.
  • -version — показать версию утилиты find
  • -print — выводить полные имена файлов
  • -type f — искать только файлы
  • -type d — поиск папки в Linux




Критерии




Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.




  • -name — поиск файлов по имени
  • -perm — поиск файлов в Linux по режиму доступа
  • -user — поиск файлов по владельцу
  • -group — поиск по группе
  • -mtime — поиск по времени модификации файла
  • -atime — поиск файлов по дате последнего чтения
  • -nogroup — поиск файлов, не принадлежащих ни одной группе
  • -nouser — поиск файлов без владельцев
  • -newer — найти файлы новее чем указанный
  • -size — поиск файлов в Linux по их размеру




Примеры использования




А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.




1. Поиск всех файлов




Показать все файлы в текущей директории:




find

find .

find . -print




2. Поиск файлов в определенной папке




Показать все файлы в указанной директории:




find ./test




Искать файлы по имени в текущей папке:




find . -name "*.jpg"




Не учитывать регистр при поиске по имени:




find . -iname "test*"




3. Ограничение глубины поиска




Поиска файлов по имени в Linux только в этой папке:




find . -maxdepth 1 -name "*.php"




4. Инвертирование шаблона




Найти файлы, которые не соответствуют шаблону:




find . -not -name "test*"




5. Несколько критериев




Поиск командой find в Linux по нескольким критериям, с оператором исключения:




 find . -name "test" -not -name "*.php"




Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:




find -name "*.html" -o -name "*.php"




6. Несколько каталогов




Искать в двух каталогах одновременно:




find ./test ./test2 -type f -name "*.c"




7. Поиск скрытых файлов




Найти скрытые файлы:




find ~ -type f -name ".*"




8. Поиск по разрешениям




Найти файлы с определенной маской прав, например, 0664:




find . type f -perm 0664




Найти файлы с установленным флагом suid/guid:




find / -perm 2644




Или так:




find / -maxdepth 2 -perm /u=s




Поиск файлов только для чтения:




find /etc -maxdepth 1 -perm /u=r




Найти только исполняемые файлы:




find /bin -maxdepth 2 -perm /a=x




9. Поиск файлов по группах и пользователях




Найти все файлы, принадлежащие пользователю:




find . -user sergiy




Поиск файлов в Linux принадлежащих группе:




find /var/www -group developer




10. Поиск по дате модификации




Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:




find / -mtime 50




Поиск файлов в Linux открытых N дней назад:




find / -atime 50




Найти все файлы, модифицированные между 50 и 100 дней назад:




find / -mtime +50 –mtime -100




Найти файлы измененные в течении часа:




find . -cmin 60




11. Поиск файлов по размеру




Найти все файлы размером 50 мегабайт:




find / -size 50M




От пятидесяти до ста мегабайт:




find / -size +50M -size -100M




Найти самые маленькие файлы:




find . -type f -exec ls -s {} ; | sort -n -r | head -5




Самые большие:




find . -type f -exec ls -s {} ; | sort -n | head -5




12. Поиск пустых файлов и папок




Поиск файлов




find /tmp -type f -empty




Поиск папок




find ~/ -type d -empty




13. Действия с найденными файлами




Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:




find . -exec ls -ld {} ;




Удалить все текстовые файлы в tmp




find /tmp -type f -name "*.txt" -exec rm -f {} ;




Удалить все файлы больше 100 мегабайт:




find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} ;




Вывод




Вот и подошла к концу эта небольшая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее важных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желательно знать всем системным администраторам. Если вам нужно искать именно по содержимому файлов, то лучше использовать команду grep.




Источник: https://losst.ru/komanda-find-v-linux



2021-03-07T11:12:48
Утилиты командной строки

Как установить и настроить WireGuard в Kali Linux

WireGuard — это простой и быстрый сервис VPN-туннелирования с открытым исходным кодом, созданный с использованием передовых криптографических технологий. Его очень легко настроить и использовать, и многие считают его лучше, чем OpenVPN или IPSec. WireGuard также является кроссплатформенным и поддерживает встроенные устройства. Читать →

Как использовать Django Channel

Django — это популярная среда Python, используемая для разработки веб-приложений с использованием спецификаций сервера WGSI (интерфейс шлюза веб-сервера) и ASGI (интерфейс шлюза асинхронного сервера). WGSI используется для разработки синхронных приложений Python, а AGSI используется для разработки асинхронных и синхронных веб-приложений. Канал — это полезная функция Django, которая используется для обработки WebSocket, протокола чата и т. д. Наряду с протоколом HTTP. Канал построен по спецификации сервера ASGI. Сеанс двусторонней интерактивной связи между браузером пользователя и сервером можно открыть с помощью WebSocket. Клиент инициирует соединение WebSocket, и сервер отвечает согласием или закрыть сообщение. Сообщения WebSocket проталкиваются в канал с помощью производителей и отправляются потребителям, которые прослушивают канал. В этой статье показано, как использовать каналы для обработки сообщений WebSocket.

 

Предпосылки

Прежде чем практиковать сценарий, показанный в этой статье, обязательно выполните следующие задачи.

  • Установите Django версии 3+ на Ubuntu 20+ (желательно)
  • Создайте проект Django
  • Запустите сервер Django, чтобы проверить, правильно ли он работает.

 

Настроить приложение Django

Выполните следующую команду, чтобы создать приложение Django с именем socketapp:

$ python3 manage.py startapp socketapp

 

Выполните следующую команду, чтобы установить канал:

$ pip install channels

 

Добавьте каналы и имя приложения в часть INSTALLED_APP файла settings.py :

INSTALLED_APPS = [

…..

'channels',

'socketapp'

]

 

Определите значение ASGI_APPLICATION в файле settings.py :

ASGI_APPLICATION = ‘channel_pro.asgi.application’

 

Создайте папку с именем templates внутри папки socketapp и установите расположение шаблона приложения в части TEMPLATES файла settings.py :

TEMPLATES = [

{

….

'DIRS': ['/home/fahmida/channel_pro/socketapp/templates'],

….

},

]

Следующий вывод появится в терминале после запуска сервера Django. Выходные данные показывают, что работает ASGI/Channels версии 3.0.3.

Создайте файл шаблона с именем index.html в определенном месте шаблона для отображения данных, отправленных WebSocket. Объект сокета, созданный с помощью JavaScript, будет считывать данные с помощью метода JSON.parse(), а затем передавать значение в содержимое тега <h1>, который содержит значение идентификатора, msg.

<!DOCTYPE html>

<html lang=»en»>

<head>

<meta charset=»UTF-8″>

<title>Учебники по каналу Django</title>

<script>

socket = new WebSocket(«ws://localhost:8000/msg/»);

socket.onmessage = function(e) {

var data = JSON.parse(e.data);

document.querySelector(‘#msg’).innerText = data.timeValue;

}

</script>

</head>

<body>

<center>

<h1 style=»color:blue» id =»msg»>{{ text }}</h1>

</center>

</body>

</html>

 

Измените views.py файл в socketapp со следующим содержанием. Index.html файл шаблона будет отображаться в браузере с текстом переменной, когда метод index() этого сценария вызывается из urls.py файла. Если сообщение не передается из сокета, в браузере будет отображаться текст «AndreyEx».

views.py

# Импортировать модуль рендеринга из Django

from django.shortcuts import render



# Создать функцию индекса для отображения HTML-файла в браузере

def index(request):

return render(request, "index.html", context={'text': 'AndreyEx'})

 

Измените urls.py файл в socketapp со следующим содержанием. В скрипте определены два пути: путь admin/ используется для открытия панели администрирования Django, а путь msg/ используется для чтения сообщения WebSocket.

urls.py

from django.contrib import admin

from django.urls import path



from socketapp import views



urlpatterns = [

path('admin/', admin.site.urls),

path('msg/', views.index)

]

Когда следующий URL-адрес выполняется без определения файлов-потребителей и файлов маршрутизации, протокол HTTP будет работать, и появится следующий вывод.

http://localhost:8000/msg/

 

Теперь создайте файл consumer.py внутри папки socketapp с помощью следующего скрипта. Метод connect() для ws_consumer будет использоваться для приема подключения к сокету, чтения текущего значения времени каждую секунду и отправки текущего времени в формате JSON через WebSocket, когда этот метод вызывается из файла маршрутизации.

consumers.py

# Импортировать модуль JSON

import json

# Импортировать WebsocketConsumer

from channels.generic.websocket import WebsocketConsumer

# Импортировать модуль datetime

from datetime import datetime

# Импортировать модуль sleep

from time import sleep





# Определить класс потребителя для отправки данных через

class ws_consumer(WebsocketConsumer):

def connect(self):

self.accept()

while(True):

now = datetime.now()

self.send(json.dumps({'timeValue': now.strftime("%H:%M:%S")}))

sleep(1)

 

Создайте routing.py внутри папки socketapp с помощью следующего скрипта. Путь msg/ определен в сценарии для вызова потребителя для отправки данных в сокет.

routing.py

from django.urls import path

from.consumers import ws_consumer



# Задайте путь для вызова потребителя

ws_urlpatterns = [

path('msg/', ws_consumer.as_asgi())

]

 

Измените файл asgi.py с помощью следующего сценария. Модули, необходимые для обработки запросов HTTP и WebSocket, импортируются в сценарий.

asgi.py

# Импортировать модуль os

import os

# Импортировать get_asgi_application для обработки протокола http

from django.core.asgi import get_asgi_application

# Import ProtocolTypeRouter и URLRouter для установки маршрутизации веб-сокетов

from channels.routing import ProtocolTypeRouter, URLRouter

# Import AuthMiddlewareStack для обработки веб-сокета

from channels.auth import  AuthMiddlewareStack

# Импортировать маршрутизацию веб-сокетов

from socketapp.routing import ws_urlpatterns



# Назначьте значение для DJANGO_SETTINGS_MODULE

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'channel_pro.settings')



# Определить переменные приложения для обработки HTTP и WebSocket

application = ProtocolTypeRouter({

'http': get_asgi_application(),

'websocket': AuthMiddlewareStack(URLRouter(ws_urlpatterns))



})

 

Теперь снова запустите следующий URL-адрес из браузера, чтобы прочитать данные из WebSocket.

http://localhost:8000/msg/

 

Если потребитель и маршрутизатор работают правильно, в браузере будут отображаться следующие цифровые часы. Здесь маршрутизатор отправил запрос WebSocket, используя путь msg/ к потребителю, который принял запрос и отправил данные в шаблон, чтобы показать цифровые часы в браузере, где второе значение текущего времени обновляется каждые второй.

 

Вывод

В этом руководстве показано, как реализовать приложение реального времени с использованием инфраструктуры и каналов Django, создав простые цифровые часы. Другие типы приложений реального времени также могут быть реализованы с использованием Django и каналов, таких как системы онлайн-чата. Скрипты, используемые в этой статье, работают только с Django версии 3+ и Channel версии 3+. Итак, если вы используете более раннюю версию Django или Channel, вам нужно будет обновить версию перед тестированием скрипта, представленного в этом руководстве.



2021-03-06T10:29:34
Python

Как настроить зеркало Kali Linux

Используя простые шаги, представленные в этой статье , вы можете настроить зеркало Kali Linux, на котором будут размещаться основные репозитории и образы Kali. Зеркало Kali Linux удобно.

 

Требования

Чтобы настроить полное зеркало Kali Linux, вам понадобится несколько ресурсов. К ним относятся:

  • Доступный веб-сервер с доступом HTTP и HTTP.
  • Большое дисковое пространство — на момент написания этой статьи, по словам специалистов по сопровождению Kali Linux, размер репозитория пакетов Kali Linux составлял 1,1 ТБ и быстро расширялся.
  • Установленные и запущенные в системе службы HTTP и RSYNC

 

Настройка пользователя для зеркала Kali Linux

Первым шагом является создание полной учетной записи, предназначенной только для зеркал Kali Linux. Используйте команду adduser:

$ adduser –disabled-password andreyex



Adding user `andreyex’...



Adding new group `andreyex’ (1001) ...



Adding new user `andreyex’ (1001) with group `andreyex’...



Creating home directory `/home/andreyex' ...



Copying files from `/etc/skel' ...



Changing the user information for andreyex



Enter the new value, or press ENTER for the default



Full Name []:



Room Number []:



Work Phone []:



Home Phone []:



Other []:



Is the information correct? [Y/n] y

Настроить зеркальные каталоги

Затем нам нужно настроить каталоги, содержащие зеркала, и назначить разрешения для созданного нами пользователя.

mkdir -p /srv/mirrors/kali{,-images}



chown andreyex:andreyex /srv/mirrors/kali{,-images}

 

Приведенные выше команды создадут каталоги kali и kali-images и установят право собственности на пользователя, которого мы создали ранее.

 

Настроить rsync

Следующий шаг включает запуск и настройку службы rsync. Экспортируйте каталоги с помощью команды:

sed -i -e "s/RSYNC_ENABLE=false/RSYNC_ENABLE=true/" /etc/default/rsync



# nano /etc/rsyncd.conf



# cat /etc/rsyncd.conf



uid = nobody



gid = nogroup



max connections = 25



socket options = SO_KEEPALIVE







[kali]



path = /srv/mirrors/kali



read only = true



[kali-images]



path = /srv/mirrors/kali-images



read only = true



# service rsync start



Starting rsync daemon: rsync.

Запуск демона rsync: rsync.

Настройка зеркал

Затем нам нужно экспортировать зеркала в http://domain.com/kali и http://domain.com/kali-images.

Начнем с загрузки и разархивирования архива http://archive.kali.org/ftpsync.tar.gz в каталоге пользователя, созданном ранее.

# su - archvsync



# wget http://archive.kali.org/ftpsync.tar.gz



# tar zxf ftpsync.tar.gz



Next set up the configuration file.



cp etc/ftpsync.conf.sample etc/ftpsync-kali.conf



nano etc/ftpsync-kali.conf



grep -E '^[^#]' etc/ftpsync-kali.conf



MIRRORNAME=`hostname -f`



TO="/srv/mirrors/kali/"



RSYNC_PATH="kali"



RSYNC_HOST=archive.kali.org

 Настройка доступа по SSH

Последний шаг — настроить авторизованные ключи SSH для archive.kali.org для запуска зеркала.

mkdir /home/andreyex/.ssh



chown 700 /home/andreyex/.ssh



wget –O- -q http://archive.kali.org/pushmirror.pub >> /home/andreyex/.ssh/authorized_keys



chown 644 /home/andreyex/authorized_keys

 Связь с Kali.org

После завершения настройки системы отправьте электронное письмо по адресу devel@kali.org, указав всю информацию о ваших зеркалах, включая пользователя, порт для доступа к службе SSH и общедоступное имя хоста. Вы также должны указать, к кому Kali следует обращаться в случае проблем и должны ли применяться какие-либо изменения в соответствии с настройками зеркала.

Оттуда все, что вам нужно сделать, это дождаться первого толчка от archive.kali.org.



2021-03-06T10:09:54
Kali Linux

Исключительная иерархия от Total Commander

Взаимодействие с архивами всех доступных форматов и основные операции над документами и каталогами, молниеносный поиск данных и встроенная панель FTP, поддержка горячих клавиш, плагинов и системных модулей и табличное, двухпанельное представление данных – классический файловый менеджер Total Commander по-прежнему занимает ведущее место среди тех, кто следит за порядком на персональных компьютерах. И на то сразу несколько причин:

  1. Персонализация. Каждую кнопку интерфейса разрешают разместить на панели быстрого доступа. Команды – переназначить и организовать, способы вызова контекстного меню – полностью поменять (с правой кнопки мыши на «пробел», к примеру). Через дополнительную колонку с настройками легко меняется визуальная тема и активируется «история операций», а еще открывается специальное системное повышение уровня привилегий (взаимодействие с отдельными каталогами, возможность ограничивать доступ и работать там, где запрещено).
  2. Точность. Подсчет и тотальная поверка контрольных сумм загруженных файлов (методов несколько, MD5 – на месте), возможность разделять и собирать архивы больших размеров (форматы основные). Работа в фоновом и портативном режиме. Подсветка искомых файлов, возможность сортировать каталоги разными способами, поиск особенно объемных файлов, доступ к секретным или спрятанным разделам диска.
  3. Плагины. Total Commander для Windows с легкостью воспринимает дополнительные системные модули и позволяет просматривать своеобразные форматы данных (от SWF до FB2), взаимодействовать с различными операционными системами смартфонов или планшетов (даже Symbian не проблема!), составлять музыкальные списки воспроизведения и работать над тегами аудиофайлов. Впрочем, даже поверхностно описать каждую выдуманную независимыми разработчиками мелочь невозможно – некоторые умельцы даже приложения запускают внутри файлового менеджера – а потому куда важнее в принципе указать на разнообразие. Если уж понадобилась какая-то дополнительная возможность, то, скорее всего, в менеджере расширений все отыщется.

Скачать Total Commander последней версии еще важнее. Разработчики официально запустили поддержку 64-разрядных систем, поработали с интерфейсом, перевели каждую кнопку (наконец-то русская версия Total Commander!), активировали обновления, связанные с архиваторами и современными форматами, а заодно перевели некоторые плагины на постоянную основу. Заманчиво? В таком случае, veadug.com уже ждет посетителей! Заглядывайте, если Total Commander официальный сайт совсем не наглядный и не интуитивный!



2021-03-05T15:50:09
Программное обеспечение

Как пересобрать исходный код в Kali Linux

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

Давайте обсудим, как мы можем изменить установленные пакеты и пересобрать их из исходного кода.

Примечание
Прежде чем мы начнем, вам нужно будет включить URI исходного пакета deb-src в файл sources.list.

 

Добавление пакетов deb-src

Чтобы добавить пакет deb-src в файл sources.list Kali Linux, отредактируйте файл в /etc/apt/sources.list и раскомментируйте строку deb-src.

Затем обновите исходные пакеты, прежде чем продолжить.

Примечание
Убедитесь, что у вас установлен пакет dpkg-dev.

 

Скачивание исходных пакетов

Следующим шагом будет загрузка пакета с исходным кодом. В этом примере мы будем использовать vim. Выполните команды:

sudo apt-get update

sudo apt source vim

Затем перейдите в каталог исходного пакета vim.

cd vim-8.2.2434/

 Изменить исходный код пакета

Следующим шагом является внесение изменений в исходный код по своему усмотрению. Мы не будем вдаваться в подробности, потому что это будет зависеть от пакета, который вы изменяете, и ваших целевых потребностей.

sudo nano src/vimrun.c

 

После внесения необходимых изменений сохраните и закройте файл.

 

Проверить зависимости сборки

Перед пересборкой пакетов с исходным кодом вам необходимо установить зависимости пакетов. Проверить необходимые зависимости можно с помощью команды:

dpkg-checkbuilddeps

Выполнение этой команды отобразит все необходимые зависимости перед пересборкой пакета. Если зависимости не требуются, результат будет пустым. Для vim вы увидите результат, аналогичный показанному ниже:

dpkg-checkbuilddeps: error: Unmet build dependencies: autoconf cscope debhelper-compat (= 12) libacl1-dev libcanberra-dev libgpmg1-dev libgtk-3-dev liblua5.2-dev libperl-dev libselinux1-dev libncurses-dev libtool-bin libxaw7-dev libxpm-dev libxt-dev lua5.2 python3-dev ruby-dev tcl-dev docbook-utils docbook-xml ghostscript pdf2svg

Установка зависимостей сборки

Когда у вас есть список необходимых зависимостей, просто используйте apt, чтобы установить их как:

sudo apt-get install autoconf cscope debhelper-compat libacl1-dev libcanberra-dev libgpmg1-dev libgtk-3-dev liblua5.2-dev libperl-dev libselinux1-dev libncurses-dev libtool-bin libxaw7-dev libxpm-dev libxt-dev lua5.2 python3-dev ruby-dev tcl-dev docbook-utils docbook-xml ghostscript pdf2svg -y

 Сборка исходного пакета

После выполнения необходимых зависимостей и сохранения изменений нового исходного пакета вы можете построить новый пакет.

Используйте команду ниже, чтобы создать новый пакет.

dpkg-buildpackage

 

Установка нового пакета

После успешного завершения сборки у вас должен быть пакет .deb, который можно установить с помощью dpkg.

sudo dpkg –i ../vim-???.deb

 Вывод

В этой краткой статье показано, как создавать, изменять и перестраивать пакеты в Kali Linux. Перестройка пакетов может быть очень полезной, если вам нужна настроенная версия инструмента.



2021-03-05T12:20:04
Kali Linux