LinuxCamp | DevOps
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C
Показати більше📈 Аналітичний огляд Telegram-каналу LinuxCamp | DevOps
Канал LinuxCamp | DevOps (@linuxcamp_tg) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 13 926 підписників, посідаючи 9 160 місце в категорії Технології та додатки та 47 344 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 13 926 підписників.
За останніми даними від 09 липня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -116, а за останні 24 години на -26, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 21.35%. Протягом перших 24 годин після публікації контент зазвичай збирає 11.55% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 2 974 переглядів. Протягом першої доби публікація в середньому набирає 1 608 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 24.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як linuxcamp, ядро, linux, диск, docker.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование.
Админ (реклама): @XoDefender
Чат: @linuxcamp_chat
Менеджер: @Spiral_Yuri
Биржа: https://telega.in/c/linuxcamp_tg
РКН: https://clck.ru/3RWA3C”
Завдяки високій частоті оновлень (останні дані отримано 10 липня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
$ sudo visudo
Если кто-то уже редактирует файл, вы получите предупреждение с просьбой попробовать позже и, если вы допустили ошибки, файл просто не будет сохранен.
Также, утилита блокирует sudoers для того, чтобы никто не мог одновременно с вами его изменять.
Если вам не нравится дефолтный текстовый редактор, visudo позволяет его изменить. Команда распологает встроенным списком поддерживаемых редакторов.
Для того, чтобы переопределить редактор, достаточно объявить переменную окружения EDITOR:
$ export EDITOR=nano
Для того, чтобы изменения применялись постоянно, вам требуется прописать команду выше в файл .bashrc для пользователя.
Linux++ | IT-Образование
$ uname -r
6.8.0-41-generic
Но это далеко не единственный способ справиться с задачей. Мы можем посмотреть строку запуска Grub с помощью команды:
$ cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-6.8.0-41-generic
Тут в параметре BOOT_IMAGE мы можем видеть полный путь к образу, который был загружен.
В той же файловой системе proc есть файл version, где хранится версия ядра:
$ cat /proc/version
Linux version 6.8.0-41-generic
Дальше, чтобы получить ту же информацию мы можем посмотреть лог dmesg, в самом начале которого отображается версия ядра:
$ sudo dmesg | grep Linux
Linux version 6.8.0-41-generic
Ага, а как можно посмотреть общий список образов, которые установлены в системе?
Тут тоже есть несколько способов. Во-первых, можно использовать пакетный менеджер:
$ sudo dpkg -l | grep linux-headers | grep ii | awk '{print $3}'
$ sudo rpm -q kernel
Во-вторых, можно посмотреть содержимое папки boot и выловить от туда все образы ядра с именем vmlinuz:
$ ls /boot | grep vmlinuz
vmlinuz
vmlinuz-6.8.0-36-generic
vmlinuz-6.8.0-41-generic
В-третьих, используя тот же boot, а именно файл "/boot/grub/grub.cfg", можно посмотреть на все доступные версии:
$ grep 'menuentry \|submenu ' /boot/grub/grub.cfg | cut -f2 -d "'"
Ubuntu, with Linux 6.8.0-41-generic
Ubuntu, with Linux 6.8.0-41-generic (recovery mode)
Эта команда ищет строки, которые содержат слова menuentry либо submenu и передает их команде cat на вывод, которая, в свою очередь, предварительно прогоняет их через фильтр по разделителю (-f2 -d "'").
Linux++ | IT-Образование
$ chown hero:admins file
Утилита chmod, в свою очередь, определяет "rwx" биты для ресурса. Как мы знаем, бит 'r' разрешает чтение файла, 'w' отвечает за его изменение и 'x' за выполнение.
Мы можем сказать "Так, вот пользователь может все, а группа только читать файл!".
Для реализации нужно выполнить:
$ chmod u=rwx,g=r ./file
Также, вы наверняка видели использвание chmod с числовым аргументом, например "777".
Таким способом тоже можно выдавать права. Каждое число относится к отдельной касте (пользователь, группа, остальные).
Грубо говоря, число 7 описывает доступ "по всем фронтам" rwx. Если мы захотим добиться результата команды выше, только с числовым аргументом, нам потребуется:
$ chmod 740 ./file
1) для пользователя: 4 (чтение) + 2 (запись) + 1 (выполнение) = 7;
2) для группы: 4 (чтение) = 4;
3) для кого-то еще: ничего = 0;
Linux++ | IT-Образование
$ stat some_file
В результе вызова команды stat будет показано почти все, что можно узнать о целевом ресурсе, ввплоть до старшего и младшего номеров устройства, на котором хранится файл.
Давайте кратко рассмотрим часть информации, которую выдает stat:
1) File: /var/log/syslog - путь до ресурса, включая название;
2) Size: 15731467 - размер ресурса в байтах;
3) Blocks: 30736 - количесвто, выделенных под информацию блоков, расположенных на носителе;
4) Inode: 527906 - номер ресурса в таблице inode;
5) Links: 1 - количество жестких ссылок на ресурс;
Команда может анализировать и отдельные файловые системы. Для того, чтобы получить пулл данных, нам будет нужен флаг '-f':
$ stat -f /
Если указать в качестве аргумента файл, то информация выведется о файловой системе, на которой он расположен.
Также, если вам требуется через ссылку получить инфу о файле, на который она указывает, можно задействовать флаг '-L', смотрим:
$ stat -L link_to_file
Linux++ | IT-Образование
$ LD_LIBRARY_PATH=/usr/local/lib ./myapp
Определение переменных окружения
В большинстве оболочек значение может быть добавлено к среде с помощью команды export:
$ SHELL=/bin/bash
$ export SHELL
В примере выше, первой командой создается переменная оболочки, которая, без явного экспорта, не будет унаследована дочерним процессом. Второй вызов определяет переменную для окружения и помещает ее в среду процесса.
В оболочках bash и Korn можно воспользоваться следующей записью:
$ export SHELL=/bin/bash
Показанные выше команды навсегда добавляют значение к окружению оболочки, после чего это окружение наследуется всеми, создаваемыми оболочкой дочерними процессами. Переменная может быть в любой момент удалена командой unset:
$ unset VARIABLE_NAME
В оболочке Bourne shell и ее потомках (bash и Korn) для добавления значений к окружению выполняемой программы, может использоваться такой синтаксис:
$ NAME=value program
Определение будет добавлено к среде только того дочернего процесса, который выполняет указанную программу. Текущий список переменных среды выводится командой printenv:
$ printenv
LOGNAME=mtk
SHELL=/bin/bash
HOME=/home/mtk
PATH=/usr/local/bin:/usr/bin:/bin:.
TERM=xterm
Список переменных среды любого процесса можно изучить, обратившись к характерному для Linux "/proc/PID/environ":
$ cd /proc/2953
$ cat environ
HOME=/home/xodefenderLANG=en_US.UTF-8LOGNAME=xodefender
Обращение к среде из программы
Из программы на языке C, список переменных среды может быть доступен с помощью глобальной переменной environ. Как и argv, переменная environ содержит список указателей на строки, заканчивающиеся нулевыми байтами. Cам список заканчивается значением NULL:
#include <stdio.h>
extern char **environ;
int
main(int argc, char *argv[])
{
char **list;
for (list = environ; *list != NULL; list++) {
puts(*list);
}
exit(EXIT_SUCCESS);
}
Альтернативный метод обращения к списку переменных среды заключается в объявлении для функции main() третьего аргумента:
int main(int argc, char *argv[], char *envp[])
Отдельные значения из среды процесса извлекаются с помощью getenv():
#include <stdlib.h>
char *getenv(const char *name);
Linux++ | IT-Образование
zip [OPTIONS] ARCHIVE FILES
$ zip myfiles.zip book.pdf image.png
Команда unzip, наоборот, позволяет распаковать архив и в общем случае имеет следующий формат:
unzip [OPTIONS] ARCHIVE
$ unzip myfiles.zip
команды tar, gzip и gunzip
gzip (GNU zip) - архиватор файлов с расширением ".gz".
Данная команда не умеет упаковывать несколько файлов в один архив и используется для поштучного сжатия. Для каждого переданного экземпляра создается спрессованный ".gz" собрат:
# -k : сохраняет изначальный файл
$ gzip -k file1.txt file2.txt
gunzip - распаковщик архивов ".gz". Команда является эквивалентом для "gzip -d":
$ gunzip file.txt.gz
$ gzip -d file.txt.gz
Для упаковки нескольких файлов, их сначала необходимо архивировать в один через утилиту tar и уже потом сжать результат командой gzip.
tar - это утилита, которая используется для объединения нескольких файлов и директорий в один архив.
Сама по себе команда не сжимает файлы, а просто сохраняет их в один ".tar" файл.
Давайте рассмотрим комбо:
# -c : Создать новый архив
# -f : Указать имя создаваемого архива
$ tar -cf archive.tar file.txt
$ gzip archive.tar
Таким образом, сжатые архивы обычно имеют двойное расширение ".tar.gz" или сокращённое ".tgz".
Для того, чтобы распаковать архив, можно использовать флаг "-x":
$ tar -xf archive.tar
команда zcat
Команда zcat похожа, по сути, на cat и используется для вывода содержимого сжатых файлов формата ".gz" без необходимости их предварительной распаковки:
$ zcat file.txt.gz
Hello world
Linux++ | IT-Образование
mtk:x:1000:100:Michael Kerrisk:/home/mtk:/bin/bash
Рассмотрим эти поля по порядку следования:
1. Имя для входа в систему. Это уникальное имя, которое пользователь должен вводить при входе в систему - легко читаемый символьный идентификатор пользователя, соответствующий числовому (UID).
2. Зашифрованный пароль. В этом поле содержится 13-символьный зашифрованный пароль пользователя. Поскольку этот файл используется многими утилитами типа ls, чтобы отобразить владельца файла и другие подобные сведения, он должен быть открыт на чтение для всех, что, конечно, дает отличный шанс хакерам.
По этой причине, в настоящее время, поле пароля в /etc/passwd содержит букву 'x', чтобы обозначить, что пароль был назначен и сохранен в теневом файле /etc/shadow.
Если поле является пустым, значит, для регистрации под этой учетной записью пароль не нужен.
3. Числовой идентификатор пользователя (UID). Если поле хранит значение 0, то пользователь с данной учетной записью - привилегированный (суперпользователь).
Как правило, имеется только одна такая учетная запись, у которой в качестве имени для входа в систему используется слово root.
4. Числовой идентификатор первой из групп, в которую входит пользователь (GID). Дальнейшая принадлежность к группам этого пользователя определена в системном файле групп.
5. Комментарий. Это поле содержит текст, описывающий пользователя. Такой текст выводится различными программами, например finger.
6. Домашний каталог. Исходный каталог, в который пользователь попадает после входа в систему. Содержимое этого поля становится значением переменной среды HOME.
$ echo $HOME
/home/xodefender
7. Оболочка входа в систему. Это программа, которой передается управление после входа пользователя в систему. Обычно это одна из оболочек, например bash, но может быть и любая другая программа.
Если это поле является пустым, то в качестве исходной, применяется оболочка /bin/sh. Содержимое поля становится значением для переменной среды SHELL.
$ echo $SHELL
/bin/bash
Теневой файл /etc/shadow
Теневой файл паролей /etc/shadow был разработан, как средство противостояния хакерским атакам.
Замысел заключается в том, что вся неконфиденциальная информация о пользователе находится в открытом, доступном для чтения файле passwd, а зашифрованные пароли хранятся в теневом файле, доступном для чтения только программам с особыми привилегиями.
Файл /etc/shadow хранит данные о пользователе в формате. Как и в файле passwd, каждое поле в файле shadow отделяется двоеточием:
smithj:Ep6mckrOLChF.:10063:0:99999:7:::
1. Имя пользователя (до 8 символов). Совпадает по значению с /etc/passwd.
2. Зашифрованный пароль (13 символов). Пустая запись '::' показывает, что для входа пароль не нужен (обычно идея плохая).
3. Количество дней, начиная с 1 января 1970, когда пароль был сменен в последний раз.
4. Число дней до смены пароля (0, если он может быть сменен всегда).
5. Число дней, после которых пароль должен быть сменен (99999, если пользователь может не менять пароль фактически никогда).
6. Число дней, в течение которых пользователь получает предупреждения о необходимости пароль сменить (7 для полной недели).
7. Число дней после окончания действия пароля, когда еще можно работать. Если пароль не сменить, после данного срока он выдохнется, и аккаунт будет заблокирован.
8. Число дней, начиная с 1 января 1970, после которых пароль будет заблокирован.
9. Зарезервировано для возможного будущего использования.
Linux++ | IT-Образование