![]() |
Модераторы: powerfox, ZeeLax |
![]() ![]() ![]() |
|
smartov |
|
||||||||||||||||||||||||||||||||||||||||||||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 17 Всего: 259 |
Права на файлы в Linux Оригинал: polishlinux.org Много копипастил и правил ошибки: linuxpeople.ru ![]() 1. Основы С самого своего появления, UNIX позиционировался как мультипользовательская операционная система. Что соответственно повлекло за собой создание механизмов для защиты и обеспечения авторизорованного доступа к данным. Таким образом появился стандарт DAC (Discretionary Access Control). В соответствии с DAC, пользователь сам решает какие права доступа соответствуют файлам. Но с точки зрения разработки операционных систем эта модель оказалась неудовлетворительной. Из-за чего появились новые модели для организации доступа к файлам, такие как MAC (Mandatory Access Control), ACL (Access Control List), и их реализации, например SELinux, TrustedBSD, Trusted Solaris. 2. Владелец файла Обычно, владельцем файла является пользователь, создавший этот файл. В UNIX-подобных операционных системах, все файлы имеют два типа владельцев: user (пользователь) и group (группа). Владельцы не должны совпадать друг с другом, т.е. user не должен быть членом group. Но фактически почти всегда, пользователь принадлежит к той группе, которая владеет файлом. Если пользователь не является владельцем файла и не принадлежит к группе, владеющей файлом, то он считается “левым” (others, остальные). Каждому пользователю в системе присваивается UID-номер (user identification number, идентификатор пользователя), с помощью этого система однозначно определяет пользователя. Пользователь root имеет UID = 0, а максимально возможный номер принадлежит пользователю “nobody” (”никто”) (для Ubuntu это 65534, для NetBSD — 32767). Следовательно права привязываются не в к имени пользователя, а к его UID. Аналогично каждой группе соответствует GID (group identification number). Для того что бы в консоле вывести владельцев файлов используйте команду ls с ключом -l:
Третья и четвертая колонка означают, что пользователь и группа владеют файлом. 2.1. chgrp Эта команда позволяет изменить группу-владельца файла. Если эту команду использует простой пользователь, то он, во-первых, должен быть владельцем файла, а во-вторых, он должен быть членом группы, которой он хочет дать права. Интересный факт, пользователь не должен быть членом группы, которая владеет файлом. Синтаксис следующий: chgrp group-name files,можно использовать как и имя группы, так и GID группы.
Команду кстати можно использовать с ключом -R, что приведет к рекурсивному обходу всех файлов в каталоге и его подкаталогах.
2.2. chown Эта команда используется для изменения владельца, как пользователя так и группы. В большинстве систем, только root имеет право пользоваться этой командой. У команды следующий синтаксис: chown user:group files. Как и в команде chgrp, вы можете использовать как имена пользователей и групп, так и их GID и UID. Кстати команда не проверяет на существование пользователей и группы, так что можно задать несуществующие. Пример смены группы и пользователя
Смена владельца на пользователя zoidberg, группа остается без изменений.
Смена группы на futurama, владелец без изменений.
3. Права доступа В любой UNIX-подобной системе имеются 3 уровня доступа к файлу: чтение, read ®, запись, write (w) и выполнение, execute (x). Тип доступа r Для файла: Чтение содержимого файла Для каталога: Отображение содержимого каталога (например командой ls) w Для файла: Запись в файл Для каталога: Изменение содержимого каталога (удаление и добавление файлов из/в каталога; для пользователей windows: тут сильное отличие, если есть права записи на папку, то из неё можно удалить любой файл, вне зависимости от прав на этот файл, и наоборот) x Для файла: Запуск файла на исполнение Для каталога: Возможность войти в каталог командой cd Стоит заметить, что когда мы рассматриваем права на каталоги, нужно помнить, что каталог - это тоже файл, который содержит список файлов, т.е. их имена и расположение на диске. Для того что бы посмотреть содержимое каталога достаточно воспользоваться командой ls (без ключей), для этого необходимы только права на чтение, но для того что бы выполнить ls -l необходимы права на запись и выполнение (smartov: думаю при ro файловой системе или с опцией noatime, можно и без записи). Обобщая вышесказанное, для выполнения любой операции над каталогом (кроме простого просмотра содержимого) вам будут необходимы права на выполнение. Права на выполнение в случае с директориями, даёт вам возможность получать доступ к её содержимому через имена файлов.
Список прав доступен по команде ls с ключом -l. В первой колонке первый символ обозначает тип файла, а остальные 9 показывают права доступа. Первые 3 из 9 показывают права user, следующие 3 - это права group, и оставшиеся для “левых”. В приведенном примере blob - это каталог (d в первой колонке - directory), user имеет права на запись и чтение, но не на выполнение (rw-), у группы и у остальных есть права только на чтение. tapety - тоже каталог, и у user есть права на всё (rwx), а у группы и у остальных есть права на чтение и выполнение (r-x). Fme.py - это файл. 3.1. chmod Рассмотрим команду для смены прав доступа:
Перед выполнением команды необходимо выбрать класс пользователей, для кого мы хотим изменить права (ugo, User, Group, Others). Есть так же дополнительная группа a (all, все). Затем выбираем оператор: + (дать права), - (убрать права) и = (присвоить права - т.е. поставить только эти права, а остальные сбросить). И в конце выбрать сами права (rwx, r-x и т.д.). Например тут
пользователю (u) добавляется (+) право на выполнение (x) файла skrypt.sh.
У группы и остальных (go) отбирается (-) право на чтение ®.
Всем (a) присваивается (=) право на запись (w), а остальные права стираются (=).
Пользователю прибавляются права на все, группе тоже, а остальным прибавляется право на выполнение. 3.2. Числовое представление прав Для упрощения записи команды chmod можно использовать числовое представление прав. У каждого типа доступа есть числовое представление, для этого используется двоичное представление. Единица означает - есть право, 0 - нет права. Таким образом запись правила rwx r-x r-x в бинарном виде будет выглядить следующим образом: 111 101 101. Но двоичное представление не очень удобно, поэтому используют восьмеричное представление. 111 в двоичной системе - это 7 в восьмеричной, а 101 - это 5, таким образом 111 101 101 - это 755. Итак получаем: –x 1 -w- 2 -wx 3 r– 4 r-x 5 rw- 6 rwx 7 Таким образом вы можете записать как
так и
3.3. Специальные уровни доступа Рассмотрим несколько специальных уровней доступа, расширяющие стандартные. 3.3.1. X Данная опция добавляет выбранным классам права на выполнение тогда и только тогда, когда другие классы тоже имеют права на выполнение:
Т.к. для того, чтобы выполнить файл, нужно иметь право его прочитать, то права на чтение проставляются автоматически. 3.3.2. Липкий бит Если его установить на выполняемый файл, то его код будет храниться в оперативной памяти даже после завершения программы. Эта возможность редко используется в наши дни, но исторически она была спроектирована для уменьшения времени запуска часто запускаемых программ. Если поставить липкий бит на директорию, то удалять из неё файлы будет иметь право только владелец файла и root.
Эта возможность часто используется для каталога /tmp, в котором - в соответствии с соглашениями - все должны иметь право создавать файлы, но не иметь возможности удалить те, владельцем которых не являешься. Назначить липкий бит можно командой chmod:
или используя числовую запись
3.3.3. setuid Если установить этот режим на исполняемый файл, то он будет исполняться от имени владельца. Некоторые административные команды, например sudo, могут требуют наличие этого бита для корректной работы.
Установка:
3.3.4. setgid Полностью аналогична setuid, только для групп.
3.4. umask Команда umask используется для установки прав файлов для создаваемых файлов по умолчанию. Глобально, у всех новых файлов права по умолчанию 666 (rw-rw-rw-). С помощью этой команды задаются те опции которые НЕ будут присутствовать в новых файлах. Т.е. если мы передадим параметр 0022 (----w--w-), то по умолчанию права будут 644 (rw-r--r--).
polishlinux Это сообщение отредактировал(а) smartov - 16.12.2007, 16:03 |
||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 6 Всего: 58 |
А оно действительно надо было всё так разжёвывать ?
|
|||
|
||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 21 Всего: 207 |
восьмиричное
не результаты работы, а сегмент кода
точнее EUID выполняющегося процесса будет равен UID-у владельца исполняемого файла, из которого он порожден -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 17 Всего: 259 |
||||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 21 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 14 Всего: 162 |
угу, а как предлагаешь стать истинным линуксоидом тем, кто вчера установил систему на попробовать? ![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 21 Всего: 207 |
сложный вопрос хотя в общем согласен: базу откуда-то брать нужно -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
marykone |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2722 Регистрация: 2.5.2006 Где: Краснодар Репутация: 2 Всего: 67 |
я считаю что лучше всегда разжовывать тебе понятно мне нет что тебе известно ты и так пропустишь беглым взглядом, а что неизвестно на том заостришь свое внимание. тем более как было ранее подмеченно воды тут нет -------------------- получил ответ, пометь вопрос как решенный (правый верхний угол вашей темы). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |