Linux и UNIX: программирование в shell. Руководство разработчика
Linux и UNIX: программирование в shell. Руководство разработчика читать книгу онлайн
Данная книга является практическим руководством по программированию интерпретатора Bourne shell -cтандартного командного интерпретатора в UNIX, полностью совместимого с интерпретатором BASH shell в Linux. Книга предназначена для начинающих и опытных программистов и содержит множество полезных примеров, советов и подсказок. С ее помощью читатель сможет быстро научиться создавать shell–сценарии для реальных задач и ситуаций, возникающих в большинстве систем UNIX и Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
chmod 2751
rwxr‑s--x
Для файла установлен бит SGID; владелец имеет право чтения, записи и выполнения; группа имеет право чтения и выполнения; другие пользователи имеют право выполнения
Для установки битов SUID и SGID можно также воспользоваться символьными
операторами команды chmod. Вот как это делается:
chmod u+s имя_файла — SUID
chmod g+s имя_файла — SGID
Заметьте, что команда chmod не выполняет проверку корректности установок. Даже если для файла установлен бит выполнения, это еще не означает, что мы имеем дело с программой или сценарием.
1.7. Команды chown и chgrp
Создав файл, вы автоматически становитесь его владельцем, но можете передать право владения другому пользователю, у которого есть запись в файле /etc/passwd. Только системный администратор либо фактический владелец может передавать права на файл другому пользователю. Если вы отказались от владения файлом, для того чтобы восстановить свои права на него, вам придется обратиться к системному администратору.
Для передачи прав владельца предназначена команда chown. Команда chgrp задает группу, которой принадлежит файл. Общий формат этих команд таков:
chown владелец файл chgrp владелец файл
Опция -R позволяет выполнить рекурсивное изменение файлов в указанном каталоге и всех его подкаталогах.
1.7.1. Пример использования команды chown
Вот как можно поменять владельца файла с помощью команды chown:
$ ls -l
-rwxrwxrwx 1 louise admin 345 Sep 20 14:33 project
$ chown pauline project
$ ls -l
-rwxrwxrwx 1 pauline admin 345 Sep 20 14:33 project
Право владения файлом project переходит от пользователя louise к пользователю
pauline.
1.7.2. Пример использования команды chgrp
Следующий пример демонстрирует, как поменять группу, которой принадлежит файл:
$ ls -1
-rwxrwxrwx 1 pauline admin 345 Sep 20 14:33 project
$ chgrp sysadmin project
$ ls -1
-rwxrwxrwx 1 pauline sysadmin 345 Sep 20 14:33 project
Пользователь pauline передал группе sysadmin право владения файлом project, которое до этого принадлежало группе admin.
1.7.3. Определение групп, в состав которых вы входите
Если вы хотите узнать, к какой группе принадлежите, введите команду groups:
$ groups
admin sysadmin appsgen general
либо воспользуйтесь командой id:
$ id
uid=0(root) gid=0(root) groups=0(root), 1(bin), 2(daemon), 3(sys), 4(ado)
1.7.4. Определение групп, в состав которых входят другие пользователи
Определить, в состав каких групп входит другой пользователь, позволяет команда groups, в качестве аргумента которой указано имя пользователя:
$ groups matty
sysadmin appsgen post
Данная команда сообщает о том, что пользователь matty входит в состав групп
sysadmin, appsgen и post.
1.8. Команда umask
Когда вы регистрируетесь в системе, команда umask устанавливает стандартный режим доступа к создаваемым файлам и каталогам. Задайте с помощью этой команды подходящий для вас режим, чтобы пользователи, не являющиеся членами вашей группы, не могли выполнять нежелательные операции над вашими файлами. Действие команды длится до тех пор, пока вы не выйдете из системы либо не выполните команду umask еще раз.
Как правило, значение umask устанавливается в файле /etc/profile, доступ к которому имеют все пользователи. Поэтому, если вы хотите установить общесистемное значение umask, отредактируйте данный файл (для этого нужно иметь права администратора). Свое собственное значение umask можно задать в файле .profile или .bash_profile, находящемся в каталоге /home.
1.8.1. Обработка значений umask
Команда umask задает восьмеричное число, которое при создании каждого файла и каталога вычитается из стандартного значения режима доступа. Полученное значение режима присваивается файлу или каталогу. Стандартному режиму доступа к каталогам соответствует число 777, а режиму доступа к файлам — 666 (система не позволяет создавать текстовые файлы с установленными битами выполнения, эти биты следует добавлять отдельно с помощью команды chmod). Значение umask также состоит из трех трехбитовых наборов: для владельца, группы и других пользователей.
Общий формат команды umask таков:
umask nnn
где nnn — это маска режима в диапазоне от 000 до 777.
Ниже показано; как на основании значения umask определить режим доступа к файлу или каталогу (табл. 1.8).
Таблица 1.8. Интерпретация значения umask
Цифра в значении umask
Результат для файла
Результат для каталога
0
6
7
1
6
6
2
4
5
3
4
4
4
2
3
5
2
2
6
0
1
7
0
0
Из таблицы следует, что, например, значению umask, равному 002, соответствует режим 664 для файлов и 775 для каталогов.
Если вам удобнее работать со строками режима, руководствуйтесь описанной ниже последовательностью действий. Предположим, значение umask равно 002.
• Сначала запишите полную строку режима, эквивалентную числу 777.
• Под ней запишите строку режима, соответствующую значению umask (002).
• Вычеркните из первой строки те символы, которые дублируются в тех же позициях во второй строке. Вы получите строку режима для каталогов.
• Вычеркните из полученной строки все символы x. Вы получите строку режима для файлов.
1. Полная строка режима
rwxrwxrwx (777)
2. Значение umask (002)
w-
3. Строка режима для каталогов
rwxrwxr-x (775)
4. Строка режима для файлов
rw‑rw‑r-- (664)
1.8.2. Примеры установки значений umask
В табл. 1.9 представлены некоторые возможные значения umask и указаны соответствующие им режимы доступа к файлам и каталогам.
Таблица 1.9. Примеры значений umask
Значение umask
Режим доступа к каталогам
Режим доступа к файлам
022
755
644
027
750
640
002
775
664
006
771
660
007
770
660
Для просмотра текущего значения umask введите команду umask без параметров.
$ umask
022
$ touch file1
$ 1s -1 file1
-rw‑r--r-- 1 dave admin 0 Feb 18 42:05 file1
Чтобы изменить существующую установку, просто укажите новый аргумент команды umask:
$ umask 002
Убедимся в том, что система приняла изменения: