GNU/Linux | Notes
Kanalga Telegram’da o‘tish
Open Source, GNU/Linux, Debian/Ubuntu, Dotfiles, Software, Scripts, Notes, Terminal, Shell, Tools, Games, Fun, Misc, Music, Geek, Free Software Movement. Почта: krekhov.dev@gmail.com Кто я: https://t.me/krxnotes/246 GitHub: https://github.com/krekhovx
Ko'proq ko'rsatish2 280
Obunachilar
-124 soatlar
-17 kunlar
-1230 kunlar
Postlar arxiv
2 280
X clipboards.
Primary
Старый и традиционный вид буфера. Копирование в Primary: с помощью мыши. Вставка из Primary: Middle click, Shift + insert.
Clipboard
Более современный буфер обмена. Копирование в Clipboard: Ctrl + C. Вставка из Clipboard: Ctrl + V.
Secondary
Используется реже и имеет меньшее значение в повседневной работе. Его использование зависит от конкретных приложений и инструментов.
Работа с буферами обмена через утилиту xsel:
Зачистка clipboard буфера:
$ xsel -b -c
Зачистка primary буфера:
$ xsel -p -c
Вставка в clipboard буфер:
$ echo "this is clipboard" | xsel -b -i
Вставка в primary буфер:
$ echo "this is primary" | xsel -p -i
———
@krxnotes2 280
Как смотреть журналы в Linux (dmesg, journalctl).
journalctl - системный журнал (читает
/var/log/journal).
Вывод в реальном времени:
$ journalctl -f
Отобразить сегодняшние записи:
$ journalctl -S today
Вывести только err уровень:
$ journalctl -S today -p err
err, warning уровни:
$ journalctl -S today -p 3..4
Показывает журнал конкретного сервиса:
$ journalctl -u <name>.service
dmesg - системный журнал ядра (читает /var/log/kern.log или напрямую из ядра).
less вывод:
$ dmesg -H
Читабельный формат:
$ dmesg -T
Показывает уровень (приоритет):
$ dmesg -x
Вывод в реальном времени:
$ dmesg -w
В сумме:
$ dmesg -HTx
Зачистить dmesg:
$ dmesg -C
———
@krxnotes2 280
Как пользоваться утилитой strace.
Отследить работу процесса a.out:
$ strace a.out
Вывод в файл log:
$ strace -o my-log a.out
Отслеживание конкретного процесса:
$ strace -p <pid>
Отследить встроенную команду:
$ strace bash -c 'cd /tmp'
Например, команда 'mount -t nfs ...' возвращает отрицательный статус, можно проанализировать вывод утилиты strace.
$ strace -o mount.strace -s1024 -f -i -k -n mount -t nfs <path> <to-path>
Разбор:
-s1024 длина сообщений будет полная, а не обрезанная (32 длиной).
-f отслеживать дочерние процессы (если они будут созданы - fork()).
-i указатель инструкции во время системного вызова.
-k трассировка выполнения отслеживаемых процессов.
-n номера системных вызовов.
Данные трюки я использовал при отладке ПО. Работая системным программистом часто приходилось пользоваться strace. Если strace не работает, можно обратиться к файлу /proc/sys/kernel/yama/ptrace_scope, про него описано в man 2 ptrace.
———
@krxnotes2 280
Ричард Столлман считает, что закрытое ПО приведет мир к тотальной слежке и бесконтрольной передаче данных 3 лицам. Он считает, что закрытые программы ограничивают свободу пользователей и подвергают их контролю со стороны разработчиков.
"Программное обеспечение, которое не является свободным, это инструмент контроля над нами. Это нас унижает и лишает свободы". Это война с корпорациями зла Google, Microsoft. Не стоит закрывать глаза на дыры в своей безопасности. Данные, информация, это очень важно.
Ричард Столлман неоднократно подвергался давлению среди данных корпораций. Он невыгоден системе. Американское сообщество натравили на него ЛГБТ сообщества, лесбиянок, геев, трансгендеров, и пытались добиться его ухода из сообщества СПО. Отличный пример того как работает американская система.
———
@krxnotes
2 280
GNU GPL License и коммерческие компании (продажа).
Если компания взяла программу под GNU GPL лицензией, внесла в неё изменения и начала продавать, но при этом ограничила доступ к своим измененным исходным кодам, она нарушает принципы данной лицензии. GNU GPL обязывает распространять исходный код программы и любые изменения к нему под той же лицензией, чтобы сохранить свободу программы для всех пользователей. Такие действия могут привести к правовым последствиям и претензиям со стороны сообщества свободного программного обеспечения. Для коммерческого ПО открывать исходники всем - это не принято, НО придется бесплатно предоставлять исходники проекта конечным получателям, даже если вы распространяете продукт за деньги. Да, продажа программы лицензией вполне разрешена. Предоставлять исходники можно как вместе с программой, так и отдельно.
———
@krxnotes
2 280
GNU GPL License (General Public License).
Это свободная лицензия, которая позволяет свободно использовать, изменять и распространять программное обеспечение. Она устанавливает условия, при которых можно использовать программу и ее исходный код. Свободное использование в контексте GNU GPL лицензии означает, что пользователи имеют право свободно запускать программу в любых целях, изучать ее и изменять по своему усмотрению, а также распространять ее исходный код или измененные версии программы.
Использование GNU GPL лицензии позволяет разработчикам и пользователям программного обеспечения свободно обмениваться идеями, улучшать и дополнять программы, а также создавать новые продукты на их основе. Это способствует развитию открытого и свободного программного обеспечения, а также способствует распространению знаний и технологий.
Пользователи, которые получили программу под GNU GPL лицензией и внесли изменения в исходный код программы, обязаны предоставить доступ к своим изменениям исходного кода. Это означает, что они должны распространять свои измененные версии программы также под GNU GPL лицензией и предоставить доступ к своему исходному коду другим пользователям. Этот принцип обеспечивает сохранение свободы программы и позволяет другим разработчикам изучать, улучшать и распространять эти изменения.
———
@krxnotes
2 280
Интересные мысли из лекций Ричарда Столлмана.
Кто задает инструкции вашему компьютеру ? Пользователь или корпорации ? В большинстве случаев CPU обрабатывает огромное кол-во инструкций необходимых именно корпорациям, а не пользователю. ПК не подчиняется вашим инструкциям. ПК выполняет пользовательские инструкции в той мере, в которой ему позволяют корпорации. Либо пользователь контролирует программы, либо программы контролируют пользователя. Корпорации превращают пользовательские данные в звонкую монеты, они жадные, и найдут способы как саботировать пользователя и создать из этого прибыль. Большие компании делают большие деньги контролируя пользователей.
С закрытым ПО программист вряд ли чему-то научится, а с СПО все иначе. Программисты анализируют и дезасамблируют закрытое ПО чтобы затем написать открытое ПО. Это ужасно нелогично и затрагивает большое количество времени (это тяжелая работа). В нашей жизни компьютеры стали настолько важны, что свобода ПО стоит на первом месте по решению проблем/задач, это необходимость.
Хороший пример с человеческим организмом, люди контролируют свое питание, прием жидкости, витаминов, фруктов и т.д, а почему вычисления компьютера нельзя контролировать ? Это несправедливо. Корпорации чувствуют власть над пользователями и поэтому злоупотребляют ей, они лучше знают как надо пользователю (видите ли), они постоянно испытывают искушение плохо обращаться с пользователями, таким образом корпорации внедряют различные зловредные функции (шпионаж) и пользователи не смогут это исправить, ведь ПО несвободное. В проприетарном ПО слежка уже является нормой. Windows, Mac OS, Android, IOS, Amazon - главные шпионы. Но люди все равно будут соглашаться на слежку, потому что уже не представляют свою жизнь без этих коммерческих продуктов.
Данные пользователей отправляются на сервер, который контролирует корпорация. Затем корпорация может извлекать от туда данные и делать с ними все что угодно, например, продавать другим компаниям (рекламным) и т.д. Если производитель закрытого ПО закроет свои сервера, пользователь не сможет пользоваться приложениями без них. Потому что данные передаются круглосуточно.
Почему корпорации делают все вышеописанное ? Что дает им мотивацию ? Прибыль, деньги. На слежке, на контроле пользователей можно делать деньги, и они это отлично понимают. Иногда корпорации творчески притворяются, что уважительно относятся к пользователю, но это не так, это уловка.
Свободное ПО, как правило, честное.
А проприетарное ПО, как правило, вредоносное.
Сейчас не нужно через силу заставлять людей внедрять чипы, чтобы следить за ними, они и сами это сделают за бесплатные услуги корпораций. Нас подсаживают на бесплатные облака, музыку, фильмы и т.д. Нужно бороться ...
———
@krxnotes
2 280
Ричард Столлман является основателем движения свободного ПО (СПО). Автор концепции «копилефта», призванной защищать идеалы движения; эту концепцию он с помощью юристов позже воплотил в лицензии GNU General Public License (GNU GPL) для ПО. Ранее также известный программист. Из авторских программ можно отметить GNU Emacs, Коллекция компиляторов GNU (GCC) и Отладчик GNU (GDB). С середины 1990-х годов Столлман стал программировать значительно меньше, посвятив себя распространению идей свободного ПО.
———
@krxnotes
2 280
В мейнтейнерской среде часто используется инструмент eatmydata для ускорения установки пакетов и выполнения операций. Этот инструмент позволяет временно отключить синхронизацию данных на диске, что может значительно ускорить выполнение операций ввода-вывода. eatmydata обходит использование системных вызовов, связанных с синхронизацией данных на диске, таких как fsync(), fdatasync() и msync(). Он также может обходить вызовы, связанные с блокировками файлов, такие как flock().
Однако, следует помнить, что использование eatmydata может повлечь за собой потерю данных в случае аварийного отключения компьютера или других проблем. Поэтому его использование следует рассматривать с осторожностью и только в тех случаях, когда ускорение работы действительно необходимо. (
man 1 eatmydata)
$ sudo apt-get install eatmydata
$ eatmydata apt-get install <a lot of packages>
———
@krxnotes2 280
Только владелец должен иметь доступ, достаточный для полноценной работы с файлами и каталогами, а остальные вообще не должны иметь прав. Эту ситуацию можно исправить изменением маски. Я рекомендую установить ее в 077. В этом случае для каталогов права будут определены так: 777 - 077 = 700 (drwx------), а для файлов: 666 - 077 = 600 (или -rw-------). Тогда доступ к файлу имеет только владелец. Все остальные - отдыхают.
Выдержка из книги Linux глазами хакера, 4 издание - Михаил Фленов.
Можно прописать в
.profile или .bashrc:
# set 077 umask for the user
# files -> 600 (rw-------)
# directories -> 700 (rwx------)
# for all users need change /etc/profile
# https://wintelguy.com/umask-calc.pl
(( $(umask) != 077 )) && umask 077
———
@krxnotes2 280
Какую основную оболочку рабочего стола вы используете в Linux ?
2 280
Репозитории и зеркала. Что это и в чем разница.
Репозиторий - это сервер или хранилище, где хранятся пакеты программного обеспечения для операционной системы.
Зеркало (mirror) - это копия репозитория, распределенная по различным серверам или местоположениям для обеспечения быстрого доступа и загрузки пакетов пользователями. Зеркала позволяют распределять нагрузку, обеспечивать отказоустойчивость и улучшить скорость загрузки пакетов.
Другими словами. Репозитории - это оригинальные хранилища кода, где хранится и отслеживается разработка проекта. Зеркала - это копии репозиториев, которые могут использоваться для ускорения скачивания или для обеспечения надежности доступа к коду.
———
@krxnotes
2 280
Скачивая свежий образ Debian я часто вижу CD/DVD термины, в чем разница и какой выбрать ? Разница между ними заключается в количестве программного обеспечения, которое включено в них.
CD (Net) образ содержит минимальное количество пакетов и программного обеспечения, необходимых для установки базовой системы Debian. Этот образ обычно используется для установки базовой системы и последующего скачивания дополнительных пакетов из Интернета во время установки.
DVD образ, напротив, содержит гораздо больше пакетов и программного обеспечения, включая множество дополнительных утилит, программ и драйверов. Этот образ обычно используется для установки полной версии Debian сразу с большим количеством программного обеспечения.
———
@krxnotes
2 280
Меня очень мотивирует эта мысль: Поскольку Debian не тратит деньги на маркетинговые и рекламные компании, пользователи дистрибутива играют главную роль в его продвижении, распространяя славу о нём из уст в уста.
Выдержка из книги Настольная книга администратора Debian. Книга будет полезна системным администраторам Debian и сопровождающим deb пакетов.
———
@krxnotes
2 280
Немного про man, как осуществлять поиск по ключевым словам, как пользоваться.
1. Главные пользовательские команды
2. Системные вызовы
3. Библиотека функции С
4. Устройства и сетевые интерфейсы
5. Формат файла
6. Игры
7. Смешанные файлы
8. Стандартные операции ядра Linux
Для создания man используется определенный синтаксис, язык. Маны хранятся обычно в сжатом виде
.gz по пути /usr/share/man/*
Для того чтобы узнать какой man предоставляет утилита:
$ whatis stdout
Поиск по ключевому слову, примеры:
$ man -k unistd
$ man -K PRIx32
$ man -wK PRIx32
$ man -k '[a-z]' | grep '(3)'
$ man -f open
$ man 0 stdio.h
$ man 3 stdio
Поиск. Искать во всех man, которые касаются системных вызовах по ключевому слову change.
$ man -k [a-z] | grep '(2)' | grep 'change'
Если мануалов мало, можно осуществить обновление базы данных, подтянуть новое:
$ sudo mandb
———
@krxnotes2 280
Частый вопрос на позицию системного Linux программиста.
В Linux нет технологии которая бы позволяла залезть процессу в память другого процесса. Но почему это может GDB (GNU Debugger) ? Это возможно благодаря тому, что GDB использует отладочные интерфейсы ядра Linux (например, ptrace (системный вызов -> man 2 ptrace)), которые позволяют отслеживать и изменять состояние других процессов, включая доступ к их памяти для чтения и записи. Таким образом, хотя само ядро Linux не предоставляет прямого доступа к памяти других процессов, GDB может использовать специальные механизмы для отладки и анализа процессов.
Файл /proc/sys/kernel/yama/ptrace_scope контролирует степень безопасности работы ptrace.
- Значение 0: Разрешает отладку всех процессов
- Значение 1: Разрешает отладку только процессов с тем же UID
- Значение 2: Запрещает отладку процессов с другим UID
———
@krxnotes
2 280
Что такое ГОСТ ?
Это государственный стандарт. Криптографические алгоритмы, разработанные в СССР и используемые для защиты информации. Они включают в себя алгоритмы шифрования, хеширования, электронной подписи и другие методы защиты данных. ГОСТ алгоритмы были широко использованы в России и других странах бывшего Советского Союза, и многие из них все еще остаются популярными в сфере информационной безопасности.
Если касаться криптографии, то военные не любят пользоваться импортными методиками, для них лучше ГОСТ шифрование, сертифицированное (криптопро и подобное).
Некоторые из наиболее известных ГОСТ алгоритмов, которые могут быть использованы с помощью OpenSSL, включают в себя:
* ГОСТ 28147-89 (Magma) * ГОСТ Р 34.10-2012 (GOST R 34.10-2012) * ГОСТ Р 34.11-2012 (GOST R 34.11-2012)
$ openssl ciphers -v | grep GOST
Если нет ГОСТ шифров, необходимо собрать openssl с поддержкой данных шифров.
———
@krxnotes2 280
Когда пользователь удаляет файл в Linux, сам файл не удаляется полностью. Вместо этого лишь удаляется его запись в индексе файловой системы, и пространство, которое он занимал, помечается как доступное для записи. Фактическое содержимое файла остается на месте и может быть легко восстановлено, пока на это место не будет записана новая информация. Чтобы этого избежать можно перезаписать область памяти нулями или случайными числами.
Можно использовать shred для HDD дисков (для SSD это не актуально), он перезапишет содержимое файла случайными числами перед удалением. И если восстановить файл, то его невозможно будет прочитать. Важно заметить, что перезапись файлов удлиняет интервал удаления файла, делает этот процесс более медленным.
Добавить нули перед удалением файла, перезаписать 4 раза:
$ shred -uzn 4 file-with-secrets.txt
Можно посмотреть как это работает:
$ echo "hello world" > my-new-file.txt
$ shred -n 4 my-new-file.txt
$ cat my-new-file.txt
В выводе будет абракадабра (это получит хакер, который восстановит секретный файл с диска).
Можно еще добавить alias для этого:
alias rmf='shred -uzn 4'
Уничтожить весь диск:
$ shred /dev/<device>
shred не работает с каталогами, для них можно использовать wipe:
$ wipe -rf <dir>
shred не эффективен для файловых систем AIX, JFS, XFS, Ext3 и NFS из-за определенных особенностей и способа их работы.
———
@krxnotes2 280
Существует масса пакетов, которые тянут за собой зависимости, они называются Recommends. Например, в пакете neofetch есть рекомендации без которых пакет и так отлично работает. Не хотелось бы засорять систему. Как сделать так, чтобы не ставились рекомендованные пакеты ?
$ sudo apt-get install neofetch --no-install-recommends
———
@krxnotes2 280
Если в
/etc/apt/sources.list прописаны несколько deb-src разных релизов, например (sid, bookworm, bullseye, buster и т.д) и необходимо скачать последнюю версию пакета (например) из buster, можно сделать:
Узнаем какие версии пакета доступны:
$ apt-cache madison mc
Получить версию 3:4.8.22-1 (последняя) из buster:
$ apt-get source mc=3:4.8.22-1
Произойдет скачивание исходных пакетов mc из buster.
———
@krxnotes
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
