Изменил(а) на 'labs/lab1/README.md'

main
Сергей Филатов 1 год назад
Родитель e48ede0225
Сommit a460d1a343

@ -68,89 +68,149 @@
- **+** - предоставляем право
- **–** - лишаем соответствующего права
- ** ** - установить указанные права вместо имеющихся
- **=** - установить указанные права вместо имеющихся
Вместо p – символ, обозначающий соответствующее право:
- r (чтение);
- w (запись);
- x (выполнение).
- **r** - чтение
- **w** - запись
- **x** - выполнение
Примеры использования команды chmod:
- Предоставление всем пользователям системы права на выполнение файла *file_name*
```ssh
[user]$ chmod a+x file_name
предоставляет всем пользователям системы право на выполнение данного файла.
```
- Удаление прав на чтение и запись для всех, кроме владельца файла *file_name*
```ssh
[user]$ chmod go-rw file_name
удаляет право на чтение и запись для всех, кроме владельца файла.
```
- Установка права на чтение, запись и выполнение файла *file_name* ддя всех
```ssh
[user]$ chmod ugo+rwx file_name
дает всем права на чтение, запись и выполнение.
Если опустить указание на то, кому предоставляется данное право, то подразумевается, что речь идет вообще обо всех пользователях, т. е. вместо [user]$ chmod a+x file_name
можно записать просто
```
*Если опустить указание на то, кому предоставляется данное право, то подразумевается, что речь идет вообще обо всех пользователях, т.е. вместо*
```ssh
[user]$ chmod a+x file_name
```
*можно записать просто*
```ssh
[user]$ chmod +x file_name
```
Второй вариант задания команды chmod (он используется чаще) основан на цифровом представлении прав. Для этого мы кодируем символ r цифрой 4, символ w – цифрой 2, а символ x – цифрой 1. Чтобы предоставить пользователям какой-то набор прав, надо сложить соответствующие цифры. Получив, таким образом, нужные цифровые значения для владельца файла, для группы файла и для всех остальных пользователей, задаем эти три цифры в качестве аргумента команды chmod (ставим эти цифры после имени команды перед вторым аргументом, который задает имя файла). Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись – группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:
```ssh
[user]$ chmod 760 file_name
```
Если вы знакомы с двоичным кодированием восьмеричных цифр, то вы поймете, что цифры после имени команды в этой форме ее представления есть не что иное, как восьмеричная запись тех самых 9 бит, которые задают права для владельца файла, группы файла и для всех пользователей.
Выполнять смену прав доступа к файлу с помощью команды chmod может только сам владелец файла или суперпользователь. Для того, чтобы иметь возможность изменить права группы, владелец должен дополнительно быть членом той группы, которой он хочет дать права на данный файл.
Выполнять смену прав доступа к файлу с помощью команды `chmod` может только сам владелец файла или суперпользователь. Для того, чтобы иметь возможность изменить права группы, владелец должен дополнительно быть членом той группы, которой он хочет дать права на данный файл.
Пример цифровых прав:
```ssh
rwx rwx rwx = 777
rw- rw- rw- = 666
rwx --- --- = 700
Есть также 3 возможных атрибута файла, устанавливаемые с помощью той же команды chmod. Это те самые атрибуты для исполняемых файлов, которые в индексном дескрипторе файла в двухбайтовой структуре, определяющей права на файл, занимают позиции 5-7, сразу после кода типа файла.
```
Есть также 3 возможных атрибута файла, устанавливаемые с помощью той же команды `chmod`. Это те самые атрибуты для исполняемых файлов, которые в индексном дескрипторе файла в двухбайтовой структуре, определяющей права на файл, занимают позиции 5-7, сразу после кода типа файла.
Первый из этих атрибутов – так называемый "бит смены идентификатора пользователя". Смысл этого бита состоит в следующем.
Обычно, когда пользователь запускает некоторую программу на выполнение, эта программа получает те же права доступа к файлам и каталогам, которые имеет пользователь, запустивший программу. Если же установлен "бит смены идентификатора пользователя", то программа получит права доступа к файлам и каталогам, которые имеет владелец файла программы (таким образом, рассматриваемый атрибут лучше называть "битом смены идентификатора владельца"). Это позволяет решать некоторые задачи, которые иначе было бы трудно выполнить. Самый характерный пример – команда смены пароля passwd. Все пароли пользователей хранятся в файле /etc/passwd, владельцем которого является суперпользователь root. Поэтому программы, запущенные обычными пользователями, в том числе команда passwd, не могут производить запись в этот файл. А, значит, пользователь как бы не может менять свой собственный пароль. Но для файла /usr/bin/passwd установлен "бит смены идентификатора владельца", каковым является пользователь root. Следовательно, программа смены пароля passwd запускается с правами root и получает право записи в файл /etc/passwd (уже средствами самой программы обеспечивается то, что пользователь может изменить только одну строку в этом файле).
Ообычно, когда пользователь запускает некоторую программу на выполнение, эта программа получает те же права доступа к файлам и каталогам, которые имеет пользователь, запустивший программу. Если же установлен "бит смены идентификатора пользователя", то программа получит права доступа к файлам и каталогам, которые имеет владелец файла программы (таким образом, рассматриваемый атрибут лучше называть "битом смены идентификатора владельца"). Это позволяет решать некоторые задачи, которые иначе было бы трудно выполнить. Самый характерный пример – команда смены пароля passwd. Все пароли пользователей хранятся в файле /etc/passwd, владельцем которого является суперпользователь root. Поэтому программы, запущенные обычными пользователями, в том числе команда passwd, не могут производить запись в этот файл. А, значит, пользователь как бы не может менять свой собственный пароль. Но для файла /usr/bin/passwd установлен "бит смены идентификатора владельца", каковым является пользователь root. Следовательно, программа смены пароля passwd запускается с правами root и получает право записи в файл /etc/passwd (уже средствами самой программы обеспечивается то, что пользователь может изменить только одну строку в этом файле).
Установить "бит смены идентификатора владельца" может суперпользователь с помощью команды
```ssh
[root]# chmod +s file_name
```
Аналогичным образом работает "бит смены идентификатора группы".
Еще один возможный атрибут исполняемого файла – это "бит сохранения задачи" или "sticky bit" (дословно – "бит прилипчивости"). Этот бит указывает системе, что после завершения программы надо сохранить ее в оперативной памяти. Удобно включить этот бит для задач, которые часто вызываются на выполнение, так как в этом случае экономится время на загрузку программы при каждом новом запуске. Этот атрибут был необходим на старых моделях компьютеров. На современных быстродействующих системах он используется редко.
Если используется цифровой вариант задания атрибутов в команде chmod, то цифровое значение этих атрибутов должно предшествовать цифрам, задающим права пользователя:
```ssh
[root]# chmod 4775 file_name
```
При этом веса этих битов для получения нужного суммарного результата задаются следующим образом:
- 4 – бит смены идентификатора пользователя;
- 2 – бит смены идентификатора группы;
- 1 – бит сохранения задачи (sticky bit).
Если какие-то из этих трех битов установлены в 1, то несколько изменяется вывод команды ls -l в части отображения установленных атрибутов прав доступа. Если установлен в 1 "бит смены идентификатора пользователя", то символ "x" в группе, определяющей права владельца файла, заменяется символом "s". Причем, если владелец имеет право на выполнение файла, то символ "x" заменяется на маленькое "s", а если владелец не имеет права на выполнение файла (например, файл вообще не исполняемый), то вместо "x" ставится "S". Аналогичные замены имеют место при задании "бита смены идентификатора группы", но заменяется символ "x" в группе атрибутов, задающих права группы. Если равен 1 "бит сохранения задачи (sticky bit)", то заменяется символ "x" в группе атрибутов, определяющей права для всех остальных пользователей, причем "x" заменяется символом "t", если все пользователи могут запускать файл на выполнение, и символом "T", если они такого права не имеют.
Важные для практической команды для работы в терминале Linux:
- man название_функции – вызов справки;
- man man – вызов общей справки;
- dir – отображает содержимое текущего каталога (папки);
- mkdir название_каталога – создание каталога;
- cd – команда перехода в другой каталог;
- echo – команда ввода данных, для ввода данных в файл используем команду, например, так: echo “данные_для_ввода_в_ковычках_пишем” > название_файла.расширение (если название файла содержит пробел, то также вместе с расширением название в ковычках; если мы хотим дописывать информацию, а не писать с затиранием, то используем двойной знак перенаправления потока >>);
- more название_файла.расширение – команда для вывода данных;
- stat – выводит статистику о файле;
- ls -l название_файла.расширение – команда для вывода владельца (пользователя и группы), кому принадлежит файл в выводе команды;
- whoami – команда для вывода имени текущего пользователя;
- groups – команда, чтобы узнать в какие группы входит текущий пользователь;
- groups польз_1 польз_2 – команда, позволяющая узнать пользователю 1 в какие группы входит пользователь 2;
- umask x2x3x4 – маска режима создания пользовательских файлов (прав);
- chown польз_1 файл_1 – команда для изменения прав доступа пользователя польз_1 к файл_1 (параметр –R позволит изменить права также на все файлы в подкаталогах);
- chgrp груп_1 файл_1 – команда для изменения прав доступа группы груп_1 к файл_1 (параметр –R позволит изменить права также на все файлы в подкаталогах);
- chmod =rx – команда для установки прав к файл_1 только на чтение и запуск;
- chmod x1x2x3x4 файл_1 – команда для изменения прав доступа к файл_1, x1x2x3x4 – набор определяемых прав (принцип формирования комбинации описан выше);
- chmod u+s файл_1 – команда для установки бита suid;
- chmod g+s файл_1 – команда для установки бита sgid;
- chmod g-s файл_1 – команда для удаления бита sgid;
- chmod u-s файл_1 – команда для удаления бита suid;
- getfacl файл_1 – команда получения прав доступа к файлу файл_1;
- setfacl -m user:[пользователь]:права[user:пользователь:права] или -m group:[группа]:права[group:группа:права] файл_1– команда установки прав доступа к файлу файл_1, заметим:
­ параметр «–m» означает модификацию, чтобы убрать права используем «–r»;
­ для файла 1.txt установить право чтения для пользователя aaa_user, право чтение/запись для bbb_user, чтение выполнение для группы alphabet_users, запретить группе num_users выполнять какие либо действия: «setfacl -m u: aaa_user:r,u:bbb_user:rw,g:num_users:-,g: alphabet_users:rx 1.txt»;
­ для файла 1.txt установить запрет доступа всем, полные права root и право запуска для группы root: «setfacl -m "u::-,o::-,g::-,u:root:rwx,g:root:x" 1.txt)».
- **4** – бит смены идентификатора пользователя
- **2** – бит смены идентификатора группы
- **1** – бит сохранения задачи (sticky bit)
Если какие-то из этих трех битов установлены в 1, то несколько изменяется вывод команды `ls -l` в части отображения установленных атрибутов прав доступа. Если установлен в 1 "бит смены идентификатора пользователя", то символ "x" в группе, определяющей права владельца файла, заменяется символом "s". Причем, если владелец имеет право на выполнение файла, то символ "x" заменяется на маленькое "s", а если владелец не имеет права на выполнение файла (например, файл вообще не исполняемый), то вместо "x" ставится "S". Аналогичные замены имеют место при задании "бита смены идентификатора группы", но заменяется символ "x" в группе атрибутов, задающих права группы. Если равен 1 "бит сохранения задачи (sticky bit)", то заменяется символ "x" в группе атрибутов, определяющей права для всех остальных пользователей, причем "x" заменяется символом "t", если все пользователи могут запускать файл на выполнение, и символом "T", если они такого права не имеют.
Важные команды для практической работы в терминале Linux:
- `man название_функции` – вызов справки
- `man man` – вызов общей справки
- `dir` – отображает содержимое текущего каталога (папки)
- `mkdir название_каталога` – создание каталога
- `cd` – команда перехода в другой каталог
- `echo` – команда ввода данных, для ввода данных в файл используем команду, например, так:
```ssh
echo “данные_для_ввода_в_ковычках_пишем” > название_файла.расширение
```
Если название файла содержит пробел, то также вместе с расширением название в ковычках - "название файла.расширение". Если мы хотим дописывать информацию, а не писать с затиранием, то используем двойной знак перенаправления потока `>>`);
- `more название_файла.расширение` – команда для вывода данных
- `stat название_файла.расширение` – выводит статистику о файле
- `ls -l название_файла.расширение` – команда для вывода владельца (пользователя и группы), кому принадлежит файл в выводе команды
- `whoami` – команда для вывода имени текущего пользователя
- `groups` – команда, чтобы узнать в какие группы входит текущий пользователь
- `groups польз_1 польз_2` – команда, позволяющая узнать пользователю 1 в какие группы входит пользователь 2
- `umask x2x3x4` – маска режима создания пользовательских файлов (прав)
- `chown польз_1 файл_1` – команда для изменения прав доступа пользователя польз_1 к файл_1 (параметр –R позволит изменить права также на все файлы в подкаталогах)
- `chgrp груп_1 файл_1`– команда для изменения прав доступа группы груп_1 к файл_1 (параметр –R позволит изменить права также на все файлы в подкаталогах)
- `chmod =rx` – команда для установки прав к файл_1 только на чтение и запуск
- `chmod x1x2x3x4 файл_1` – команда для изменения прав доступа к файл_1, x1x2x3x4 – набор определяемых прав (принцип формирования комбинации описан выше)
- `chmod u+s файл_1` – команда для установки бита suid
- `chmod g+s файл_1` – команда для установки бита sgid
- `chmod g-s файл_1` – команда для удаления бита sgid
- `chmod u-s файл_1` – команда для удаления бита suid
- `getfacl файл_1` – команда получения прав доступа к файлу файл_1
- `setfacl -m user:[пользователь]:права[user:пользователь:права]` или `-m group:[группа]:права[group:группа:права] файл_1`– команда установки прав доступа к файлу файл_1, заметим:
- параметр `–m` означает модификацию, чтобы убрать права используем `–r`
- для файла *1.txt* установить право чтения для пользователя *aaa_user*, право чтение/запись для *bbb_user*, чтение выполнение для группы *alphabet_users*, запретить группе *num_users* выполнять какие либо действия:
```ssh
setfacl -m u: aaa_user:r,u:bbb_user:rw,g:num_users:-,g: alphabet_users:rx 1.txt
```
- для файла 1.txt установить запрет доступа всем, полные права root и право запуска для группы root: «setfacl -m "u::-,o::-,g::-,u:root:rwx,g:root:x" 1.txt)».
Популярные значения прав доступа (2-4 символ в цифровой маске доступа):
- 400 (-r--------) владелец имеет право чтения, никто другой не имеет права выполнять никакие действия;
- 644 (-rw-r--r--) все пользователи имеют право чтения, владелец может редактировать;
- 660 (-rw-rw----) владелец и группа могут читать и редактировать, остальные не имеют права выполнять никаких действий;
- 664 (-rw-rw-r--) все пользователи имеют право чтения, владелец и группа могут редактировать;
- 666 (-rw-rw-rw-) все пользователи могут читать и редактировать;
- 700 (-rwx------) владелец может читать, записывать и запускать на выполнение, никто другой не имеет права выполнять никакие действия;
- 744 (-rwxr--r--) каждый пользователь может читать, владелец имеет право редактировать и запускать на выполнени;
- 755 (-rwxr-xr-x) каждый пользователь имеет право читать и запускать на выполнение, владелец может редактировать;
- 777 (-rwxrwxrwx) каждый пользователь может читать, редактировать и запускать на выполнение;
- 1555 (-r-xr-xr-t) каждый пользователь имеет право читать и запускать на выполнение, удалить файл может только владелец этого файла;
- 2555 (-r-xr-sr-x) каждый пользователь имеет право читать и запускать на выполнение с правами группы (user group) владельца файла;
- 4555 (-r-sr-xr-x) каждый пользователь имеет право читать и запускать на выполнение с правами владельца файла.
- **400 (-r--------)** - владелец имеет право чтения, никто другой не имеет права выполнять никакие действия
- **644 (-rw-r--r--)** - все пользователи имеют право чтения, владелец может редактировать
- **660 (-rw-rw----)** - владелец и группа могут читать и редактировать, остальные не имеют права выполнять никаких действий
- **664 (-rw-rw-r--)** - все пользователи имеют право чтения, владелец и группа могут редактировать
- **666 (-rw-rw-rw-)** - все пользователи могут читать и редактировать
- **700 (-rwx------)** - владелец может читать, записывать и запускать на выполнение, никто другой не имеет права выполнять никакие действия
- **744 (-rwxr--r--)** - каждый пользователь может читать, владелец имеет право редактировать и запускать на выполнени
- **755 (-rwxr-xr-x)** - каждый пользователь имеет право читать и запускать на выполнение, владелец может редактировать
- **777 (-rwxrwxrwx)** - каждый пользователь может читать, редактировать и запускать на выполнение
- **1555 (-r-xr-xr-t)** - каждый пользователь имеет право читать и запускать на выполнение, удалить файл может только владелец этого файла
- **2555 (-r-xr-sr-x)** - каждый пользователь имеет право читать и запускать на выполнение с правами группы (user group) владельца файла
- **4555 (-r-sr-xr-x)** - каждый пользователь имеет право читать и запускать на выполнение с правами владельца файла
2. Практическая часть
Linux
1) Перейти в директорию /labs/student_x/, где x - номер бригады. Все дальнейшие пути – относительно этой директории

Загрузка…
Отмена
Сохранить