LinuxCamp | DevOps
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C
نمایش بیشتر📈 تحلیل کانال تلگرام LinuxCamp | DevOps
کانال LinuxCamp | DevOps (@linuxcamp_tg) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 13 926 مشترک است و جایگاه 9 160 را در دسته فناوری و برنامهها و رتبه 47 344 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 13 926 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 09 ژوئیه, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -116 و در ۲۴ ساعت گذشته برابر -26 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 21.35% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 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-Образование