✅ Решения — Права доступа и bash-скрипт

К оглавлению урока

⚡ Краткие ответы

  • chmod 644 file.txtrw-r--r--: владелец читает+пишет, остальные только читают
  • chmod a+x script.sh → добавляет выполнение всем (владелец + группа + остальные)
  • Минимальный скрипт: #!/bin/bash + echo "Hello $name" + date

Решение 1. chmod 644 file.txt

644 = 6 (владелец) + 4 (группа) + 4 (остальные):

  • 6 = 4+2 = r+w → владелец может читать и писать
  • 4 = r → группа может только читать
  • 4 = r → остальные могут только читать

Строка в ls -la: -rw-r--r--

chmod 644 file.txt
ls -la file.txt
# -rw-r--r--  1 alice devs  512 Jun 11 10:00 file.txt

644 — стандартные права для текстовых файлов, конфигураций, HTML.

Решение 2. chmod a+x script.sh

a = all = u (владелец) + g (группа) + o (остальные). +x = добавить право выполнения.

Если до команды было -rw-r--r-- (644), то после будет -rwxr-xr-x (755):

ls -la script.sh
# -rw-r--r--  1 alice devs  128 Jun 11 10:01 script.sh

chmod a+x script.sh

ls -la script.sh
# -rwxr-xr-x  1 alice devs  128 Jun 11 10:01 script.sh

chmod a+x эквивалентно chmod +xa подразумевается по умолчанию.

Решение 3. Первый bash-скрипт

Создаём файл через nano:

nano script.sh

Содержимое файла:

script.sh

#!/bin/bash
echo "Hello, Linux!"
date

Сохраняем: в nano — Ctrl+O, Enter, Ctrl+X. В vi — Esc, :wq.

Делаем исполняемым и запускаем:

chmod +x script.sh
./script.sh
# Hello, Linux!
# Wed Jun 11 10:05:00 UTC 2025

Решение 4. Переменная в скрипте

script.sh

#!/bin/bash
# Скрипт приветствия с переменной
name="Andrew"
echo "Hello $name"
date
chmod +x script.sh
./script.sh
# Hello Andrew
# Wed Jun 11 10:06:00 UTC 2025

Важные правила переменных в bash:

  • name="Andrew" — пробелов вокруг = НЕТ (иначе ошибка)
  • $name — для чтения значения нужен $
  • "Hello $name" — двойные кавычки раскрывают переменную; одинарные — не раскрывают

Три способа запуска: сравнение

# Способ 1: ./script.sh  — запускает через shebang (#!/bin/bash)
# Требует: chmod +x script.sh
./script.sh

# Способ 2: полный путь  — аналогично способу 1
/home/alice/script.sh

# Способ 3: bash script.sh  — явно указываем интерпретатор
# НЕ требует chmod +x, но обходит права на исполнение
bash script.sh
Способ 3 (bash script.sh) обходит биты прав. Если скрипт «работает» через bash script.sh, но не через ./script.sh — скорее всего, вы просто забыли сделать chmod +x.