GNU/Linux | Notes – Telegram
GNU/Linux | Notes
2.39K subscribers
111 photos
8 files
75 links
Open Source, Dotfiles, Debian/Ubuntu, Software, Linux, Scripts, Notes, Terminal, Shell, Gnu, Tools, Games, Fun, Free Software Movement.

Автор: Кирилл Рехов
Почта: krekhov.dev@gmail.com
Кто я: https://news.1rj.ru/str/krxnotes/246
GitHub: https://github.com/krekhovx
Download Telegram
exec

Пример:
$ exec $SHELL


Переменная окружения $SHELL имеет значение текущей оболочки по-умолчанию (ее путь), в моем случае это /bin/bash. Что делает exec? Он заменяет текущий процесс на новый, то есть заменяет текущий /bin/bash на новый /bin/bash. Таким образом, вы остаетесь в той же оболочке, но все предыдущие настройки и процессы текущей оболочки будут сброшены. Это может быть полезно для обновления или сброса окружения без необходимости открывать новый терминал. Например, мы изменили какие-то файлы окружения пользователя, допустим это /etc/bash.bashrc, чтобы не открывать новый терминал, можно просто запустить команду сброса/запуска нового /bin/bash после изменений.

#shell #utils
🔥633❤‍🔥2
alias & unalias

Список всех псевдонимов:
$ alias


Удалить псевдоним:
$ unalias <my-alias>


Удалить все псевдонимы:
$ unalias -a


Если псевдонимы прописаны в .bashrc, можно сделать:
$ exec $SHELL

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

#shell #utils
6🔥2
Почему /bin/sh

В различных проектах часто используют НЕ /bin/bash, а /bin/sh, почему? Он же старый!

/bin/sh или Dash (Debian Almquist Shell) - легковесная оболочка командной строки, предназначенная для замены более тяжеловесного Bash. Она была создана для ускорения процесса загрузки и выполнения скриптов в системе. Поэтому многие дистрибутивы Linux, такие как Debian и Ubuntu, используют Dash в качестве оболочки по умолчанию.

Скрипты, написанные на /bin/sh, обычно используются для максимальной переносимости между различными Unix-подобными операционными системами. Оболочка /bin/sh представляет собой стандартную оболочку командной строки в Unix-подобных системах, которая должна быть доступна на всех таких системах.

В то время как /bin/bash (Bourne-Again Shell) является расширенной оболочкой командной строки, которая предоставляет больше функций, чем /bin/sh. Она представляет собой улучшенную версию стандартной оболочки /bin/sh, что делает ее более мощной и удобной для использования. Когда скрипт написан на /bin/sh, он чаще всего будет работать на всех Unix-подобных системах, исключая специфичные возможности, предоставляемые /bin/bash. Но если в скрипте используются уникальные функции /bin/bash, то он может не работать на системах, где /bin/bash не является стандартной оболочкой. Поэтому использование /bin/sh в некоторых проектах может быть обусловлено требованием максимальной переносимости скрипта между различными Unix-подобными системами.

#shell #debian
11👍5😁2
Библиотечные функции и системные вызовы

Библиотечные функции
- верхний уровень, работает в пространстве пользователя, обеспечивает более удобный интерфейс к функциям, которые выполняют работу (системным вызовам). То есть библиотечные функции обращаются к системным вызовам.

Системные вызовы - работают в привилегированном режиме от имени ядра и предоставляются самим ядром. Например, библиотечная функция printf() формирует строку, в соответствии с заданным форматом, и передает ее низкоуровневому системному вызову write(), который и выводит строку на устройство стандартного вывода.

Цепочка: Программа обращается к библиотечным функциям, находясь в пользовательском режиме. Затем библиотечная функция обращается к системным вызовам. Системные вызовы уже работают в режиме привилегированном (являются частью ядра). Затем когда системный вызов завершает работу, он возвращает управление библиотечной функции и происходит обратный переход в пользовательский режим.

Unix производит переключение из пространства пользователя в пространство ядра всякий раз, когда приложение делает системный вызов или приостанавливается аппаратным прерыванием. Например, код модуля исполняется в пространстве ядра, а обычная программа, исполняется в пространстве пользователя (прикладное ПО).

#kernel #theory
55👍1🤝1
dotfiles-debian

В репозитории находятся различные конфигурации инструментов, которые я использую при разработке в окружении XFCE для Debian: bash, vim, vifm, mc, tmux, gdb, git, newsboat, dircolors, bash-completion, xfce4-terminal, различные цветовые схемы для терминала, .bash_aliases, .bashrc, локальные скрипты и т.д.

> GitHub

#shell #terminal #dotfiles #debian #info
6👎42👌1
Частый вопрос на позицию системного инженера Linux

В Linux нет технологии которая бы позволяла залезть процессу в память другого процесса. Но почему это может GDB (GNU Debugger)? Это возможно благодаря тому, что GDB использует отладочные интерфейсы ядра Linux (например, системный вызов ptrace), которые позволяют отслеживать и изменять состояние других процессов, включая доступ к их памяти для чтения и записи. Таким образом, хотя само ядро Linux не предоставляет прямого доступа к памяти других процессов, GDB может использовать специальные механизмы для отладки и анализа процессов.

Файл /proc/sys/kernel/yama/ptrace_scope контролирует степень безопасности работы ptrace.
- Значение 0: Разрешает отладку всех процессов
- Значение 1: Разрешает отладку только процессов с тем же UID
- Значение 2: Запрещает отладку процессов с другим UID

#kernel #theory #security
73🙏2👍1
umask

Только владелец должен иметь доступ, достаточный для полноценной работы с файлами и каталогами, а остальные вообще не должны иметь прав. Эту ситуацию можно исправить изменением маски. Я рекомендую установить ее в 077. В этом случае для каталогов права будут определены так: 777 - 077 = 700 (drwx------), а для файлов: 666 - 077 = 600 (или -rw-------). Тогда доступ к файлу имеет только владелец. Все остальные - отдыхают.

Выдержка из книги Linux глазами хакера, 4 издание - Михаил Фленов.

Можно прописать в ~/.bashrc для обычного пользователя:
# set a secure umask to 077
# files: 600 (rw-------)
# directories: 700 (rwx------)
umask 077


Ссылка на калькулятор: https://wintelguy.com/umask-calc.pl

#shell #books #security #dotfiles
👍12🔥2🤯2
😁1512👍8
GNU GPL License (General Public License)

Это свободная лицензия, которая позволяет свободно использовать, изменять и распространять программное обеспечение. Она устанавливает условия, при которых можно использовать программу и ее исходный код. Свободное использование в контексте GNU GPL лицензии означает, что пользователи имеют право свободно запускать программу в любых целях, изучать ее и изменять по своему усмотрению, а также распространять ее исходный код или измененные версии программы.

Использование GNU GPL лицензии позволяет разработчикам и пользователям программного обеспечения свободно обмениваться идеями, улучшать и дополнять программы, а также создавать новые продукты на их основе. Это способствует развитию открытого и свободного программного обеспечения, а также способствует распространению знаний и технологий.

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

#misc #opensource
64👍4
Debian философия

Debian
- это операционная система, основанная на свободном и открытом программном обеспечении. Философия Debian, известная как Debian Social Contract, включает в себя следующие принципы:

Свобода: Debian стремится к созданию операционной системы, которая полностью основана на свободном программном обеспечении. Это означает, что пользователи имеют право использовать, изучать, изменять и распространять программное обеспечение без каких-либо ограничений.

Независимость: Debian не зависит от коммерческих интересов или корпоративных спонсоров. Он остается независимым проектом, основанным на принципах свободного программного обеспечения.

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

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

#debian #opensource
19❤‍🔥7🥰4😁1🤣1
Сообщения каналу

Теперь канал принимает сообщения. Стоимость сообщения — 1 звезда.

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

#info
4🤔2🤣2💋1
Instagram

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

Всё, что вы видите в Instagram, — красиво. Это очень "глянцевая" социальная сеть, где любая идея может быть подана под привлекательным углом. Если вы не заметили, в Instagram почти нет настоящих, жизненных фотографий: всё тщательно фильтруется, ретушируется и подбирается для создания иллюзии идеальной жизни. Такая подача позволяет даже опасные и разрушительные мысли продвигать в массы, изменяя представления о морали и нравственности.

Например, некоторое время назад в Instagram активно пропагандировалась нездоровая женская худоба — это выглядело "красиво" и "трендово", и многие девушки по всему миру, насмотревшись этих постов, начинали изнурять себя диетами, следуя навязанным стандартам. Instagram формирует и продвигает свои стандарты "красоты", влияя на психику и самооценку миллионов людей, это опасный виртуальный сахар. И таких примеров куча!

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

- Кибербуллинг, травля и психологическое давление, особенно среди молодежи.

- Распространение фейковых новостей, мошеннических схем и рекламы сомнительных товаров (например, "волшебных" средств для похудения, чудо-диет и опасных челленджей).

- Продвижение наркотиков, запрещённых препаратов и нелегальных услуг через скрытые группы и сторис.

- Распространение порнографии, в том числе детской, несмотря на политику модерации.

- Вовлечение несовершеннолетних в опасные челленджи и флешмобы, которые могут привести к травмам или гибели.

- Формирование навязчивых комплексов и расстройств пищевого поведения из-за постоянного сравнения себя с искусственно "идеальными" образами.

- Нарушение приватности, слив личных данных и фотографий пользователей.

- Использование платформы для вербовки в радикальные группировки и секты.

- Продвижение азартных игр и мошеннических лотерей.

- Продвижение ЛГБТ-тематики, использование радужной символики, предоставление пространства для самовыражения представителей этого сообщества.

- Романтизация эскорт-услуг, создание глянцевого образа "содержанок" и популяризация идей о легком заработке через интимные отношения, что может подтолкнуть девушек к опасным и сомнительным решениям.

Кроме всего прочего, Instagram постепенно меняет представления пользователей о морали и нравственности. В этой социальной сети традиционные ценности часто подменяются новыми, навязанными нормами поведения. То, что ещё недавно считалось неприемлемым или аморальным, теперь может быть подано как что-то модное, безобидное или даже желательное.

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

#thoughts
👍2813👀5👎4😱3💊3😁2🤔2🤪2🗿2💯1
pushd / popd / dirs

Показывают всю красоту стека и его логику, например:
$ pushd ~/main
$ pushd ~/main/notes
$ dirs

~/main/notes ~/main ~

$ popd

~/main ~

#utils
7🤔4👍1
Git по умолчанию не отслеживает пустые папки

Чтобы добавить пустую папку:
$ touch dir/.gitkeep
$ git add dir/
$ git commit -m "add empty 'dir' folder"


Так git будет сохранять папку через наличие файла .gitkeep

#git
95👍4🆒1
Когда пользователь удаляет файл в 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 из-за определенных особенностей и способа их работы.

#utils #security
👍1871🔥1
Что такое ГОСТ?

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

Если касаться криптографии, то военные не любят пользоваться импортными методиками, для них лучше ГОСТ шифрование, сертифицированное (криптопро и подобное).

Некоторые из наиболее известных ГОСТ алгоритмов, которые могут быть использованы с помощью 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 с поддержкой данных шифров.

#utils #security
👍123🔥3👎1😁1
Немного про 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'


Если мануалов мало, можно осуществить обновление базы данных, подтянуть новое:
$ mandb


#utils
10👍4👌1