Команды chmod, chown, chgrp

Содержание:

команда chmod
команда chown
команда chgrp
примеры для команды chmod
примеры для команды chown
примеры для команды chgrp
контрольные задания
список использованной литературы

Файлы в Unix имеют двух владельцев: пользователя (user owner) и группу (group owner). Владелец пользователь может не являтся членом группы, владеющей файлом. Это дает большую гибкость в организации доступа к файлам.

Для определения владельцев файла текущего каталога можно получить подробный листинг командой ls -l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы:
 
1 2 3 4 5 6 7 8
drwxr-x--x  2 root root 5456 Dec 31  23:59 Santa.Claus
-rw-r--r--  andy group 23456 Nov 12  13:29  readme.txt

Владельцем-пользователем вновь созданного файла является пользователь, который создал файл. Порядок назначения владельца-группы зависит от конкретной версии Unix. Таким образом, владение файлом определяет тот набор операций, который пользователь  может совершить с файлом. Часть из них, такие как изменение прав доступа или владельца файла может осуществить толко владелец(или суперпользователь), другие операции, такие как чтение, запись и запуск на выполнение(для исполняемых файлов) дополнительно контролируется правами доступа.

Для определения прав доступа к файлу можно воспользоваться той же самой командой ls -l
 
1 2 3 4 5 6 7 8
drwxr-x--x  2 root root 5456 Dec 31  23:59 Santa.Claus
-rw-r--r--  andy group 23456 Nov 12  13:29  readme.txt

Права доступа листинга отображаются в первой (1) колонке (за исключением первого символа, обозначающего тип файла)  Наличие прав доступа обозначается соответствующим символом, а отсутствие - символом "-".

Права доступа могут быть изменены только владельцем файла или суперпользователем(superuser) - администратором системы. Для этого используется команда chmod.
 
chmod - изменение атрибутов защиты файла

синтаксис 

chmode mode file...

описание

Команда изменяет атрибуты защиты файла file. Атрибуты защиты, обозначимые mode, могут быть заданны в числовом или символическом виде. 

В символическом виде атрибуты задаются в формате

[who]+ | - | = [permission]

В операционной системе Unix существуют три базовых класса доступа к файлу: 
 
User accsess(u)  для владельца - пользователя файла

 

Group accsess(g) для членов группы, являющихся владельцем файла

 

Other accsess(o) для остальных пользователей (кроме  супер- пользователя)

,в каждом из которых установленны соответствующие права доступа

Первое поле, обозначеное как who, может содержать один или несколько следующих символов:

a      установка атрибутов защиты для всех категорий пользователей;

g      установка атрибутов защиты для групп пользователей;

o      установка для прочих процессов (эффективные идентификаторы которых не совпадают с пользовательскими);

u      установка прав доступа только для владельца.

Допустимые операции:

+     добавление прав доступа;

     отмена прав доступа;

=     определение перечисленных прав и отмена всех прочих для данного who.
 

Поле, обозначенное как permission, может быть комбинацией следущих символов:

     делает файл выполнимым(разрешение выполнения);

r        разрешение чтения;

w     разрешение записи;

     установка пользовательского или группового идентификатора.

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

4000    установка ID пользователя при выполнениии (S_ISUID);

2000     установка ID группы при выполнениии (S_ISGID);

1000     зависит от реализации;

0400     право владельца на чтение (S_IRUSR);

0200     право владельца на   запись (S_IWUSR);

0100     право владельца на выполнение (S_IXUSR);

0040     право группы на чтение (S_IRGRP);

0020     право группы на запись (S_IWGRP);

0010      право группы на выполнение (S_IXGRP);

0004     право прочих процессов на чтение (S_IROTH);

0002      право прочих процессов на запись (S_IWOTH);

0001     право прочих процессов на выполнение (S_IXOTH);

0000     нет доступа.

Для каталогов поле х означает не выполнение, а поиск. Для каталога с правом х-- пользователи будут иметь доступ к любому известному им файлу в каталоге, но не смогут выполнять команду ls или читать каталог, что бы узнать, какие файлы в нем находятся. Каталог с правом r-- можно читать, но нельзя работать с его файлами. Право на запись w для каталога дает пользователю возможность записывать и удалять файлы из каталога! При этом права доступа для самого файла! 
 

Примеры использования команды chmod
$ chmod a+w text Предоставить право на запись для всех пользователей для файла text
$ chmod go=r text Установить право на чтение для всех пользователей,за исключением владельца
$ chmod g+x-w run Добавить для группы право на выполнение файла run и снять право на запись
$ chmod u+w,og+r text1 text2 Добавить право записи для владельца, право на чтение для группы и остальных пользователей, отключить право на записьвсех пользователей, исключая владельца 
$ chmod 754 * Устанавить для владельца права на чтение, запись и выполнение, для группы на чтение и выполнение и для остальных пользователей только на чтение, всех файлов в текущем каталоге
число определяется следущим образом: нужно предствить права доступа в двоичном виде(0 - отсутствие соответствуещего права, 1 - его наличие) и каждую триаду, соответсчвующую класу доступа, в свою очередь преобразовать в десятичное число.

7=111(rwx)  5=101(r-x)  4=100(r--)

$ chmod rw-rw-rw junk Так нельзя!  надо использовать: 

$ chmod a=rw junk или

$ chmod 666 junk

$ chmod a-w . закрыть текущий каталог по записи для всех пользователей, включая себя
$ chmod o-r+x private сделать для всех пользователей, кроме себя текущий каталог private невидимым.
chown - смена собственника файла

синтаксис

chown owner file...

описание 

Команда chown изменяет владельца файла file на owner. Поле, обозначенное как owner, может быть десятичным идентификатором пользователя или именем пользователя. 
 

Примеры использования команды chown
$ ls -l

-rwxr-xr-x 1 nick asu 512 Nov 13 for_alex

$ chown alex for_alex

$ ls -l

-rwxr-xr-x 1 alex asu 512 Nov 13 for_alex

сменить владельца файла for_alex с nick, на alex. Теперь права на запись в этот файл для пользователя nick утеряны.
$ ls -l

-rwxrw-rw- 1 lex group 40033 Dec 1 x.tar
-rwx------ 1 ldm asu 55 Sep 4 run
-rw-r--r-- 2 alex asu 512 Jul 20 alex.my
-rw-rw-rw- 1 nick asu 690 Nov 13 fors.nick

$ whoami 

root 

$ chown * root 

$ ls -l

-rwxrw-rw- 1 root group 40033 Dec 1 x.tar
-rwx------ 1 root asu 55 Sep 4 run
-rw-r--r-- 2 root asu 512 Jul 20 alex.my
-rw-rw-rw- 1 root asu 690 Nov 13 fors.nick
 

Суперпользователь присвоил себе все файлы текущего каталога. (Вообще-то такие случаи редки )
chgrp - смена группы файла

синтаксис

chgrp group file... 

описание

Команда chgrp изменяет группу файла file на group. Поле, обозначенное как group, может быть десятичным идентификатором группы или именем группы. Для успешного выполнения этой команды нужно быть членом группы group.
 

Примеры использования команды chgrp
$ chgrp staff *  Установить гpуппу staff в качестве владельцев всех файлов текущего каталога

 
 
Контрольные задания
1. Закройте свой домашний каталог(в директории home) для всех пользователей кроме себя
2. Создайте файл test и измените его атрибуты на r-xr-xr-x , задавая его атрибуты в числовом виде.
3. Создайте файл test и измените его собственника на другого(сможете ли вы после этого возвратить себе этот файл?)
4. Измените у какого-нибудь уже существующего файла(файлов) группу на другую.

 
Ответы на контрольные задания
1. $ chmod o-xw /home/alex
2. $ cat >test
^D
$ chmod 555 test
3. $ cat >test
^D
$ chown root test
4. chgrp users test    (для этого нужно быть членом группы users)

 
Список использованной литературы:
1. Робакеквич А. Операционная система Unix. BHV - Санкт-Петербург, 1997 
2. Дунаев С. UNIX SYSTEM V. Releas 4.2 Общее руководство. ДИАЛОГ-МИФИ, 1995

 


Hosted by uCoz