Права доступа в 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 закрывает файлы от посторонних с момента создания.

поделиться: Telegram VK

Что дальше