Права за достъп

 

0. Права за достъп - въведение

1.       Промяна на принадлежност. 1

Промяна собственика на файл/директория. Команда chown. 1

Промяна на групата на принадлежност на файл/директория. Команда chgrp. 1

Промяна на собствеността на директория и нейното съдържание. Команди chown/chgrp –R.. 1

Едновременна смяна на собственика и групата. Команда chown. 1

2.       Управление на достъпа до файловете. 1

Права за достъп до файловете – въведение. 1

Права за достъп до директориите – въведение. 1

Права за достъп за различни потребители и групи. 1

Запазване на правата при копиране на файл. 1

Промяна на правата на файлове и директории: chmode. 1

Ø     задаване на права с букви. 1

Ø     Примери. 1

Ø     Задаване на права с цифри. 1

Ø     Примери. 1

Ø     Рекурсивно променяне на правата на директория и нейното съдържание. 1

Специални права за директория - ‘Sticky’. 1

Специални права за директория - setgid. 1

Подразбиращи се права – команда umask. 1

 

0.     Права за достъп (permissions) - въведение

Unix/Linux системата е многопотребителска (multi-user) - много потребители работята със системата в един и същи момент.  Това налага на само защита на системните файлове (осигуряване на работоспособността на системата) но и защита на потребителите един от друг.

Всеки файл/директория има собственик и принадлежи на група от потребители, съответно притежава три вида права за достъп:

За всеки от тези три вида потребители съществуват три различни права за достъп:

За да се видят правата за достъп( permissions) може да се използва команда ls -l .  Първата част от изхода на командата ги показва във вида:

Например за правата за достъп към командата bash, която се намира в директорията  /bin

$ls -l /bin/bash
-rwxr-xr-x 1 root root 1183448 juin  18  2020 /bin/bash

 

     1.     Промяна на принадлежност

 Промяната на принадлежността може да се извършва от superuser.

Промяна собственика на файл/директория. Команда chown.

Пример:

$sudo chown test1 exemple.txt exemple2.txt

Файловете exemple.txt и exemple2.txt стават собственост на потребителя test1.

$ls –l exemple.txt exemple2.txt

Може с една команда  да се сменя собственика на произволно количество файлове и директории. Разделител- празен интервал.

Промяната на принадлежността може да се извършва само от superuser.

Промяна на групата на принадлежност на файл/директория. Команда chgrp

Пример:

$sudo chgrp test1 exemple.txt exemple2.txt

Файловете exemple.txt и exemple2.txt стават собственост на гупата test1.

Може с една команда да се сменя групата на произволно количество файлове и директории. Разделител- празен интервал.

Промяната на групата може да се извършва от superuser.

Промяната на групата може да се извършва и от собственика на файла, но само към група, на която той принадлежи.

Промяна на собствеността на директория и нейното съдържание. Команди chown/chgrp –R

Опцията -R се приема от двете команди и означава да се извърши рекурсивно за всички файлове и поддиректории на директорията.

Например за смяна на груповата принадлежност на директорията shared-directory, на нейното съдържание и рекурсивно на всички нейни поддиректории към група staff:

$sudo chgrp -R staff shared-directory

Промяната може да се извърши от superuser (винаги) или от собственика на директорията и нейното съдържание ( ако принадлежи към групата staff).

За смяна на собственика на директорията /usr/local/share/misc/ на нейното съдържание и рекурсивно на всички нейни поддиректории (само от superuser):

$sudo chown -R root /usr/local/share/misc/

Едновременна смяна на собственика и групата. Команда chown

Командата chown позволява едновременната смяна на собственика и групата.

$sudo chown aaronc:www-docs public_html/interesting.html

Сменя собственика на aaronc а групата – на www-docs.

Двете точки в командата могат да бъдат заместени с точка:

$sudo chown aaronc.www-docs public_html/interesting.html

Опцията -R при директория осигурява по същия начин рекурсивна промяна(на собственика и групата) на съдържанието на директорията и на поддиректориите.

Ако бъде зададено само името на собственика ( с точка или двоеточие и интервал) то името на групата се сменя с първоначалната група на потребителя (обикновено със същото име)

$sudo chown ivan. test.txt

Ако бъде зададено само името на групата(името на собственика се замести с интервал) се сменя само името на групата, собственика се запазва:

$sudo chown :ivan test.txt

     2.     Управление на достъпа до файловете

Права за достъп до файловете – въведение

Три вида права за достъп задаващи действията, които могат да се извършва с файла, като всеки вид се отбелязва с буква.

Право

буква

Описание

Read

r

Право за четене на данните във файла

Write

w

Право за писане изтриване и промяна на данните във файла

Execute

x

Право за изпълнение (файлът е програма и може да бъде изпълнен)

Правата за достъп често се наричат 'permission bits'.

Ако някой файл е скрипт, за да може да бъде изпълнен са необходими wx права за скриптовия интерпретатор, който се изпълнява с правата на извикалия го потребител.

Права за достъп до директориите – въведение

Правата r w и x се използват и при директории с малко по различно значение:

Право

буква

Описание

Read

r

Право за прочитане на съдържанието на директория

Write

w

Право за създаване на нови файлове или поддиректории

Execute

x

Право преминаване към директорията (или за нейното използване като междинна част от path към файл)

Правата r и x за директории на практика вървят винаги заедно.

Права за достъп за различни потребители и групи

Всеки файл или директория има собственик и групов собственик. Правата r, w, x се специфицират поотделно за собственика, за груповия собственик и за всички останали. Собственикът, груповият собственик и съответните права за тях и за всички останали се извеждат с команда ls -l. При пълни права се виждат буквите rwx, за всяка от трите групи. Ако за някоя от тях някое право отсъства то се заменя с тире (-).

Запазване на правата при копиране на файл

По подразбиране командата cp не запазва правата на оригиналния в копирания файл (както и други параметри като времеви маркери).

За да бъдат запазени правата и времето за последна промяна се използва опция –p:

$cp -p important.txt important.txt.orig

Опцията -a задава опит за запазване на всички възможни параметри (без собственика и групата) включително правата и датата на промяна:

$cp -a important.txt important.txt.orig

Промяна на правата на файлове и директории: chmode

Правата могат да бъдат променяни от притежателя на файла/директорията или от superuser.

Опциите на командата chmode задават новите права, а аргументите – файловете за които се отнасят. Следният прост пример:

$ chmod a+x new-program

добавя (+) право за изпълнение (x) за всички потребители (a) на файла new-program.

Ø  задаване на права с букви

Правата могат да бъдат задавани с букви в следния формат:

[ugoa][+=-][rwxX]

Опции

Значение

u

собственик

g

група

o

останалите

a

всички (също като ugo)

x

право за изпълнение

w

право за писане

r

право за четене

X

Опция x но само за директории и
за файлове, които са вече изпълними
(имат някъде х в правата си)

+

добавяне на право

-

премахване на право

=

задаване на права

 

Ø  Примери

Създаване на няколко празни файла:

$ touch file1 file2 file3 file4

$ ls -l

total 0

-rw-r--r--  1 test test 0 May 1 17:16file1

-rw-r--r--  1 test test 0 May 1 17:16file2

-rw-r--r--  1 test test 0 May 1 17:16file3

-rw-r--r--  1 test test 0 May 1 17:16file4

 

Добавяне на право на изпълнение на собственика:

$ chmod u+x file1

$ ls -l file1

-rwxr--r--  1 test test 0 May 1 17:16file1

 

Добавяне на права за писане и изпълнение за всички останали (без собственика и групата):

$ chmod o+wx file2

$ ls -l file2

-rw-r--rwx  1 test test 0 May 1 17:16file2

 

Премахване на правото на групата за четене ( read) :

$ chmod g-r file3

$ ls -l file3

-rw----r--  1 test test 0 May 1 17:16file3

 

Добавяне на права за писане и изпълнение на всички :

$ chmod ugo+rwx file4

$ ls -l file4

-rwxrwxrwx  1 test test 0 May 1 17:16file4

 

Задаване на права за четене и изпълнение на всички останали (без собственика и групата)

$ chmod o=rx file2

$ ls -l file2

-rw-r—r-x  1 test test 0 May 1 17:16file2

 

Добавяне на право на изпълнение на собственика и групата и премахване правото за четене на групата:

$chmod ug+x,g-r file4

 

Ø  Задаване на права с цифри

Правата се задават с 3 цифри – първата се отнася за собственика, втората – за групата, а третата – за всички останали.

Цифрите задават правата  по следния начин:

1

execute

2

write

4

read

Когато трябва да бъде зададено повече от едно право – съответната цифра е сума от цифрите задаващи отделните права.

Например, ако трябва да бъдат зададени права -rw-r--rwx то съответните цифри са:

Owner

Group

Other

read & write

read

read, write & execute

4+2=6

4

4+2+1=7

или командата придобива вида:

$ chmod 647 filename

Ø  Примери

Повторете горните примери с цифри.

Ø  Рекурсивно променяне на правата на директория и нейното съдържание

Командатa chmod с рекурсивната опция –R променя правата на директорията и рекурсивно на всички файлове и поддиректории

Така например

$ chmod -R g+rwx,o+rx public-directory

·        дава rwx права за директорията public-directory на групата и rx права на всички останали

·        и рекурсивно на всички поддиректории

·        и на всички изпълними файлове в тях

·        включените в директорията и поддиректориите неизпълними файлове получават rw права за групата и r права за всички останали.

Внимание- синтаксиса на командата крие опасност, ако се въведе излишен интервал в пътя на променяната директория. Обърнете внимание на погрешно въведения интервал след /

$ chmod -R a+rw / home/test

Специални права за директория - ‘Sticky’

Използва се за директория /tmp - всеки може да създава файл в нея, но само собственикът на файла и root  могат да го променят или премахват.

Задава се с опция +t:

$ mkdir tmp
$ chmod 777 tmp
$chmod +t tmp
/

$ls -l

drwxrwxrwt 2 test test 4096 May  1 17:25 tmp

Обозначава се с t в изхода на командата ls -l

Специални права за директория - setgid

Ако една директория е setgid (‘set group-id’), създадените файлове в нея получават груповите права на директорията (а не груповите права на създателя на файла), а директориите – груповите права и setgid. Полезна опция, когато група потребители работят в споделена директория.

Задава се с

$sudo chmod g+s /data/projects

Показва се с s в груповата позиция на листинга:

$ ls -l -d /data/projects

drwxrwsr-x 16 root staff 4096 Oct 19 13:14 /data/projects

Опцията -d означава "don't list files in the directory, just list the directory itself"

Подразбиращи се права – команда umask

Командата umask позволява да се зададе с какви права да се създават новите файлове. 

Правата се задават с цифри и указват правата, които няма да се дават на новите файлове и директории.

Например:

$ umask 002

създава файлове и директории, с всички права без право за писане от други потребители.

$ umask 022

получават всички права без право за писане на групата и други потребители

$ umask 027

не разрешава писане от групата и забранява всичко за всички останали.

Тези права са в сила до нов login. Ако трябва да се запазят за постоянно командата трябва да се вкара във файл, който се изпълнява при  login или при стартиране на CLI - например в  ~/.bashrc

Правата които се разрешават за новите фалове могат да се задават и със символи 


r : read
w : write
x : execute
u : User ownership (user who owns the file)
g : group ownership (the permissions granted to other users who are members of the file’s group)
o : other ownership (the permissions granted to users that are in neither of the two preceding categories)

Следващата команда 

$ umask u=rwx,g=,o=

ще направи  umask 077 :

$ umask u=rwx,g=,o=
$ mkdir dir2
$ touch file2
$ ls -ld dir2 file2

Примери:

If umask value set to User permission Group permission Others permission
000 all all all
007 all all none
027 all read / execute none

Внимание: командата umask  може да ограничи, но не може да разшири пподразбиращите се права на файл създаван от програма. Това може да стане с команда chmod