Использование символьного обозначения прав доступа
Хотя числовое обозначение лаконично, символьное обозначение может быть более интуитивно понятным, особенно когда вы хотите изменить только одно конкретное право. Символьное обозначение использует буквы для представления пользователя, группы и остальных, а также операторы для добавления или удаления прав.
В этом шаге вы создадите небольшой shell-скрипт, а затем добавите ему право на выполнение.
Сначала создадим новый файл скрипта с некоторым содержимым:
cd ~/project
echo '#!/bin/bash' > script.sh
echo 'echo "Hello, World"' >> script.sh
Эти команды делают две вещи:
- Первая команда
echo создает script.sh и записывает в него первую строку #!/bin/bash. Эта строка называется shebang, и она указывает Linux запускать скрипт с помощью Bash.
- Вторая команда
echo добавляет новую строку в конец файла с помощью >>. Она записывает echo "Hello, World", которая выведет Hello, World при запуске скрипта.
Вы можете убедиться, что файл теперь содержит две отдельные строки, с помощью:
cat script.sh
Вы должны увидеть:
#!/bin/bash
echo "Hello, World"
Теперь проверим его начальные права:
ls -l script.sh
Вы должны увидеть что-то вроде:
-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
Как видите, изначально скрипт имеет только права на чтение и запись для владельца и группы, и право на чтение для остальных. У него нет права на выполнение, которое необходимо для запуска его как программы.
Попробуем запустить скрипт:
./script.sh
Вы должны увидеть ошибку "Permission denied" (отказано в доступе), потому что у скрипта еще нет прав на выполнение. Часть ./ говорит оболочке выполнить скрипт, находящийся в текущем каталоге.
Теперь добавим право на выполнение для владельца с помощью символьного обозначения:
chmod u+x script.sh
В этой команде:
u относится к пользователю (владельцу). Другие варианты: g для группы, o для остальных и a для всех (пользователь, группа и остальные).
+x добавляет право на выполнение. Символ + добавляет право, а символ - удаляет его.
Таким образом, u+x означает "добавить право на выполнение для владельца".
Проверим изменения:
ls -l script.sh
Теперь вы должны увидеть:
-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
Теперь владелец имеет права rwx (чтение, запись и выполнение).
Теперь попробуем запустить скрипт снова:
./script.sh
На этот раз вы должны увидеть вывод:
Hello, World
Этот пример наглядно демонстрирует, почему нам нужно добавлять права на выполнение скриптам, а также разницу до и после добавления этих прав. Символьное обозначение позволяет легко изменять конкретные права без необходимости пересчитывать все числовое представление.