Как дать права на выполнение файла в Linux через chmod?
Написал скрипт deploy.sh, запускаю его и получаю «Permission denied». Погуглил — говорят, нужно дать права на выполнение через chmod. Как это сделать и что значат эти цифры 755?
2 ответа
Ошибка «Permission denied» при запуске скрипта обычно значит, что у файла нет права на выполнение. Его даёт команда chmod.
Самый простой способ — добавить право на выполнение:
chmod +x deploy.sh
+x = «добавить право execute (запуск)». После этого скрипт запустится:
./deploy.sh
(./ перед именем обязательно — говорит «запусти файл из текущей папки»).
Про цифры (755, 644). Права делятся на три группы: владелец / группа / остальные. Каждая цифра — сумма: read=4, write=2, execute=1.
chmod 755 deploy.sh→ владелец: 7 (4+2+1, читать+писать+запускать), группа и остальные: 5 (4+1, читать+запускать). Типично для скриптов и программ.chmod 644 file.txt→ владелец читает и пишет (6), остальные только читают (4). Типично для обычных файлов.
Посмотреть текущие права: ls -l deploy.sh — увидишь что-то вроде -rwxr-xr-x, где r=read, w=write, x=execute.
Частая ошибка: дать права, но запускать скрипт без ./ — просто deploy.sh. Тогда bash не найдёт его в системных путях и скажет «command not found». Для файла из текущей папки нужен префикс ./. И не давай скриптам chmod 777 «на всякий случай» — это означает «полные права всем», что небезопасно.
Шпаргалка по chmod:
chmod +x файл— добавить запуск (самое частое).chmod -x файл— убрать запуск.chmod 755 файл— стандарт для скриптов/программ.chmod 644 файл— стандарт для обычных файлов.
Логика цифр: 4=чтение, 2=запись, 1=запуск, складываешь нужное. 7=всё (4+2+1), 6=чтение+запись, 5=чтение+запуск. Три цифры = права для владельца, группы и всех остальных.