Урок 5 из 8 · 25 мин · обновлено
Как устроен Linux: файлы, права, процессы и службы
Как устроена файловая система Linux и где что лежит, как работают пользователи, группы и права доступа rwx, что такое процессы и как их смотреть и останавливать, как управлять службами через systemctl и где читать журналы.
Одно дерево папок
В Windows есть диски C:, D:. В Linux — одно дерево, которое начинается с корня /. Все диски и устройства подключаются в его ветки.
| Папка | Что там |
|---|---|
/etc |
настройки системы и служб |
/home |
домашние папки пользователей: /home/anna |
/root |
домашняя папка администратора |
/var/log |
журналы — логи системы и программ |
/var/www |
часто — файлы сайтов |
/tmp |
временные файлы, обычно очищаются при перезагрузке |
/usr/bin |
программы |
Знать это дерево нужно, чтобы сразу понимать, где искать: сломался веб-сервер — смотрим его настройки в /etc и журналы в /var/log.
Пользователи и группы
В Linux каждый файл и каждый процесс принадлежит пользователю. Пользователей объединяют в группы — например, все сотрудники бухгалтерии.
- root — администратор с полными правами. Под ним можно сломать что угодно одной командой, поэтому постоянно под root не работают.
- Обычный пользователь работает со своими файлами, а для административных действий использует
sudo.
whoami # под каким пользователем я работаю
id # мои группы
sudo adduser ivan # создать пользователя
sudo usermod -aG sudo ivan # дать пользователю право использовать sudo
Права доступа
Команда ls -l показывает права:
-rw-r--r-- 1 anna staff 1024 окт 21 10:00 report.txt
drwxr-x--- 2 anna staff 4096 окт 21 10:00 private
Первый символ: - — файл, d — папка. Дальше три тройки прав:
- владелец —
anna; - группа —
staff; - остальные — все прочие.
Буквы: r — читать, w — изменять, x — выполнять файл или входить в папку. Прочерк — права нет. Файл report.txt: владелец читает и пишет, остальные только читают. Папка private: владелец всё, группа может войти и прочитать, остальные — ничего.
Права меняют командой chmod:
chmod u+x backup.sh # владельцу — право запускать
chmod o-r report.txt # остальным — убрать право чтения
chmod 640 report.txt # числом: rw- для владельца, r-- для группы, --- для остальных
В числовой записи r = 4, w = 2, x = 1, а цифры складывают: 6 = 4 + 2 — чтение и запись.
Процессы
Каждая запущенная программа — процесс со своим номером, PID.
ps aux # все процессы
top # процессы в реальном времени: кто грузит процессор и память, выход — q
kill 1234 # попросить процесс с номером 1234 завершиться
kill -9 1234 # завершить принудительно, если не слушается
Службы и журналы
Служба — программа, которая работает в фоне постоянно: веб-сервер, SSH, база данных. В большинстве современных дистрибутивов ими управляет systemd:
sudo systemctl status nginx # состояние службы
sudo systemctl start nginx # запустить
sudo systemctl stop nginx # остановить
sudo systemctl restart nginx # перезапустить, например после изменения настроек
sudo systemctl enable nginx # запускать автоматически при загрузке
journalctl -u nginx # журнал службы
journalctl -u nginx -f # журнал в реальном времени
Когда служба не работает, порядок почти всегда такой: systemctl status — что с ней, journalctl — почему.
Попробуйте сами. Создайте скрипт hello.sh, который выводит дату и имя пользователя. Попробуйте запустить его, посмотрите на ошибку, дайте право на выполнение и запустите снова. Затем закройте доступ к скрипту для всех, кроме себя.
Решение
cd ~
echo 'echo "Сейчас: $(date), пользователь: $(whoami)"' > hello.sh
./hello.sh # Permission denied — нет права на выполнение
ls -l hello.sh # -rw-r--r-- — права x нет
chmod u+x hello.sh
./hello.sh # теперь работает
chmod 700 hello.sh # rwx для владельца, ничего для остальных
ls -l hello.sh # -rwx------
Ошибка Permission denied — одна из самых частых в Linux. Первым делом проверяйте права командой ls -l и пользователя — командой whoami.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Где в Linux обычно лежат файлы настроек системы и служб?
В /etc хранятся конфигурационные файлы: настройки сети, веб-сервера, пользователей.
-
Что означает запись -rw-r----- у файла?
После первого символа идут три тройки: владелец rw-, группа r--, остальные ---.
-
Служба nginx должна запускаться автоматически после перезагрузки сервера. Какая команда?
start запускает службу сейчас, enable — включает автозапуск при загрузке системы. Часто делают обе.