💻 Примеры — Права доступа и bash-скрипт

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

⚡ Минимальный пример

script.sh

#!/bin/bash
name="Andrew"
echo "Hello $name"
date
chmod +x script.sh
./script.sh

1. Просмотр прав — ls -la

ls -la

Типичный вывод:

total 28
drwxr-xr-x 2 alice devs 4096 Jun 11 10:00 .
drwxr-xr-x 5 alice devs 4096 Jun 11 09:00 ..
-rw-r--r-- 1 alice devs  512 Jun 11 10:00 file.txt
-rwxr-xr-x 1 alice devs  128 Jun 11 10:01 script.sh
-rw------- 1 alice alice  1234 Jun  8 12:00 id_rsa

Расшифровка строки -rwxr-xr-x:

  • - — обычный файл (не директория)
  • rwx — владелец: читать, писать, запускать
  • r-x — группа: читать, запускать (не писать)
  • r-x — остальные: читать, запускать (не писать)

2. Числовой chmod

# Скрипт: владелец всё, группа и остальные — читать+запускать
chmod 755 script.sh
ls -la script.sh
# -rwxr-xr-x  1 alice devs  128 Jun 11 10:01 script.sh

# Файл данных: владелец читает+пишет, остальные — только читают
chmod 644 file.txt
ls -la file.txt
# -rw-r--r--  1 alice devs  512 Jun 11 10:00 file.txt

# Приватный SSH-ключ: только владелец читает+пишет
chmod 600 ~/.ssh/id_rsa
ls -la ~/.ssh/id_rsa
# -rw-------  1 alice alice  1234 Jun  8 12:00 /home/alice/.ssh/id_rsa

3. Буквенный chmod

# Добавить право выполнения всем (a+x = u+x + g+x + o+x)
chmod a+x script.sh

# Добавить выполнение только владельцу
chmod u+x script.sh

# Убрать запись у группы и остальных
chmod go-w file.txt

# Точно установить права: владелец rw, группа и остальные r
chmod u=rw,go=r file.txt

# Убрать все права у остальных
chmod o= private.key

4. Первый bash-скрипт

Создайте файл с помощью nano script.sh или vi script.sh и введите следующее содержимое:

script.sh

#!/bin/bash
# Это мой первый bash-скрипт — комментарий
name="Andrew"
echo "Hello $name"
date

Строки:

  • #!/bin/bash — shebang: скажет системе запускать этот файл через /bin/bash
  • # Это мой первый bash-скрипт — комментарий, игнорируется при выполнении
  • name="Andrew" — переменная без пробелов вокруг = (важно!)
  • echo "Hello $name" — вывод строки, $name заменится значением переменной
  • date — вывод текущей даты и времени

5. Сделать исполняемым и запустить

# Шаг 1: сделать файл исполняемым
chmod +x script.sh

# Шаг 2: убедиться, что бит x появился
ls -la script.sh
# -rwxr-xr-x  1 alice devs  128 Jun 11 10:01 script.sh

# Шаг 3: запустить из текущей директории
./script.sh
# Вывод:
# Hello Andrew
# Wed Jun 11 10:01:00 UTC 2025

Три способа запуска

# Способ 1 (предпочтительный): ./имя_скрипта
./script.sh

# Способ 2: полный путь к скрипту
/home/alice/scripts/script.sh

# Способ 3: через интерпретатор (НЕ требует chmod +x)
bash script.sh

6. Bash-скрипт с переменной «Hello Имя»

Расширенная версия скрипта с переменной для имени:

script.sh

#!/bin/bash
# Скрипт приветствия с именем пользователя
name="Andrew"
echo "Hello $name"
echo "Current date and time:"
date
echo "You are running this script from: $(pwd)"
chmod +x script.sh
./script.sh
# Hello Andrew
# Current date and time:
# Wed Jun 11 10:05:00 UTC 2025
# You are running this script from: /home/alice

Команда $(pwd) — это подстановка команды: результат выполнения pwd встраивается прямо в строку echo.