N3Xus
root
n3xus@shadow:~$ cat ./bullshit/linux_tips_2026.md | wc -l
Всяка седмица някой публикува списък. "Десет трика за Linux, които не знаеш." Отваряш го и вътре иматайни htop, ncdu и как да смениш цвета на промпта.
Това не са тайни. Това е меню.
Истината е по-неудобна: Linux не крие нищо от теб. Всичко е файл, всичко е четимо, всичко е там от трийсет години. Просто никой не гледа.
> Системата е прозрачна. Непрозрачно е твоето внимание.
Ето четири неща, които са в системата ти точно в момента. Не са трикове. Не изискват инсталация на нищо модерно. Съществуват, откакто съществува ядрото.
И почти никой не ги ползва.
Дискът е пълен, но нищо не го пълни.
Класика. df казва, че си на 100 процента. du обикаля файловата система и не намира нищо. Рестартираш и мястото се връща.
Не е магия. Изтрил си файл, който процес още държи отворен. Ядрото не освобождава блоковете, докато дескрипторът е жив. Файлът е изчезнал от директорията и продължава да заема място.
> lsof +L1
Един ред. Показва всички отворени файлове с нула връзки към файловата система. Там е гигабайтът ти.
И по-хубавото: можеш да го върнеш.
Докато процесът държи дескриптора, файлът е достъпен през /proc. Не изтрит - недостъпен по име. Разликата е съществена.
Четири и половина гигабайта лог, който за всички е изтрит. Върнат с cp.
Файл, който root не може да изтрие.
Всички знаят chmod. Почти никой не знае chattr.
> chattr +i /etc/resolv.conf
Immutable атрибут. Файлът не може да бъде променен, преименуван, изтрит или свързан. От никого. Включително от root.
Единственият начин е да махнеш атрибута обратно. Тоест атакуващият трябва първо да знае, че съществува.
Проверяваш с lsattr. И ако някога си се чудил защо нещо отказва да се изтрие с Operation not permitted, докато си root - ето ти отговора.
Програми с права, за които не знаеш.
Всички гледат SUID битове. Capabilities са по-фина работа и се пропускат системно.
> getcap -r / 2>/dev/null
Изкарва всеки изпълним файл, на който е дадена отделна привилегия - да отваря сурови сокети, да променя собственост, да чете произволни файлове. Без да е SUID. Без да се вижда в ls.
Пусни го на своята машина и виж какво ще излезе. При повечето хора излизат неща, които не са слагали.
Тайните в паметта на чужд процес.
Ако някой стартира програма с парола в променлива на средата, тя остава там.
> tr '\0' '\n' < /proc/PID/environ
Четимо от собственика на процеса и от root. Показва средата в момента на стартиране, не текущата - но точно там сядат паролите, подадени при пускане.
Ако някога си подал credentials през environment variable, защото е било по-удобно от файл - това е причината да не го правиш пак.
Нито едно от тези неща не е скрито. Няма документация, която да ги пази в тайна. Няма ядро, което да ги заключва.
Те са непознати само защото се научават от повреда, а не от списък с трикове.
Затова и хората, които ги знаят, обикновено са ги открили в четири сутринта, докато нещо гори.
Ако искаш да ги научиш по-евтино - започни с това да гледаш какво има в системата ти, вместо да чакаш следващия списък.
n3xus@shadow:~$ ^C
Всяка седмица някой публикува списък. "Десет трика за Linux, които не знаеш." Отваряш го и вътре има
Това не са тайни. Това е меню.
Истината е по-неудобна: Linux не крие нищо от теб. Всичко е файл, всичко е четимо, всичко е там от трийсет години. Просто никой не гледа.
> Системата е прозрачна. Непрозрачно е твоето внимание.
Ето четири неща, които са в системата ти точно в момента. Не са трикове. Не изискват инсталация на нищо модерно. Съществуват, откакто съществува ядрото.
И почти никой не ги ползва.
Дискът е пълен, но нищо не го пълни.
Класика. df казва, че си на 100 процента. du обикаля файловата система и не намира нищо. Рестартираш и мястото се връща.
Не е магия. Изтрил си файл, който процес още държи отворен. Ядрото не освобождава блоковете, докато дескрипторът е жив. Файлът е изчезнал от директорията и продължава да заема място.
> lsof +L1
Един ред. Показва всички отворени файлове с нула връзки към файловата система. Там е гигабайтът ти.
И по-хубавото: можеш да го върнеш.
Докато процесът държи дескриптора, файлът е достъпен през /proc. Не изтрит - недостъпен по име. Разликата е съществена.
Code:
$ lsof +L1
COMMAND PID USER FD TYPE SIZE/OFF NLINK NAME
nginx 1847 www 12w REG 4831838208 0 /var/log/nginx/access.log (deleted)
$ ls -l /proc/1847/fd/12
l-wx------ 1 root root 64 Sep 14 03:12 /proc/1847/fd/12 -> '/var/log/nginx/access.log (deleted)'
$ cp /proc/1847/fd/12 /tmp/recovered.log
$ wc -l /tmp/recovered.log
19483022 /tmp/recovered.log
Четири и половина гигабайта лог, който за всички е изтрит. Върнат с cp.
Файл, който root не може да изтрие.
Всички знаят chmod. Почти никой не знае chattr.
> chattr +i /etc/resolv.conf
Immutable атрибут. Файлът не може да бъде променен, преименуван, изтрит или свързан. От никого. Включително от root.
Единственият начин е да махнеш атрибута обратно. Тоест атакуващият трябва първо да знае, че съществува.
Проверяваш с lsattr. И ако някога си се чудил защо нещо отказва да се изтрие с Operation not permitted, докато си root - ето ти отговора.
Програми с права, за които не знаеш.
Всички гледат SUID битове. Capabilities са по-фина работа и се пропускат системно.
> getcap -r / 2>/dev/null
Изкарва всеки изпълним файл, на който е дадена отделна привилегия - да отваря сурови сокети, да променя собственост, да чете произволни файлове. Без да е SUID. Без да се вижда в ls.
Пусни го на своята машина и виж какво ще излезе. При повечето хора излизат неща, които не са слагали.
Тайните в паметта на чужд процес.
Ако някой стартира програма с парола в променлива на средата, тя остава там.
> tr '\0' '\n' < /proc/PID/environ
Четимо от собственика на процеса и от root. Показва средата в момента на стартиране, не текущата - но точно там сядат паролите, подадени при пускане.
Ако някога си подал credentials през environment variable, защото е било по-удобно от файл - това е причината да не го правиш пак.
Нито едно от тези неща не е скрито. Няма документация, която да ги пази в тайна. Няма ядро, което да ги заключва.
Те са непознати само защото се научават от повреда, а не от списък с трикове.
Затова и хората, които ги знаят, обикновено са ги открили в четири сутринта, докато нещо гори.
Ако искаш да ги научиш по-евтино - започни с това да гледаш какво има в системата ти, вместо да чакаш следващия списък.
n3xus@shadow:~$ ^C