Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Новичку: Права на файлы в Linux 
:(
    Опции темы
smartov
Дата 15.12.2007, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 17
Всего: 259



Права на файлы в Linux


Оригинал: polishlinux.org
Много копипастил и правил ошибки: linuxpeople.ru


user posted image

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:

Цитата

$ ls -l
razem 1822
drwxr-xr-x 3 adam adam 120 2007-09-03 16:00 Desktop
-rw-r–r– 1 adam adam 400 2007-08-22 18:49 prog_09.py


Третья и четвертая колонка означают, что пользователь и группа владеют файлом.

2.1. chgrp

Эта команда позволяет изменить группу-владельца файла. Если эту команду использует простой пользователь, то он, во-первых, должен быть владельцем файла, а во-вторых, он должен быть членом группы, которой он хочет дать права. Интересный факт, пользователь не должен быть членом группы, которая владеет файлом. Синтаксис следующий: chgrp group-name files,можно использовать как и имя группы, так и GID группы.

Цитата

$ ls -l
-rw-r–r– 1 adam root 0 2007-09-03 15:33 file.txt
chgrp users file.txt
$ ls -l
-rw-r–r– 1 adam users 0 2007-09-03 15:33 file.txt


Команду кстати можно использовать с ключом -R, что приведет к рекурсивному обходу всех файлов в каталоге и его подкаталогах.

Цитата

chgrp users -R directory/


2.2. chown

Эта команда используется для изменения владельца, как пользователя так и группы. В большинстве систем, только root имеет право пользоваться этой командой. У команды следующий синтаксис: chown user:group files. Как и в команде chgrp, вы можете использовать как имена пользователей и групп, так и их GID и UID. Кстати команда не проверяет на существование пользователей и группы, так что можно задать несуществующие.

Пример смены группы и пользователя
Цитата

$ ls -l
-rw-r–r– 1 adam users 0 2007-09-03 15:33 file.txt
root@laptop:# chown root:root file.txt
adam@laptop:~$ ls -l
-rw-r–r– 1 root root 0 2007-09-03 15:33 file.txt


Смена владельца на пользователя zoidberg, группа остается без изменений.
Цитата

root@laptop:# chown zoidberg file.txt


Смена группы на futurama, владелец без изменений.
Цитата

root@laptop:# chown :futurama file.txt


3. Права доступа

В любой UNIX-подобной системе имеются 3 уровня доступа к файлу: чтение, read ®, запись, write (w) и выполнение, execute (x).
Тип доступа
r
Для файла: Чтение  содержимого файла
Для каталога: Отображение содержимого каталога (например командой ls) 

w
Для файла: Запись в файл
Для каталога: Изменение содержимого каталога (удаление и добавление файлов из/в каталога; для пользователей windows: тут сильное отличие, если есть права записи на папку, то из неё можно удалить любой файл, вне зависимости от прав на этот файл, и наоборот)

x
Для файла: Запуск файла на исполнение
Для каталога: Возможность войти в каталог командой cd 

Стоит заметить, что когда мы рассматриваем права на каталоги, нужно помнить, что каталог - это тоже файл, который содержит список файлов, т.е. их имена и расположение на диске. Для того что бы посмотреть содержимое каталога достаточно воспользоваться командой ls (без ключей), для этого необходимы только права на чтение, но для того что бы выполнить ls -l необходимы права на запись и выполнение (smartov: думаю при ro файловой системе или с опцией noatime, можно и без записи). Обобщая вышесказанное, для выполнения любой операции над каталогом (кроме простого просмотра содержимого) вам будут необходимы права на выполнение. Права на выполнение в случае с директориями, даёт вам возможность получать доступ к её содержимому через имена файлов.

Цитата

drw-r–r– 2 adam adam 96 2007-09-05 18:04 blob
drwxr-xr-x 2 adam adam 176 2007-09-04 15:57 tapety
-rw-r–r– 1 adam adam 125 2007-08-29 18:31 fme.py

Список прав доступен по команде ls с ключом -l. В первой колонке первый символ обозначает тип файла, а остальные 9 показывают права доступа. Первые 3 из 9 показывают права user, следующие 3 - это права group, и оставшиеся для “левых”.

В приведенном примере blob - это каталог (d в первой колонке - directory), user имеет права на запись и чтение, но не на выполнение (rw-), у группы и у остальных есть права только на чтение. tapety - тоже каталог, и у user есть права на всё (rwx), а у группы и у остальных есть права на чтение и выполнение (r-x). Fme.py - это файл.

3.1. chmod

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

Цитата

chmod [access_rights] files


Перед выполнением команды необходимо выбрать класс пользователей, для кого мы хотим изменить права (ugo, User, Group, Others). Есть так же дополнительная группа a (all, все). Затем выбираем оператор: + (дать права), - (убрать права) и = (присвоить права - т.е. поставить только эти права, а остальные сбросить). И в конце выбрать сами права (rwx, r-x и т.д.).

Например тут
Цитата

$ chmod u+x skrypt.sh

пользователю (u) добавляется (+) право на выполнение (x) файла skrypt.sh.

Цитата

$ chmod go-r raport.odt

У группы и остальных (go) отбирается (-) право на чтение ®.

Цитата

$ chmod a=w finanse.ods

Всем (a) присваивается (=) право на запись (w), а остальные права стираются (=).

Цитата

$ chmod u+rwx,g+rwx,o+x trurl.py

Пользователю прибавляются права на все, группе тоже, а остальным прибавляется право на выполнение.

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

Таким образом вы можете записать как
Цитата

$ chmod u=rwx,g=rwx,o=x trurl.py

так и
Цитата

$ chmod 771 trurl.py


3.3. Специальные уровни доступа

Рассмотрим несколько специальных уровней доступа, расширяющие стандартные.

3.3.1. X

Данная опция добавляет выбранным классам права на выполнение тогда и только тогда, когда другие классы тоже имеют права на выполнение:

Цитата

$ ls -l
-rwx—— 1 adam users 14 2007-09-10 21:48 skrypt.sh
drwx—— 1 adam users 14 2007-09-10 21:48 tapety
-rw——- 1 root users 3665 2007-09-17 17:23 wynik.txt
$ chmod go+X *
$ ls -l
-rwxr-xr-x 1 adam users 14 2007-09-10 21:48 skrypt.sh
drwxr-xr-x 1 adam users 14 2007-09-10 21:48 tapety
-rw-r–r– 1 adam users 3665 2007-09-17 17:23 wynik.txt


Т.к. для того, чтобы выполнить файл, нужно иметь право его прочитать, то права на чтение проставляются автоматически.

3.3.2. Липкий бит

Если его установить на выполняемый файл, то его код будет храниться в оперативной памяти даже после завершения программы. Эта возможность редко используется в наши дни, но исторически она была спроектирована для уменьшения времени запуска часто запускаемых программ. Если поставить липкий бит на директорию, то удалять из неё файлы будет иметь право только владелец файла и root.

Цитата

drwxrwxrwt 10 root root 464 2007-09-20 12:45 tmp


Эта возможность часто используется для каталога /tmp, в котором - в соответствии с соглашениями - все должны иметь право создавать файлы, но не иметь возможности удалить те, владельцем которых не являешься.

Назначить липкий бит можно командой chmod:

Цитата

# chmod u+t test/
# ls -l
drwxrwxrwt 2 adam users 48 2007-09-20 15:28 test


или используя числовую запись

Цитата

# chmod 1000 test/


3.3.3. setuid

Если установить этот режим на исполняемый файл, то он будет исполняться от имени владельца. Некоторые административные команды, например sudo, могут требуют наличие этого бита для корректной работы.

Цитата

$ ls -l /usr/bin/ | grep sudo
-rwsr-xr-x 1 root root 91508 2006-10-09 13:37 sudo


Установка:
Цитата

# chmod u+s program
# chmod 4000 program


3.3.4. setgid

Полностью аналогична setuid, только для групп.

Цитата

# chmod g+s test/
# chmod 2000 test/
# ls -l
drwxrwsrwt 2 adam adam 48 2007-09-20 15:28 test


3.4. umask

Команда umask используется для установки прав файлов для создаваемых файлов по умолчанию. Глобально, у всех новых файлов права по умолчанию 666 (rw-rw-rw-). С помощью этой команды задаются те опции которые НЕ будут присутствовать в новых файлах. Т.е. если мы передадим параметр 0022 (----w--w-), то по умолчанию права будут 644 (rw-r--r--).

Цитата

$ umask
0022
$ touch file
$ ls -l
-rw-r–r– 2 adam adam 48 2007-09-20 15:28 file
umask 0111
$ ls -l
-rw-rw-rw- 1 adam adam 0 2007-09-20 17:31 file2



polishlinux

Это сообщение отредактировал(а) smartov - 16.12.2007, 16:03
PM MAIL   Вверх
GrayCardinal
Дата 16.12.2007, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 6
Всего: 58



А оно действительно надо было всё так разжёвывать ?


--------------------
PM MAIL WWW   Вверх
MAKCim
Дата 16.12.2007, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 21
Всего: 207



Цитата(smartov @  15.12.2007,  23:30 Найти цитируемый пост)
Но двоичное представление не очень удобно, поэтому используют десятичное представлени

восьмиричное
Цитата(smartov @  15.12.2007,  23:30 Найти цитируемый пост)
Если его установить на выполняемый файл, то результаты его работы будут храниться в оперативной памяти даже после завершения программы.

не результаты работы, а сегмент кода
Цитата(smartov @  15.12.2007,  23:30 Найти цитируемый пост)
Если установить этот режим на исполняемый файл, то он будет исполняться от имени владельца

точнее EUID выполняющегося процесса будет равен UID-у владельца исполняемого файла, из которого он порожден


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
smartov
Дата 16.12.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 17
Всего: 259



MAKCim, спасибо, первые два исправил, последний не стал - статья для новичков.

Цитата(GrayCardinal @  16.12.2007,  08:57 Найти цитируемый пост)
А оно действительно надо было всё так разжёвывать ? 

Странный народ линуксоиды... 
Лишнего и воды тут не написано. 
Лучше лишний раз разжевать имхо. 
Тем более см. название топика.
PM MAIL   Вверх
MAKCim
Дата 16.12.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 21
Всего: 207



Цитата(smartov @  16.12.2007,  16:05 Найти цитируемый пост)
Странный народ линуксоиды... 

истинный линуксоид учится по манам  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 16.12.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 14
Всего: 162



Цитата(MAKCim @  16.12.2007,  16:37 Найти цитируемый пост)
истинный линуксоид учится по манам

угу, а как предлагаешь стать истинным линуксоидом тем, кто вчера установил систему на попробовать? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 19.12.2007, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 21
Всего: 207



Цитата(JackYF @  16.12.2007,  19:15 Найти цитируемый пост)
угу, а как предлагаешь стать истинным линуксоидом тем, кто вчера установил систему на попробовать?

сложный вопрос
хотя в общем согласен: базу откуда-то брать нужно


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
marykone
Дата 19.12.2007, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2722
Регистрация: 2.5.2006
Где: Краснодар

Репутация: 2
Всего: 67



Цитата(GrayCardinal @  16.12.2007,  09:57 Найти цитируемый пост)
А оно действительно надо было всё так разжёвывать ?

я считаю что лучше всегда разжовывать тебе понятно мне нет что тебе известно ты и так пропустишь беглым взглядом, а что неизвестно на том заостришь свое внимание. тем более как было ранее подмеченно воды тут нет 


--------------------
получил ответ, пометь вопрос как решенный (правый верхний угол вашей темы).

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1288 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.