Навигация по статье
В Linux я сам решаю, кому читать, кто может менять и запускать мои файлы. Всё, что нужно для этого — команда chmod. На первый взгляд система прав кажется запутанной, но если поймёшь принцип — всё просто и даже немного увлекательно.
Как chmod меняет права доступа
В Linux у каждого файла и папки есть свой комплект разрешений, который определяет, что с ними могут делать разные пользователи. Всего три категории: владелец, группа и все остальные.
Эти права управляют тем, кто может читать файл, вносить в него изменения или запускать (если это скрипт или программа). В случае папки — кто сможет войти в неё через cd и добавлять или менять её содержимое.
Чтобы изменить права, просто пользуюсь chmod. А если хочу узнать, какие права стоят сейчас — смотрю через команду ls с нужными опциями.
Смотрим и разбираем права доступа
Если добавить к ls флаг -l, получаем подробный список со всеми правами для файлов и папок.
Первый символ в каждой строке подскажет, что перед вами: обычный файл (тире -) или папка (буква d).
Следом идут девять символов, по три на каждую группу прав.
Внутри каждой тройки: r — чтение, w — запись, x — запуск. Если какое-то право не выдано, стоит тире (-).
На примере:
Строка, начинающаяся с d, — это каталог "archive" с владельцем "dave" и группой "dave".
Первая тройка символов — права владельца: всё разрешено (rwx) — читать, менять и запускать.
Вторая — права группы: r-x. То есть члены группы могут открывать и просматривать папку, но ничего не редактировать и не удалять.
Как получить шпаргалку по любой команде в терминале Linux
Иногда без подсказки не обойтись.
Третья тройка (r-x) — права всех остальных: они имеют доступ к просмотру и могут заходить в папку, но прав на изменения у них нет.
Если коротко: у dave — полный контроль, у остальных пользователей и группы — только просмотр и вход.
В других файлах (кроме скрипта mh.sh) у владельца и группы — права на чтение и запись, у "прочих" — только просмотр.
У скрипта mh.sh у владельца и группы разрешено всё, включая запуск, а у остальных — только чтение и запуск.
Синтаксис прав доступа: разбираюсь на практике
Чтобы сменить права через chmod, достаточно короткой команды, например u x — где "u" (user, кто), " " (добавить), и "x" (execute — разрешение на запуск).
За "кого" в chmod отвечают буквы:
Если не указывать категорию явно, chmod считает, что права выставляются для всех (a — all).
"Что сделать" обозначаем знаками:
"Какие права":
Как я настраиваю и меняю права доступа
Вот лежит, например, файл, для которого всем всё разрешено.
Мне нужно, чтобы у пользователя dave остались права на чтение и запись, а всем остальным — только чтение. Делаю так:
Знак "=" убирает все старые разрешения у выбранных категорий и выставляет только те, что указал.
Проверяю результат:
Видно, что старые права исчезли, остались только нужные.
А если мне хочется просто добавить разрешение и не ломать текущие настройки — это тоже легко.
Допустим, я дописал скрипт и теперь пора сделать его исполняемым для всех пользователей. Смотрим, какие права стоят сейчас:
Добавляю запуск для всех:
Теперь после проверки вижу: право на запуск появилось у всех, остальные права не изменились.
Кстати, можно было и без "a" (всем) — результат бы совпал.
Меняю права сразу у целой группы файлов
Очень удобно: изменить права можно у нескольких файлов одновременно.
Смотрю список файлов в каталоге:
Допустим, я хочу убрать право на чтение у всех "прочих" для файлов с расширением ".page". Пишу такую команду:
Проверяю результат:
Теперь "прочие" пользователи не увидят файлы ".page", а остальные файлы не затронуты.
Если нужно сделать изменения сразу во всех подпапках — пригодится флаг -R (рекурсивно).
Учти: команда изменит права только на те папки, что сами заканчиваются на ".page" — таких почти не бывает. Для настоящей рекурсии по всем подкаталогам я комбинирую chmod с find.
Управляю правами с помощью числовых кодов: проще не бывает!
Есть способ ещё короче: права можно задать всего тремя цифрами — по одной для владельца, группы и прочих. Первая цифра — владелец, вторая — группа, третья — остальные.
Каждая цифра — сумма: 4 (чтение), 2 (запись), 1 (запуск). То есть 5 (4 1) — это "читать и запускать", 2 — просто "писать".
Эти горячие клавиши ускорят работу в терминале Linux!
Работаю не тяжелее, а умнее!
В числовом варианте я всегда полностью заменяю права целиком, не добавляю. Например, чтобы владелец мог читать, писать и запускать — 7 (4 2 1), только запуск — 1. Введёшь 1 — оставишь только запуск, остальные права исчезнут.
Вернём "прочим" право на чтение в файлах ".page". Владелец и группа — чтение и запись (6), прочие — просмотр (4), команда 664:
Готово, права настроены как надо: у владельца и группы — как прежде, у "прочих" снова есть чтение.
Продвинутые возможности для особых случаев
Если открыть справку man chmod, найдете особые биты: SETUID, SETGID и "липкий" бит (sticky bit). Они используют в исключительных ситуациях, когда нужно что-то особенное.
Честно говоря, для большинства задач хватает базовых команд, описанных выше.
Linux-команды
Файлы
tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr
Процессы
alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Сетевые
netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru