Posts tagged ‘file access modes’

umask: създаване на нови файлове с определени права

Замисляли ли сте се, че всеки път като създаваме файлове в Линукс те се създават с определени права ? Нека да пробвам:

Lets see this:

touch testing
ls -l testing
-rw-r--r-- 1 test test 0 2008-03-08 01:14 testing

Файла не би трбвало да се създаде с права за изпълнение, както виждаме изхода от ls. Нека да дадем права за изпълненеи на файла.

chmod +x testing
ls -l testing
-rwxr-xr-x 1 test test 0 2008-03-08 01:16 testing

Както виждате в момента режима е 755(повече информация за правата върху файловете тук).

За да конторлираме как се създават новите файлове, може да използваме umask. Може да се каже, че umask е обратното на атрибитите на файла. Нека да кажем, че искате файловете да се създават винаги с 774 (-rwxrwxr–) атрибути, вашата umask ще е  003. Как разбрахме? 777 – 774 = 003.

За да проверим сегашната umask, който е в сила, просто напишете:

umask
0022

Първата стойност отпред 0 указва, че това това е осмична(в осмична бройна система) стойност, затова нашите атрибути по подразбиране за създаване на файлове са 755, но понеже атрибута за изпълнение не се слага по подразбиране стават 644, когато създаваме нови файлове.
Нека да сменим на 0003, което означава, чес искаме атрибутите да са 774 (rwxrwxr–).

umask 0003
touch testing2
ls -l testing2
-rw-rw-r-- 1 test test 0 2008-03-08 01:27 testing2

Атрибутите са 664, и като добавим правата за изпълнение получаваме:

chmod +x testing2
ls -l testing2
-rwxrwxr-- 1 test test 0 2008-03-08 01:27 testing2

Сега имаме 774, въпреки чеchmod +x , не добава права за изпълнение на всички други потребители. Това се дължи на umask, който ползваме. Разбирасе винаги може да го направите изпълним така с chmod o+x.

За какво да го използваме ?
Нампример нека да предположим, че имате потребител, чиито файлове трябва да могат да се четат от групата, на която той принадлежи, но файловете му да не могат да се променят или да се изпълняват. Освен това не позволяваме на всички други да му четат файловете. Това може да го постигнем с umask като въведем umask 0037 в неговия ~/.bashrc

Possibly Related Posts:


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

chmod (change mode) е доста често използвана команда за администрация. Обикновено я ползваме, за да направим даден скрипт, написан на bash, python, perl изпълним.

За да на правил файл изпълним:

chmod +x myscript.sh

По подразбиране това ще промени атрибута за всички. Файловите атрибути са 3 вида:

u ( user – собственик на файла)
g ( групата, в която е потребителя)
o ( всичко останали потребители)
a ( всички гореспоменати)

Това означава, че горната команда е подобна на тази:

chmod a+x myscript.sh

По този начин ще позволим само на собственика на файла да го изпълнява:

chmod u+x myscript.sh

Може да премахвате атрибути от файл. Да кажем, че имате права за изпълняване от всички, но искате да не е изпълним от всички други (които не са потребителя или не са от неговата група):

chmod o-x myscript.sh

Освен атрибута за изпълнение, имаме атрибути за писане и четене. За тях важи горенаписаното.

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

chmod o-rw myscript.sh

chmod може да се изпълнява и по друг начин. Може да използваме цифри за да укажем атрибутите, вместо символи.
Цифрите, които оказват атрибутите са показани по-долу:

execute = 1 (изпълнение)
write = 2 (писане)
read = 4 (четене)

В този ред на мисли ако са включени атрибутите за четене и писане имаме 2+4 = 6, а ако са включени за изпълнение и четене имаме 1+4 = 5.

За да може собственика на файла да има rwx атрибути, но групите, на които принадлежи, и всички останали да имат само rx, може да направим това:

chmod 755 myscript.sh

Така, 7= 4+2+1 (rwx) и 5 = 4+1 (rx).

Possibly Related Posts: