Команды Linux, которые я использую чаще всего

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

Перемещение и обзор

cd /var/log          # перейти в папку
cd -                 # вернуться туда, где был до этого — удобно
ls -la               # всё содержимое с правами и владельцами
pwd                  # где я вообще
tree -L 2 /opt       # дерево на два уровня (если tree не стоит: apt install tree)

Создание и удаление

mkdir -p /opt/apps/site/releases   # -p создаёт всю цепочку папок сразу
cp -r site site.bak                # копия папки
mv site site_old                   # переименование/перенос — же команда
rm -rf site_old                    # удаление без вопросов. Вот с этой я один раз «потерял» продакшен-конфиг на хосте — с тех пор перед rm -rf делаю ls в ту же строку: сначала смотрю, потом стираю

Пользователи и группы

useradd -m -s /bin/bash deploy    # создать пользователя с домашней папкой и нормальным шеллом
passwd deploy                     # задать пароль
usermod -aG docker deploy         # ДОБАВИТЬ в группу (-a обязателен! без него usermod перезапишет все группы — обжёгся)
groups deploy                     # проверить, в каких группах состоит
groupadd developers               # создать группу
id deploy                         # uid, gid и все группы одной строкой

Права

chmod 644 index.html      # владельцу всё, остальным чтение
chmod 755 script.sh       # владельцу выполнение, остальным чтение+выполнение
chmod -R 700 ~/.ssh       # рекурсивно
chown deploy:deploy /opt/apps/site   # владелец и группа
chown -R runner:runner /opt/apps/site

Три цифры — это владелец / группа / остальные: 4 чтение, 2 запись, 1 выполнение. 7 = всё, 6 = чтение+запись, 5 = чтение+выполнение, 4 = только чтение, 0 = ничего.

Важные ограничения, которые я запомнил «на своей шкуре»

chmod 600 ~/.ssh/id_rsa          # приватный ключ — ТОЛЬКО владелец. OpenSSH откажется работать с более мягкими правами: "UNPROTECTED PRIVATE KEY FILE"
chmod 644 ~/.ssh/id_rsa.pub      # публичный ключ — можно 644, он публичный
chmod 600 ~/.env                 # любые файлы с секретами
chmod 644 /etc/nginx/nginx.conf  # конфиги обычно 644, но с паролями внутри — 600

Смежное: если что-то «не работает» после копирования файлов с другой машины — первое, что проверяю, это ls -la. В девяти случаях из десяти владелец оказался root, а должен быть сервисный пользователь.