Всем привет!
Наверное, мало кто любит проходить, или проводить собеседования, особенно второе, но, если приходится это делать, хочется что бы вопросы на нем были более “жизненными”, нежели “назовите все ключи команды ls” (сам использую 2-3, “в стрессе” вспомню еще 5-7) и, менее теоретическими, нежели “какими ключом шифруем а каким подписываем сообщение” (обычно эти операции скрыты за интерфейсом и сделать ошибку трудно)
Потому, хочу поделиться подходящими задачками, из своей практики:
Вопрос 1. Объясните вывод на экране, что будет, если повторить команду в третий раз, как избежать такого поведения?
# cp -r /etc /etc_copy # du -hs /etc_copy 5.0M /etc_copy # cp -r /etc /etc_copy # du -hs /etc_copy 10M /etc_copy
Осознал этот забавный факт при очередной итерации развертывая kubernetes через kubespray https://github.com/kubernetes-sigs/kubespray/tree/release-2.25
Вопрос 2. Команде ping необходимы права для открытия raw socket https://man7.org/linux/man-pages/man7/raw.7.html, почему это не мешает ее использовать “обычным” пользователям?
С времен FreeBSD был уверен, что для этого используется setuid бит, но, оказалось, что в Linux не так:
student@debian:~$ ls -l $(which ping) -rwxr-xr-x 1 root root 90568 Nov 27 2022 /usr/bin/ping
Обнаружил это, разбираясь, почему не работает модуль icmp в prometheus/blackbox_exporter https://github.com/prometheus/blackbox_exporter, с тех пор стараюсь не забывать про POSIX capabilities https://man7.org/linux/man-pages/man7/capabilities.7.html и cap_net_raw, в частности
Вопрос 3. Объясните, почему повторный запуск команды приводит к сообщению Permission denied?
debian# tcpdump -niany -w file.dmp not port 22 ... 4 packets received by filter 0 packets dropped by kernel debian# tcpdump -niany -w file.dmp not port 22 ... tcpdump: file.dmp: Permission denied
Расследование приведет к знакомству с AppArmor https://apparmor.net/ - реализацией Linux Security Modules https://en.wikipedia.org/wiki/Linux_Security_Modules
Вопрос 4. Объясните вывод на экране:
student@server:~$ su Password: server:/home/student# shutdown bash: shutdown: command not found
Несколько раз встречал такую ошибку на занятиях https://www.specialist.ru/vendor/unix, что позволяло еще раз рассказать про переменные окружения, команду “su -” и, что лучше вместо нее использовать sudo
Наверное, достаточно задачек из моего субъективного опыта, буду рад, интересным примерам из Вашего, в комментариях, Спасибо!