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

Изучаем команды Linux: dd. Некоторые особенности использования системной утилиты dd и её модифицированных версий



























3/5 — (1 голос)

Некоторые особенности использования системной утилиты dd и её модифицированных версий. В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. dd (dataset definition) — программа UNIX, предназначенная как для копирования, так и для конвертации файлов. Название унаследовано от оператора DD (Dataset Definition) из языка JCL.

Несколько слов о резервном копировании файлов

Бэкапы (от английского «Backup») – это метод создания запасной копии важной информации на компьютере либо сервере. Его можно проводить ручным способом или автоматическим в соответствии с регулярным расписанием.

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

Что такое утилита dd?

Резервное копирование (backup) — создание запасных копий серверов, может быть настроено по регулярному расписанию, а может выполняться однократно в удобный для пользователя момент.

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

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

Если вы работали с командой dd в Linux, то у вас не возникнет сложностей при её использовании в операционной системе Windows.

Для того чтобы открыть страницу помощи перейдите в каталог с исполняемым файлом, откройте консоль PowerShell и выполните команду:

./dd.exe –list

Чтобы сделать запасную копию вашего жесткого диска используйте следующую команду:

./dd.exe if=<исходный_диск> of=<полное_имя_копии> bs=1440k

Пример создания образа диска f на диск e:

./dd.exe if=.f: of=e:tempdisk1.img bs=8M

Результат:

rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au>This program is covered by the GPL. See copying.txt for details 7279+1 records in 7279+1 records out

  1. if=/dev/sda – копируем весь жесткий диск sda;
  2. of=/mnt/backup/sda.img – копируем в /mnt/backup/sda.img, где каталог /mnt/backup точка монтирования диска, на котором будет содержаться образ;
  3. bs=8M – задаем размер кэша жесткого диска для ускорения процедуры копирования (иначе данные будут сбрасываться малыми порциями по 512 байт).

Примечание: на целевом диске должно быть достаточно места, т.е. не менее того объема, который занимает исходный диск.

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

./dd.exe if=<полное_имя_копии> of=<целевой_диск> bs=8M

Например:

./dd.exe if=e:tempdisk1.img of=.f: bs=8M

Результат:

rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au>This program is covered by the GPL. See copying.txt for details 1279+1 records in 1279+1 records out

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

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

</jn@it.swin.edu.au></jn@it.swin.edu.au>

Команда dd

Синтаксис утилиты достаточно необычен, но в то же время очень прост, после того как вы его запомните и привыкнете:

$ dd if=источник_копирования of=место_назначенияпараметры

С помощью параметра if вам нужно указать источник, откуда будут копироваться блоки, это может быть устройство, например, /dev/sda или файл – disk.img. Дальше, с помощью параметра of необходимо задать устройство или файл назначения. Другие параметры имеют такой же синтаксис, как if и of.

Теперь давайте рассмотрим дополнительные параметры:

  • bs – указывает сколько байт читать и записывать за один раз;
  • cbs – сколько байт нужно записывать за один раз;
  • count – скопировать указанное количество блоков, размер одного блока указывается в параметре bs;
  • conv – применить фильтры к потоку данных;
  • ibs – читать указанное количество байт за раз;
  • obs – записывать указанное количество байт за раз;
  • seek – пропустить указанное количество байт в начале устройства для чтения;
  • skip – пропустить указанное количество байт в начале устройства вывода;
  • status – указывает насколько подробным нужно сделать вывод;
  • iflag, oflag – позволяет задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.

Это были все основные опции, которые вам могут понадобиться. Теперь перейдем ближе к практике и рассмотрим несколько примеров как пользоваться утилитой dd linux.

Почему dd?

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

Как работает команда dd?

Сначала нужно понять как работает команда dd и что она делает. Фактически, это аналог утилиты копирования файлов cp только для блочных данных. Утилита просто переносит по одному блоку данных указанного размера с одного места в другое.

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

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

Как загрузить утилиту dd

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

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

Синтаксис команды dd

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

dd if=[что копировать] of=[куда копировать] параметры

С использованием параметра «if» потребуется прописать что копировать (источник). В “of” можно написать файл или устройство, например флешку или HDD диск.

Основные параметры:

  • «bs» – количество байт, которые будут читаться и записываться за один раз.
  • «cbs» – число байт, записываемых за один раз.
  • «count» – число скопированных блоков. Размер блока прописывается в опции «bs».
  • «ibs» – чтение определенного числа байт за 1 раз.
  • «obs» – записывание определенного числа байт за 1 раз.
  • «seek» – пропуск определенного числа байт в самом начале устройства во время чтения.
  • «skip» – пропуск определенного числа байт в самом начале при выводе.
  • «status» – подробность вывода.
  • «iflag», «oflag» – создание дополнительных флагов, которые нужны для ввода или вывода.
  • –help – показывает справку.
  • –version – показывает информацию о версии утилиты.

Выше описаны наиболее популярные функции, которые могут потребоваться вам при использовании программы dd Linux.

Примеры команды linux dd

Утилита чаще всего применяется для формирования образов DVD- и CD-дисков. Для их сохранения в виде образа iso существуют определенные команды. Чтобы программа не реагировала на ошибки, можно запустить фильтр noerror. Далее создается образ, который в последующем сохраняется на диск.

Чтобы сделать образ, узнаем разметку диска, с помощью dh.

df -h

Сделаем образ раздела /home, файловая разметка /dev/sda6 в каталог /root/home.iso. В качестве аргумента укажем “noerror” – не выдавать ошибки. Также ограничим  максимальный размер файла на 4096 байт.

dd if=/dev/sda6 of=/root/home.iso bs=4096 conv=noerror

Таким образом делаются образы жестких дисков, флешек, оптических приводов.

Как видно из примера выше, в каталоге /root появился файл home.iso. В дальнейшем его можно развернуть. Он позволит восстановить испорченную в ходе использования систему, в нашем случае файлы каталога home.

Весьма полезный параметр – «bs». Он в значительной мере влияет на скорость работы самой программы. Этот аргумент дает возможность установить размер блока во время передачи информации. Предварительно задается цифровое значение, где указывается один из модификаторов.

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

Создадим образ диска. Пусть /dev/cdrom1 это наш оптический привод, cdrom.

# dd if=/dev/cdrom1 of=/home/samba/disk/obraz.iso

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

Как пользоваться dd?

Обычные пользователи используют команду dd чаще всего для создания образов дисков DVD или CD.

Например, чтобы сохранить образ диска в файл можно использовать такую команду:

$ dd if=/dev/sda of=~/disk.img

В вашей домашней папке будет создан файл с именем disk1.img, который в будущем можно будет развернуть и восстановить испорченную систему.

Чтобы записать образ на жесткий диск или раздел достаточно поменять местами адреса устройств:

$ dd if=/dev/sda of=~/disk.img bs=5M

Команда dd linux

Следующий параметр — это count. С помощью него можно указать сколько блоков необходимо скопировать.

Например, мы можем создать файл размером 512 мегабайт, заполнив его нулями из /dev/zero или случайными цифрами из /dev/random:

$ sudo dd if=/dev/sda of=mbr.img bs=1b count=1

Команда dd linux

Использование параметров, управляющих размерами и количеством блоков

Важными параметрами команды dd являются bs (block size) и count. Первый упрвляет размером блока, второй — количеством блоков, подвергающихся обработке. Например, можно выполнить следующую команду

# dd if=/dev/zero of=/dev/null bs=1M count=32768 32768+0 записей считано 32768+0 записей написано скопировано 34359738368 байт (34 GB), 2,35194 c, 14,6 GB/c

дающую представленеие о скорости передачи данных “процессор-память”.

Другое, более полезное применение параметров изменения размера и количества блоков — создание образа MBR (Master Boot Record):

dd if=/dev/sda of=/home/user/archive/MBR.image bs=512 count=1

С помощью dd можно также при необходимости тестировать и анализировать производительность жёсткого диска при выполнении операций последовательного чтения/записи с блоками заданного размера, например, с блокми по 1024 байта

dd if=/dev/zero bs=1024 count=1000000 of=/home/user/tmp/1Gb.file dd if=/home/user/tmp/1Gb.file bs=64k | dd of=/dev/null

Параметры пропуска блоков

Когда необходимо игнорировать некоторые данные из входного файла и не переносить их в выходной файл, на помощь приходит параметр skip, который позволяет пропустить заданное количество блоков перед началом копирования (даже на устройствах, на которых невозможна операция seek</strong>; при этом “пропускаемые” блоки считываются, но никак не используются).

Например, информацию в BIOS, располагающууюся по адресам с C:0000 по F:FFFF можно просмотреть следующим образом:

dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8

А вот пример преобразования файла образа диска, созданного программой Nero (Nero Image File) в обычный ISO-формат (команда просто удаляет 300-килобайтный заголовок при записи нового образа):

dd if=nero_image.nrg bs=1k skip=300 of=image.iso

Параметр seek позволяет пропускать заданное количество блоков в выходном файле. Это может оказаться полезным при “склейке” большого файла, который может быть считан лишь фрагментарно (то есть, не всё содержимое можно получить за одну операцию чтения). Хороший пример подобного применения параметра seek приведён в википедии. Иногда необходимо зараезервировать свободное место в начале выходного файла или имитировать “большой” файл. В этом случае также помогает seek:

dd if=small.file seek=100 of=pseudo_big.file

Параметр conv в данной статье не рассматривается в подробностях, а упомянут он здесь лишь для того, чтобы отметить один из его аргументов, noerror — продолжать после ошибок чтения. Дело в том, что при указании conv=noerror при наличии слишком большого количества ошибок во входных файлах (на устройствах) возникают затруднения и даже потенциальные опасности для оборудования при выполнении команды dd.

Утилита dd_rescue

Программа dd_rescue выполняет те же задачи, что и dd, но делает это более эффективно и с меньшим риском. В общем виде её выполнение выглядит так:

dd_rescue /dev/sda1 local_sda1.img

Следует обратить внимание на то, что здесь не используется формат параметров dd, то есть части “if=” и “of=” не нужны. По умолчанию dd_rescue копирует стандартный ввод в стандартный вывод, то есть, так же, как и dd, является фильтром и может участвовать в конвейерах команд:

dd_rescue /dev/sda1 – | bzip2 > /dir/local_sda1.img.bz2

Ещё один пример, с передачей файла образа раздела диска по сети:

dd_rescue /dev/sda1 – | ssh user@remote.host “cat – > /remote/destination/my_sda1.img”

В целом операции и действия похожи на dd. Но главным отличием dd_rescue от dd является то, что эта утилита не прекращает работу при возникновении ошибок и не пытается выполнять чтение (или запись) с ошибкой до бесконечности, а обрабатывает возникающие ошибки наилучшим возможным в конкретной ситуации образом. Здесь можно определить обнуление “плохого” блока после определённого количества попыток чтения/записи, фиксацию номеров “плохих” блоков в log-файле и запись либо отказ от записи блоков, обнулённых при ошибках. Такой подход делает программу весьма полезной при извлечении данных с устройств, при чтении которых возникает слишком много ошибок ввода/вывода.

Описание всех ключей можно получить, выполнив команду dd_rescue -h.

Чтение и запись файлов и устройств

В предыдущем примере мы вводили текст в stdin (стандартный поток ввода). Однако, всегда можно использовать входные и выходные файлы. Чтобы указать имена входного и выходного файла, используются опции if и of, соответственно. Например, если вам нужно перевести в верхний регистр текст из файла file1 и записать его в файл file2, можно выполнить следующую команду:

dd if=file1 of=file2 conv=ucase

Командой dd также можно создавать файлы различных объемов, например для тестов. Следующая команда создаст файл объемом 1 ГБ заполненный случайными данными

dd if=/dev/urandom of=bigfile bs=1M count=1000

Или файл заполненный нулями

dd if=/dev/null of=bigfile bs=1M count=1000

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

Например, следующая команда полностью копирует диск /dev/sda на диск /dev/sdb:

dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync

Аргумент noerror опции conv позволяет программе продолжать копирование даже при наличии ошибок, а sync задаёт использование синхронизированного ввода/вывода. Размер блока должен быть кратным 1 Кб (1024 байта), а выходной диск равен по объему входному или больше.

Аналогично можно создать образ CD или DVD, вместе с загрузочным сектором:

dd if=/dev/cdrom of=/mycd.iso

Опция -o loop команды mount позволяет смонтировать файл как обычное устройство. Так можно подключить созданный образ:

mount -o loop /mycd.iso /mnt/cd

Сокращение вывода в stderr

Можно ограничить объём информации, выводимой в поток stderr, при помощи опции status. Например, если требуется сообщать только об ошибках, нужно указать эту опцию с аргументом none:

dd if=file1 of=file3 status=none

Другие возможные значения — noxfer, исключающее вывод конечной статистики, и progress, исключающее вывод текущей статистики.

Действия с выходными файлами

Чтобы команда работала только в том случае, если выходного файла ещё не существует, в качестве аргумента опции conv можно указать значение excl.

dd if=file1 of=file3 conv=excl

По умолчанию dd перезаписывает выходной файл, если он уже существует. Если требуется обновление с записью в конец файла, укажите значение append для опции oflag и значение notrunc для опции conv, например:

dd if=file1 of=file2 oflag=append conv=notrunc

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

dd if=file1 of=file10 oflag=append conv=nocreat

Изменение регистра текста

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

Допустим, у вас есть несколько строк текста, написанного в нижнем регистре, а вам нужно перевести его в верхний регистр. Для этого можно воспользоваться опцией conv с аргументом ucase:

dd conv=ucase

Здесь мы видим команду и введённый текст. Чтобы показать dd, что ввод текста завершён, мы воспользовались комбинацией клавиш Ctrl+D, и команда вывела следующий результат:

Введённый текст был переведён в верхний регистр, последние три строки — это статистика операции. Аналогичным образом можно перевести текст в нижний регистр.

Пропуск части входных данных

При необходимости можно задать команде пропустить несколько начальных байтов входных данных. Это осуществляется при помощи опции skip с целочисленным аргументом. Например, если значение этого аргумента N, то dd пропустит N блоков размера ibs. Это ещё одна опция команды, которая определяет число байтов, считываемых за раз (по умолчанию 512).

Если вам требуется пропустить первые 4 байта входного файла, нужно задать ibs равным 4, а аргумент skip равным 1. Таким образом при чтении файла команда пропустит один блок размером 4 байта.

dd if=file1 of=file2 ibs=4 skip=1

Сравним файлы командой grep

grep -v -f file1 file2

Видно, что часть текста при считывании файла file1 были пропущены, поэтому в файле file2 их нет.

Утилита dcfldd

Программа dcfldd является дальнейшим развитием клона dd с расширенной функциональностью и множеством дополнительных параметров, краткое описание которых можно получить с помощью команды dcfldd –help. В дополнение к типовым операциям dd утилита dcfldd может выполнять следующие действия: хэширование копируемых данных “на лету”, разделять вывод данных в несколько различных файлов, осуществлять проверку соответствия создаваемого образа оргинальному устройству “бит-в-бит”. Кроме того, dcfldd выводит индикатор прогресса выполняемой работы, фиксирует свои действия в log-файле и, разумеется, может быть составной частью конвейера, как и положено члену семейства dd.

Типичный пример использования программы dcfldd на первый взгляд может показаться несколько ошеломляющим, но при проходе по каждому параметру всё становится гораздо проще:

dcfldd if=/dev/sdb4 hash=md5,sha256 hashwindow=10G md5log=md5.txt sha256log=sha256.txt hashconv=after bs=512 conv=noerror,sync split=10G splitformat=aa of=sdb4image.dd

Здесь считываются 10 Гб данных с устройства /dev/sdb4, и эти данные записываются в файл sdb4image.dd.aa. При этом также вычисляется MD5-хэш и sha256-хэш для копируемого фрагмента данных. Затем считываются следующие 10 Гб данных и записываются в файл sdb4image.dd.ab и т.д. Вычисленные хэши сохраняются в файлах md5.txt и sha256.txt соответственно. Само вычисление хэш-сумм выполняется после всех прочих преобразований. Размеры блока хэширования и блока, записываемого в выходные файлы (различные), совпадают. Размер блока копирования 512 байтов. После ошибок чтения выполнение команды не прерывается, по умолчанию dcfldd записывает в такие блоки нули.

Заключение

Утилита dd и её более усовершенствованные версии представляют собой весьма удобный инструмент для решения определённого круга задач, к которым можно отнести копирование и клонирование файлов и разделов устройств, формирование образов дисков и разделов, создание резервных копий, просмотр обычных и бинарных файлов, а также тестирование и анализ производительности устройств.


[spoiler title=”Источники”]

  • https://serverspace.by/support/help/dd-utility-for-windows-backup/
  • https://1cloud.ru/help/windows/rezervnoe-kopirovanie-windows-utilita-dd
  • https://losst.ru/komanda-dd-linux
  • http://rus-linux.net/MyLDP/consol/dd.html
  • https://j4web.ru/linux/komanda-dd.html
  • https://www.vseprolinux.ru/dd-linux
  • https://www.ibm.com/developerworks/ru/library/os-dd_util/index.html
  • https://www.ibm.com/developerworks/ru/library/os-dd_util/
  • https://ITProffi.ru/komanda-dd-v-linux/


[/spoiler]


2020-12-22T10:34:30
Linux

Как вывести список установленных пакетов в Linux

Вы могли установить много приложений в вашей системе Linux. Это краткое руководство объясняет, как вывести список всех установленных пакетов в Linux из командной строки с примерами.

Команды для отображения всех установленных пакетов различаются в зависимости от типа используемого вами менеджера пакетов. Я включил примеры команд для всех популярных менеджеров пакетов.

1. Вывести список установленных пакетов в Arch Linux с помощью команды pacman

Pacman — это менеджер пакетов по умолчанию для Arch Linux и его производных, таких как Manjaro Linux.

Чтобы вывести список всех установленных пакетов, используемых pacman в Arch Linux и его вариантах, запустите:

$ pacman -Q

Пример вывода:

Если вы хотите просмотреть страницу вывода за страницей, направьте вывод в команду more, как показано ниже:

$ pacman -Q | more

Чтобы перечислить только явно установленные пакеты и версии:

$ pacman -Qe

Чтобы перечислить только общее количество установленных пакетов в Arch Linux, направьте вывод pacman в команду wc:

$ pacman -Q | wc -l

134

Как видно из вышеприведенного вывода, я установил 134 пакета в свою систему Arch Linux.

2. Список установленных пакетов в Alpine Linux с помощью команды apk

Apk, сокращение от Alpine Package Manager, является менеджером пакетов по умолчанию для Alpine Linux.

Команда для просмотра списка установленных пакетов в Alpine Linux:

$ apk info

Если вы хотите просмотреть список установленных пакетов, а также номер версии и описание пакета, используйте флаг -vv, как показано ниже:

$ apk info -vv

Пример вывода:

lm_sensors-3.4.0-r6 - Collection of user space tools for general SMBus access and hardware monitoring.

man-1.14.3-r0 - dummy package for upgrade compatibility. this can safely be removed

libcrypto1.1-1.1.1i-r0 - Crypto library from openssl

libssl1.1-1.1.1i-r0 - SSL shared libraries

[...]

Чтобы перечислить только общее количество всех установленных пакетов в Alpine Linux, передайте вывод apk info в команду wc, как показано ниже:

$ apk info | wc -l

86

3. Перечислите установленные пакеты в Debian, Ubuntu с помощью команды apt

Apt предоставляет интерфейс командной строки высокого уровня для системы управления пакетами в Debian, Ubuntu и других системах на основе Debian.

Чтобы отобразить список установленных пакетов в Debian, Ubuntu, Linux Mint и других системах на основе DEB, запустите:

$ apt list —installed

Пример вывода:

Отобразите общее количество установленных пакетов в системах на основе Debian, направьте вывод команды apt команде wc, как показано ниже:

$ apt list --installed | wc -l

2575

4. Перечислите установленные пакеты в Debian, Ubuntu с помощью команды dpkg.

Dpkg — это инструмент командной строки для установки, сборки, удаления пакетов Debian и управления ими.

Чтобы вывести список всех установленных пакетов с версиями и подробностями с помощью команды dpkg, запустите:

$ dpkg -l

Кроме того, вы можете использовать команду dpkg-query для вывода списка всех установленных пакетов Debian.

$ dpkg-query -l

Укажите только общее количество установленных пакетов в системах на основе Debian:

$ dpkg -l | wc -l

2668

$ dpkg-query -l | wc -l

2668

5. Перечислите установленные пакеты в RHEL, Fedora, CentOS с помощью команды yum.

Yum, расшифровывается как Yellowdog Updater, Modified, — это утилита управления из командной строки для установки и управления пакетами в системах на основе Red Hat. Теперь он заменен на dnf в последних версиях RHEL и CentOS.

Чтобы найти список установленных пакетов в Fedora, RHEL и его клонах, таких как CentOS, запустите:

$ yum list installed

Список только общее количество установленных пакетов с использованием команд yum и wc:

$ yum list installed | wc -l

347

6. Перечислите установленные пакеты в RHEL, Fedora, CentOS с помощью команды dnf

DNF — это версия YUM следующего поколения, и он был менеджером пакетов по умолчанию, начиная с Fedora 22, RHEL 8 и CentOS 8. Использование DNF такое же, как и в Yum.

Чтобы найти список установленных пакетов в RHEL, Fedora, CentOS с помощью dnf, выполните:

$ dnf list installed

Если вы хотите отобразить только общее количество пакетов с помощью команды dnf, запустите:

$ dnf list installed | wc -l

7. Список установленных пакетов в openSUSE с помощью команды zypper

Zypper — это менеджер пакетов командной строки по умолчанию для установки и управления пакетами в SUSE и openSUSE.

Чтобы просмотреть список установленных пакетов в openSUSE zypper, запустите:

$ zypper se --installed-only

8. Вывести список установленных пакетов в Linux с помощью команды rpm

RPM команда, означает Red Hat Package Manager, используется для установки и управления приложениями из командной строки в системах Redhat основе.

Чтобы вывести список всех пакетов RPM, установленных в вашей системе, выполните:

$ rpm -qa

Чтобы просмотреть вывод страницы за страницей, направьте вывод по конвейеру в moreкоманду:

$ rpm -qa | more

Вы также можете все установленные пакеты, самые свежие из которых находятся вверху, используя флаг --last, как показано ниже:

$ rpm -qa --last

Следующие два метода являются универсальными. Вы можете использовать эти команды в любых системах, в которых установлены инструменты snapили flatpak.

9. Список пакетов, установленных с помощью оснастки в Linux

Snap — это система развертывания программного обеспечения и управления пакетами, разработанная Canonical.

Чтобы вывести список всех приложений Snap, установленных в вашей системе, запустите:

$ snap list

Пример вывода:

Name Version Rev Tracking Publisher Notes

chromium 87.0.4280.88 1424 latest/stable canonical* -

core 16-2.48 10444 latest/stable canonical* core

core18 20201210 1944 latest/stable canonical* base

gnome-3-26-1604 3.26.0.20200529 100 latest/stable/… canonical* -

gnome-3-28-1804 3.28.0-19-g98f9e67.98f9e67 145 latest/stable canonical* -

gnome-3-34-1804 0+git.3556cb3 60 latest/stable canonical* -

gnome-system-monitor 3.36.0-12-g35f88a56d7 148 latest/stable/… canonical* -

gtk-common-themes 0.1-50-gf7627e4 1514 latest/stable/… canonical* -

multipass 1.5.0 2907 latest/stable canonical* -

10. Вывести список пакетов, установленных с помощью Flatpak в Linux

Flatpak — это независимая от платформы система управления пакетами для создания, установки и запуска изолированных настольных приложений и сред выполнения в Linux.

Чтобы вывести список всех установленных приложений Flatpak в Linux, запустите:

$ flatpak list --app

Пример вывода:

Name Application ID Version Branch Installation

Fondo com.github.calo001.fondo 1.5.1 stable system

Flatseal com.github.tchx84.Flatseal 1.6.5 stable system

FontFinder io.github.mmstick.FontFinder 2.0.0 stable system

Giara org.gabmus.giara 0.3 stable system

Solanum org.gnome.Solanum 1.1.0 stable system

Обратите внимание, что в приведенной выше команде будут перечислены только пакеты, которые установлены исключительно с приложением flatpak.

Для получения дополнительных сведений смотрите справочные страницы соответствующих команд.



2020-12-22T10:24:42
Вопросы читателей

Wine для нескольких пользователей.

Сегодня в статье поговорим о том, как можно настроить wine для использования его несколькими пользователями в вашей системе Linux.






Для примера я буду использовать легковесный дистрибутив XUbuntu, для всех производных операционок, таких как Ubuntu, Debian и т.д. инструкция будет идентичной.




Для начала установим wine на Вашу систему. Как это сделать я описывал в данной статье.




Будем считать что wine у вас установлен, для первого запуска достаточно набрать следующую команду:




wineboot




Программе потребуется некоторое время, а также недостающие зависимости, такие как mono и geckoo. Соглашаемся со всеми установками. После установки всех недостающих программ в директории пользователя появится директория ~/.wine. Если вы ее не видите, то нажмите сочетание клавиш ctrl+h.




Настройка многопользовательского wine




Давайте перенесем нашу только, что созданную директорию в директорию /etc.




sudo mv ~/.wine /etc/wine




Создадим общую группу для всех наших существующих и будущих пользователей.




sudo groupadd samba




Добавим нашего пользователя в данную группу.




sudo usermod -a -G samba myuser




Назначим группу и пользователя на нашу директорию /etc/wine




sudo chown -R myuser:samba /etc/wine




Теперь создадим символическую ссылку на директорию из /etc/wine в директорию нашего пользователя.




ln -s /etc/wine /home/myuser/.wine




А также изменим права на директорию и файлы, чтобы только наш пользователь и группа могли читать и изменять файлы :




chmod -R 6770  /etc/wine




Давайте теперь запустим нашу программу с помощью wine например regedit.exe




wine regedit.exe




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




Если Вы попробуете просто создать символическую ссылку на директорию /etc/wine, то программы установленные для пользователя myuser не запуститься под новым пользователем . Потому-что wine требует права юзера на некоторые фалы в своей директории.




Например файлы system.reg и user.reg должны принадлежать только тому пользователю, от которого вы собираетесь работать с wine. А в нашем случае владельцем является myuser




Для того чтобы обойти данное ограничение не достаточно присвоить SGIT и SUID (6770) – права на запуск файлов и директорий от пользователя владельцем которого он является. Необходимо, как я уже сказал, быть владельцем файла. Сейчас данные файлы должны принадлежать пользователю myuser. Но как же сделать multiuser wine (многопользовательский wine) спросите вы. Да все очень просто. Надо всего лишь переместить файлы system.reg и user.reg в директорию юзера, того пользователя, которому хотите установить wine и назначить владельцем этих файлов данного пользователя. Давайте проделаем эти шаги.




Этапы настройки многопользовательского wine




  • Создаем пользователя в системе:




adduser myuser2




  • Добавим нашего пользователя в группу samba.




sudo usermod -a -G samba myuser2




  • Создаем директорию wine в директории нового пользователя.




sudo mkdir /home/myuser2/.wine




  • Ограничим права на чтение директории данного юзера:




sudo chmod -R 6770 /home/myuser2




  • Ограничим доступ к директории пользователя:




sudo chown -R myuser2:myuser2 /home/myuser2




  • Создаем символические ссылки на директории /etc/wine/drive_c и /etc/wine/dosdiveces в директорию wine нового пользователя




ln -s /etc/wine/drive_c /home/myuser2/.wine/




ln -s /etc/wine/dosdiveces /home/myuser2/.wine




  • Перемещаем файлы system.reg и user.reg и назначим права на них




cp /etc/wine/{system.reg,user.reg} /home/myuser2/.wine/




chown myuser2:myuser2 /home/myuser2/.wine/{system.reg,user.reg}




После давайте попробуем запустить программу regedit от нашего нового пользователя myuser2. Для этого залогинемся под пользователем и выполним программу:




wine regedit.exe




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







Ошибки wine




Если при попытке запуска программы wine ругается и выдает следующее сообщение:




wine: /home/myuser2/.wine is not owned by you




В этом случае необходимо назначить правильные права на директорию ~/.wine данного пользователя.




Заключение




Подведем итог: Пользователь myuser2 может запустить все программы установленные нашим myuser пользователем. Также работа wine теперь осуществляется от всех пользователей в системе. Мы не создаем дубликаты директорий wine для каждого пользователя.



[endtxt]




RSS



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


2020-12-21T15:02:58
Wine

Изменение раздела диска в Linux с помощью Gparted

Есть ли в вашей установке Linux специальный домашний раздел? Вы хотите, чтобы он был больше или меньше? Если да, то это руководство для вас! Мы покажем вам, как изменить размер домашнего раздела в Linux!

Прежде чем мы начнем

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

Создание Gparted Live USB

Поскольку домашний раздел используется, когда ваш компьютер с Linux включен и находится в системе, вы не сможете установить Gparted в Linux и изменить размер домашней папки по своему усмотрению. Вместо этого для этого лучше всего использовать Gparted Live ISO через USB.

Создать Gparted Live USB очень просто. Чтобы начать процесс, вставьте USB-накопитель емкостью 1 ГБ (или больше) в USB-порт вашего ПК с Linux. После подключения USB следуйте пошаговым инструкциям ниже, чтобы сделать активный USB.

Шаг 1. Сначала вы должны загрузить файл ISO Gparted. Файл ISO содержит действующую операционную систему, которую мы будем записывать на USB-накопитель. Зайдем на страницу загрузки GParted, и захватить «GParted-жить-1.1.0-8-amd64.iso».

Загрузка должна занять всего пару секунд, даже в более медленных интернет-системах, так как размер действующего USB-накопителя составляет всего несколько мегабайт.

Шаг 2: Перейдите на Etcher.io и загрузите последнюю версию инструмента для прошивки USB/SD-карты Etcher. Получение этого приложения крайне важно, поскольку это самый простой способ создать Gparted Live USB.

Скачав Etcher на свой компьютер, установите и запустите.

Шаг 3: Внутри Etcher найдите кнопку «Flash from file» и выберите ее с помощью мыши. Затем используйте окно обозревателя файлов, чтобы выбрать файл ISO Gparted на вашем компьютере, который вы загрузили ранее.

После загрузки файла ISO в Etcher можно начинать перепрошивку.

Шаг 4: Найдите кнопку «Select target» и щелкните по ней мышью. Используйте пользовательский интерфейс Etcher, чтобы выбрать USB-накопитель, на котором вы планируете прошить файл ISO Gparted.

После выбора USB-накопителя Etcher установит его в качестве устройства для перепрошивки.

Шаг 5: Найдите «Flash from file» в приложении Etcher и выберите ее, чтобы начать процесс прошивки. Перепрошивка займет всего пару минут, так как файл ISO Gparted не очень большой.

Когда процесс прошивки будет завершен, перезагрузите компьютер с Linux, вставив Gparted Live USB в порт USB. Затем загрузите BIOS и настройте его для загрузки с USB для доступа к Gparted.

Доступ к Gparted Live

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

Шаг 1: Выберите опцию «Gparted Live (настройки по умолчанию) в Grub с помощью  клавиши Enter.

Шаг 2: Выберите опцию «Не трогать раскладку клавиатуры» с помощью клавиши Enter. Или используйте доступные параметры, чтобы выбрать раскладку, если вам нужно.

Шаг 3: Введите номер языка, назначенный языку, который вы хотите использовать, если Gparted не обнаруживает его автоматически.

Шаг 4: Введите команду startx в командной строке терминала. Эта команда запустит среду Gparted. Среда очень легкая, поэтому на вашем ПК она должна работать без сбоев.

После загрузки живой среды Gparted приложение редактора разделов Gparted откроется автоматически. Отсюда переходите к следующему разделу руководства.

Изменить размер домашнего раздела в Linux

Изменение размера домашнего раздела в Gparted начинается с определения раздела в редакторе. Используя Gparted, найдите свой домашний раздел. В этом примере домашний раздел /dev/sda4. Ваш БУДЕТ отличаться.

После того, как вы найдете свой домашний раздел, щелкните его правой кнопкой мыши. В контекстном меню найдите параметр «Изменить размер/переместить» и щелкните его мышью.

С помощью мыши перетащите домашний раздел в больший или меньший размер с визуальной графикой вверху. Или, если вы хотите быть более точным, введите новый размер вашего домашнего раздела (в MiB) в поле «новый размер».

После того, как вы изменили размер домашнего раздела в Gparted, нажмите кнопку «Изменить размер/Переместить» в правом нижнем углу, чтобы сохранить изменения. Затем найдите значок зеленой галочки в левом верхнем углу и выберите его, чтобы записать изменения на диске.

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

https://www.youtube.com/watch?v=IKMsciIVPjQ



2020-12-21T10:46:21
Вопросы читателей

🐧 Отравление кэша DNS SAD: временное исправление для серверов и настольных компьютеров Linux

Появилась новая угроза отравления кеша DNS, которая носит название Side-channel AttackeD DNS (SAD DNS).

Эта новая атака работает следующим образом: SAD DNS позволяет хакерам перенаправлять трафик, предназначенный для определенного домена, на сервер под их контролем.

С помощью этой атаки они могут легко шпионить за вашим трафиком.

Это атака по побочным каналам сети может быть с серьезными последствиями для безопасности как пользователей, так и предприятий, даже если ваши серверы в Германии

Этот новый недостаток затрагивает операционные системы Linux (ядро 3.18-5.10), Windows Server 2019 (версия 1809) и новее, macOS 10.15 и новее, FreeBSD 12.1.0 и новее.

Позвольте мне показать вам, как развернуть скрипт отBlueСat на ваших компьютерах и серверах Linux, чтобы вы могли избежать проблем, пока поставщики DNS-серверов не решат проблему.

Что вам понадобится

  • Доступ к машинам Linux, которые используют DNS в вашей сети

  • Пользователь с привилегиями sudo

Как пользоваться скриптом

Скрипт, созданный BlueCat, на самом деле довольно прост и выглядит так:

#!/usr/bin/env bash

#

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS

# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

# THE SOFTWARE.

###########################################################################  

#

# Three options for installation. Choose one of the following:

#

# 1. Copy to /etc/cron.minutely

#

# 2. Copy the script to the DNS server. Create a file in /etc/cron.d with

#    the following syntax:

#

#    * * * * *root    /path/to/icmp_ratelimit.sh >/dev/null 2>&1

#

# 3. Create a user cron entry while using `crontab -e`

#

#    * * * * * /path/to/icmp_ratelimit.sh >/dev/null 2>&1

#

# - Change "/path/to" to match the exact location of the script.

# - Finally, make sure it is executable: chmod +x /path/to/icmp_ratelimit.sh

#

seconds="60"

while [[ ${seconds} -gt 0 ]]

do

     echo $((500 + ${RANDOM} % 1500)) > /proc/sys/net/ipv4/icmp_ratelimit

     echo $((500 + ${RANDOM} % 1500)) > /proc/sys/net/ipv6/icmp_ratelimit

    sleep .95

done

Примечание. BlueCat может обновлять скрипт для включения IPv6. Не забудьте проверить их официальную страницу GitHub, чтобы узнать о дальнейших обновлениях этого скрипта.

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

Чтобы быть более конкретным, по словам Дэвида Максвелла, директора по безопасности программного обеспечения в BlueCat:

«Скрипт примерно эквивалентен изменению ядра Linux, совершенному 16 октября. Один раз в секунду он устанавливает новый рандомизированный предел для ответов ICMP, между 500-1500/с. Он будет работать в системах с ядром Linux версии 2.4.10. или новее “.

Создайте этот скрипт с помощью команды:

sudo nano /usr/local/bin/icmp_ratelimit.sh

Вставьте содержимое скрипта в новый файл и сохраните/закройте файл.

Дайте файлу права на исполнение с помощью команды:

sudo chmod u+x /usr/local/bin/icmp_ratelimit.sh

Когда скрипт будет готов, давайте теперь создадим задание cron для его использования.

Создайте новое ежедневное задание cron с помощью команды:

sudo crontab -e

Внизу этого файла вставьте следующее:

*/10 * * * * flock -xn /root/.icmpratelimit-lock -c /usr/local/bin/icmp_ratelimit.sh

Сохраните и закройте файл.

Обязательно позаботьтесь об этом на всех своих машинах с Linux.

Заключение

Это все, что нужно сделать.

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

 

 



2020-12-18T09:39:11
Закрытие уязвимостей

Vue.js против Django

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

Vue.js и Django — известные веб-фреймворки JavaScript. Они также являются инструментами с открытым исходным кодом. Vue.js известен тем, что создает чистые, многократно используемые веб-приложения на основе компонентов. Django — это фреймворк, построенный на Python, известный своей быстрой разработкой и рациональным дизайном кода.

В этой статье мы обнаружим некоторые из основных и более технических различий между Vue.js и Django. Сюда входят плюсы и минусы каждого фреймворка, компании, которые в настоящее время используют эти фреймворки, интегрированные инструменты и многое другое.

 

Разница между Vue.js и Django

Vue.js — это интерфейсный JavaScript-фреймворк, который генерирует страницы на стороне клиента. Поскольку он отображает страницы на стороне клиента, Vue.js требует больше времени на первоначальную загрузку, но дает лучший опыт, когда необходимо перемещаться между страницами.

В то время как Django — это полнофункциональный Python-фреймворк, который генерирует страницы на стороне сервера. Его рендеринг на стороне сервера помогает при первоначальной загрузке страницы, но во время навигации нам, возможно, придется столкнуться с проблемами производительности из-за задержки в сети.

 

Плюсы Vue.js

Vue.js — простая, удобная и фантастическая библиотека для ваших нужд. Вы можете изучить его на практике, если знаете Html, CSS и JavaScript. Vue.js — это фреймворк с быстрой кривой обучения. Документация, написанная для Vue.js, также проста для понимания и чрезвычайно подробна.

Документация настолько хорошо написана, что вы не должны растеряться, даже работая с ней целый день. Все шаги четко объяснены, а документация Vue.js — одно из лучших руководств, доступных для любого веб-фреймворка. Vue.js — это полная и функциональная экосистема JavaScript, которая является одной из лучших интерфейсных сред.

 

Плюсы Django

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

 

Минусы Vue.js

Сообщество Vue.js меньше, чем два других конкурирующих фреймворка, reactJS и Angular. Vue.js не поддерживает фрагменты, а программно поддерживает только несколько корневых узлов. Еще один недостаток Vue.js — разметка YXML и HTML.

 

Минусы Django

Django — это недостаточно мощный фреймворк для создания шаблонов и слабая ORM. Его автоматическая перезагрузка перезагружает весь сервер. Диспетчер URL-адресов Django игнорирует метод HTTP и имеет некоторую связь внутренних подкомпонентов.

Наличие минусов не обязательно означает, что фреймворк плохой. Фактически, каждая структура идет с намерением удовлетворить какую-то конкретную потребность или предоставить определенную ценность. Хорошо известно, что у каждой платформы есть свои особенности и стандарты, которые отличают ее от других платформ, и что один из них легко расставить по приоритетам в соответствии с вашими потребностями.

 

Компании, использующие фреймворки

Обе эти структуры поддерживаются хорошими компаниями.

Vue.js поддерживается многими громкими именами, такими как:

  • Alibaba
  • Xiaomi
  • Laracast
  • Trivago.com

 

Django также поддерживается некоторыми громкими именами, такими как:

  • Pinterest
  • Instagram
  • Udemy
  • Robinhood

 

Заключение

В этой статье мы рассмотрели фреймворки Vue.js и Django и указали на их различия. Мы также обсудили плюсы и минусы каждого фреймворка и упомянули названия компаний, поддерживающих эти фреймворки. Vue.js становится все более популярным среди фреймворков JavaScript и интерфейсной веб-разработки, особенно с точки зрения одностраничных приложений и пользовательских интерфейсов. Между тем, Django получит признание как полноценный фреймворк для быстрой разработки.



2020-12-18T03:02:53
Python