slacknews.org Всичко за Slackware

6окт/090

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: