Права доступа в Linux
Триады rwx, числовая запись chmod и владельцы файлов.
Читаем ls -l: rwx по ролям
ls -l deploy.sh
# -rwxr-xr-x 1 alice dev 41 Aug 12 10:00 deploy.sh
# ^владелец ^группа ^остальные (r читать w писать x выполнять) Первый символ — тип (- файл, d каталог, l ссылка), дальше три триады: владелец, группа, остальные. На каталоге x значит «право войти», а r — лишь читать список имён.
chmod числами: 755, 644, 600
chmod 755 deploy.sh # rwxr-xr-x — скрипты, каталоги
chmod 644 notes.txt # rw-r--r-- — обычные файлы
chmod 600 id_rsa # rw------- — приватные ключи Каждая цифра — сумма прав одной роли: r=4, w=2, x=1; семёрка — всё, пятёрка — чтение и выполнение. chmod 777 «чинит» Permission denied ценой записи для любого процесса — не решение.
chmod буквами: u+x, g-w
chmod +x script.sh # исполняемый — самый частый вызов
chmod u+x tool.sh # x только владельцу
chmod g-w shared.txt # забрать запись у группы
./script.sh # запуск: ./ обязателен u владелец, g группа, o остальные, a все; + добавить, - забрать. Точка со слэшем при запуске обязательна: без ./ шелл ищет команду в PATH, а не в текущем каталоге.
chown: владелец и группа
sudo chown alice report.txt # сменить владельца
sudo chown alice:dev report.txt # владельца и группу
sudo chown -R alice:dev /srv/app # рекурсивно chmod меняет биты, chown — кому они принадлежат; менять владельца может только root. Связка «группа dev + права 640» — стандартный способ дать доступ команде, а не людям поодиночке.
umask: права по умолчанию
umask # 0002 — маска Ubuntu для пользователя
touch a.txt # получит 664 (666 − маска)
umask 027 # строже: новые файлы 640
touch b.txt # rw-r----- Новые файлы стартуют от 666, каталоги от 777, маска вычитает биты. На серверах обычна маска 0022 (файлы 644); umask 027 закрывает файлы от посторонних с момента создания.