Linux для чайника
19.6K subscribers
86 photos
4 files
79 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Создание скриншота с помощью команды в терминале

Команда import используется для создания снимков экрана выбранной области или окна на экране.

Захватить весь экран:
import screen.png

Захватить определенную прямоугольную область:
import -crop 800x600+100+100 area.png

Захватить активное в данный момент окно:
import -window root window.png
Чтобы узнать, какой процесс открыл тот или иной ресурс, например, файл или сетевой порт, можно воспользоваться командой fuser. Например:

fuser -va 23/tcp

Получим идентификатор процесса, открывшего ТСР порт 23

fuser -va /chroot/etc/resolv.conf

Во втором случае получим идентификатор процесса, открывшего файл /chroot/ etc/resolv.conf.

Что делать далее - решать вам, например, можно убить этот процесс командой kill.
DHCP-сервер в Linux

1.
Для установки DHCP-сервера в Ubuntu или Debian, выполните команду:
sudo apt-get install isc-dhcp-server

2. Настройка файла dhcpd.conf (основной файл конфигурации DHCP-сервера). Вам нужно указать настройки, такие как подсети, диапазоны IP-адресов, шлюзы, DNS-серверы и т. д.

3. В файле dhcpd.conf определите подсети и диапазоны IP-адресов, доступные для выдачи.
Например, для подсети 192.168.1.0/24 и диапазона IP-адресов от 192.168.1.10 до 192.168.1.100, добавьте следующие строки в файл dhcpd.conf:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
}

4. В файле dhcpd.conf вы также можете указать другие настройки, такие как шлюзы (routers), DNS-серверы (domain-name-servers) и другие параметры.

5. Перед запуском DHCP-сервера убедитесь, что настройки в файле dhcpd.conf заданы правильно.
Выполните команду sudo dhcpd -t, чтобы проверить конфигурационный файл.

6. Если ошибок нет, запустите DHCP-сервер: sudo service isc-dhcp-server start (в Ubuntu/Debian).
Если к компьютеру подключить несколько мышек, то они будут работать параллельно. При одновременном противоречивом движении мышей курсор будет или оставаться на месте или непредсказуемо перемещаться.

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

Посмотрим группы и номера устройств
$ xinput list

Создаём ещё одну группу «mouse2» для новой мыши
$ xinput create-master mouse2

Переподключаем мышь с id=11 к группе mouse2 (id=13)
$ xinput reattach 11 13
Записать сеанса терминала

Команда script фиксирует все, что происходит в сеансе терминала. С помощью нее можно сохранить всю информацию о вводе, выводе и времени.

Чтобы начать запись терминала в лог файл:
script history_log.txt

Теперь можете попробовать выполнить несколько команд, например, ls, cal, w.

Далее остановите команду script, выполнив команду exit в терминале. После этого сможете увидеть:
Script done, file is history_log.txt

Теперь вся информация, которая была введена в терминал, хранится в файле history_log.txt
Открываем изображения для просмотра из терминала

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

display image.jpg

При запуске команды display появится графическое окно с изображением. Вы можете взаимодействовать с окном, чтобы увеличивать и уменьшать масштаб, прокручивать и закрывать изображение.
Разрешить команды с помощью sudo только определенной группе пользователей

Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)


Это более продвинутое решение, которое сисадмин использует в многопользовательской среде. Допустим, вы создаете группу "coders" и разрешаете им запускать команды из каталогов /var/folder и /opt/bin/coders.

Теперь отредактируйте файл sudoer с помощью:
sudo visudo

Добавьте в него следующую строку:
%coders ALL=(ALL:ALL) /var/folder,/opt/bin/coders
Несколько примеров настроек ядра Linux:

/proc/sys/kernel/panic: Этот параметр определяет время задержки перед автоматической перезагрузкой системы после возникновения фатальной ошибки (паники) ядра. Значение в секундах. Например, чтобы установить время задержки в 10 секунд, выполните команду: echo 10 > /proc/sys/kernel/panic

/proc/sys/kernel/sysrq: Этот параметр определяет, разрешены ли команды SysRq (System Request) для ядра Linux. Команды SysRq позволяют выполнять различные действия, такие как перезагрузка системы, синхронизация дисков, отображение информации о системе и т. д. Чтобы включить команды SysRq, выполните команду: echo 1 > /proc/sys/kernel/sysrq

/proc/sys/kernel/sem: Этот параметр определяет количество системных семафоров, которые могут быть использованы процессами. Семафоры используются для синхронизации доступа к общим ресурсам. Значение состоит из трех чисел, разделенных пробелами, представляющих максимальное количество семафоров, максимальное количество семафоров в каждом наборе и максимальное значение для семафоров.

/proc/sys/kernel/shmmax: Этот параметр определяет максимальный размер общей памяти (shared memory), которая может быть выделена процессу. Значение указывается в байтах. Например, чтобы установить максимальный размер общей памяти в 1 гигабайт, выполните команду: echo 1073741824 > /proc/sys/kernel/shmmax

/proc/sys/kernel/threads-max: Этот параметр определяет максимальное количество потоков, которые могут быть созданы в системе. Значение указывает максимальное количество потоков, которые могут быть созданы процессами. Например, чтобы установить максимальное количество потоков в 10000, выполните команду: echo 10000 > /proc/sys/kernel/threads-max

/proc/sys/kernel/panic_on_oops: Этот параметр определяет, должна ли система автоматически перезагружаться после возникновения ошибки ядра (oops). Значение 1 включает автоматическую перезагрузку, а значение 0 отключает ее. Например, чтобы отключить автоматическую перезагрузку, выполните команду: echo 0 > /proc/sys/kernel/panic_on_oops
Допустим, вы хотите засечь сколько времени выполняется определенное действие в вашем Bash скрипте, для этого добавьте там, где нужно начать замер строку:

START=$(date +%s)

А там, где нужно прекратить:

END=$(date +%s)
DIFF=$(( $END - $START ))
DIFF=$(( $DIFF / 60 ))

Переменная DIFF будет содержать время выполнения в минутах. Теперь вы можете вывести ее с помощью echo.
Анализ и сканирование файлов ELF

Команда scanelf предоставляет широкие возможности для извлечения информации из файлов ELF.

Примеры использования scanelf:
1. Поиск всех ELF файлов, использующих определённую библиотеку:
scanelf -B -n libspecific.so
Эта команда выведет список всех файлов, динамически связанных с libspecific.so.

2. Анализ RPATH и RUNPATH всех ELF файлов в директории:
scanelf -R -l /path/to/directory
Здесь будет произведён поиск и отображение информации о RPATH и RUNPATH для всех ELF файлов в указанной директории.

3. Поиск файлов с неподкачиваемыми секциями :
scanelf -M /path/to/directory
Неподкачиваемые секции относятся к сегментам данных, которые должны оставаться в оперативной памяти во время выполнения программы и не могут быть перемещены в область подкачки (swap). Это особенно важно для кода, который должен быть всегда доступен для быстрого выполнения, без задержек на подкачку из swap-области, например, для драйверов устройств или кода, работающего в режиме реального времени.
Сортировка файлов в каталоге по размеру

Для поиска самых больших файл в каталоге можно воспользоваться комбинацией команд ls и sort:
ls -l | sort -k5,5nr

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

Может быть очень полезно, когда нам нужно почистить место на компьютере.
Вывести только подкаталоги в каталоге

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

ls -d */

-d: параметр указывает ls отображать сами каталоги, а не их содержимое.
*/: шаблон, гарантирующий, что в списке будут указаны только каталоги.
Проверить доступ sudo для пользователя

Как узнать, есть ли у пользователя доступ к sudo?

Лучший способ — использовать встроенную функциональность sudo и посмотреть, какой доступ к sudo имеет пользователь:
sudo -l -U user_name

Он покажет, есть ли у пользователя с именем user_name доступ sudo для некоторых команд или для всех команд.

Если у пользователя вообще нет доступа к sudo, вы увидите:
User user_name is not allowed to run sudo on this-that-server.
В Linux имеется набор команд (ifconfig, route, iwconfig и тд.), которые обеспечивают настройки сети. Доступно из пакета net-tools.

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

Новая альтернатива — команда ip из пакета iproute2util.
 ⁃ Она намного шире по функциональности.
 ⁃ Организованна на двух уровнях: канальный и сетевой.
 ⁃ Выполняет работу всех вышеупомянутых команд из net-tools. 
 ⁃ Использует механизм сокетов netlink, который является гораздо более гибким преемником ioctl для взаимодействия между ядром и пользовательским пространством с использованием rtnetlink.
Команды монтирование файловых систем

mount /dev/hda2 /mnt/hda2 монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’

umount /dev/hda2 размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’

fuser -km /mnt/hda2 принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем

umount -n /mnt/hda2 выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске

mount /dev/cdrom /mnt/cdrom монтировать CD или DVD

mount /dev/hdc /mnt/cdrecorder монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)

mount -o loop file.iso /mnt/cdrom смонтировать ISO-образ

mount -t vfat /dev/hda5 /mnt/hda5 монтировать файловую систему Windows FAT32

mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share монтировать сетевую файловую систему Windows (SMB/CIFS)

mount -o bind /home/user/prg /var/ftp/user «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно.
Работа с каталогами 

mkdir <каталог> Создание каталога
cd <каталог> Изменение каталога
ls <каталог> Вывод содержимого каталога
rmdir <каталог> Удаление пустого каталога
rm -r <каталог> Рекурсивное удаление каталога

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

□ . — означает текущий каталог. Если вы введете команду cat ./file, то она выведет файл file, который находится в текущем каталоге;

□ .. — родительский каталог. Например, команда cd .. переведет вас на один уровень вверх по дереву файловой системы;

□ ~ — домашний каталог пользователя.
Примеры настройки терминала в Linux

Изменение цветовой схемы терминала:
$ echo -e '\e]P02E3440'  # Изменить цвет фона на #2E3440
$ echo -e '\e]P1b48ead' # Изменить цвет текста на #b48ead


Изменение размера шрифта терминала:

$ gsettings set org.gnome.desktop.interface monospace-font-name 'DejaVu Sans Mono 10'


Добавление кастомизированного приветствия при запуске терминала:

$ echo 'Здарова, заеб*л!' >> ~/.bashrc


Установка альтернативного эмулятора терминала (например, Terminator):

$ sudo apt-get install terminator


Настройка прозрачности фона терминала:

$ sudo apt-get install compizconfig-settings-manager
$ ccsm

# Включить плагин "Opacity, Brightness, and Saturation" и настроить прозрачность
FTP-сервер в Linux

1. Для установки FTP-сервера в Ubuntu или Debian, выполните команду:
sudo apt-get install vsftpd

2. Отредактируйте файл /etc/vsftpd.conf.
⁃ Укажите анонимный доступ, обозначив anonymous_enable=YES, или разрешите доступ для зарегистрированных пользователей, установив local_enable=YES.
⁃ Установите ограничения на загрузку и скачивание файлов с помощью параметров write_enable=YES, anon_upload_enable=YES, anon_mkdir_write_enable=YES.

3. Чтобы разрешить пользователям FTP-сервера получать доступ, добавьте их учетные записи в систему с помощью команды
sudo adduser username

4. Обеспечение безопасности FTP-сервера:
⁃ Измените порт FTP-сервера на непривилегированный, чтобы уменьшить риск атаки: listen_port=2121.
⁃ Включите SSH-доступ и отключите прямой доступ к FTP-порту из-за пределов сети: connect_from_port_20=YES, listen_ipv6=NO.
⁃ Разрешите только безопасные протоколы шифрования, установив ssl_enable=YES, ssl_tlsv1=YES, ssl_sslv2=NO, ssl_sslv3=NO.

5. Выполните команду sudo service vsftpd restart, чтобы перезапустить службу после внесения изменений в файл конфигурации.
Чтобы определить, чем занимается устройство, которое нужно размонтировать, существует полезный инструмент — команда lsof.

Введите ее с именем нужного раздела, например:
lsof /mnt/test

Выходные данные покажут, какие команды удерживают файлы открытыми в этом разделе. Таким же образом можно использовать команду:
fuser-v /mnt/test
При загрузке системы ядро определяет подключенное оборудование и запускает драйверы, которые позволяют Linux работать с ним. Сведения об обнаружении оборудования быстро прокручиваются на экране при загрузке.

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

Любой пользователь может запустить команду dmesg, чтобы увидеть, какое оборудование обнаружено и какие драйверы загружены ядром во время запуска.

Второй способ просмотра загрузочных сообщений — это команда journalctl, которая отображает сообщения, связанные с конкретным сеансом загрузки.