Запомняне

» Здравейте
[ Вход :: Регистриране ]
 » Начало » Li Форуми » Li Статии » Полезно » Що е то umask?
  • Страница 1 от 2 Skip to Page:
  • 1
  • 2
  • Next Page
  • Last Page
Тема: Що е то umask?
Мнение #1 Skip to the next post in this topic.
Написано на: Октомври 27 2007, 13:09
nikolavp
 

Avatar




Група: Li maniacs
Мнения: 560
Регистриран: Юли 2006

Оценка: 4

Offline
Много от вас сигурно са виждали umask=000 в /etc/fstab, или пък са Ви дали съвет да го сложите за вашия ntfs/vfat дял. Много хора не знаят - какво означават тези числа  ;), ако и вие сте от тях, значи статията е за Вас :).

Ще ви трябват и познания за правата в Линукс, които можете да си набавите от прекрасната статия на quintessence, която можете да прочетете тук.

Както (вече) знаете с chmod можем да променяме правата на файл/директория, но за какво всъщност служи umask ? Umask е създадена разработчиците, за да можете да укажете на ядрото как да създава новите файлове във вашата файлова система. Ядрото по подразбиране създава файлове с права 0666, първата нула се маха и не ви интересува. Това 666 ще рече, че по подразбиране ядрото създава файловете с права
Цитат:

rw-rw-rw-
което означава писане и чете за притежателя, групата и всички други потребители на машината. Тук идва мястото на umask - стойността му казва кои права да премахне при създаването файл/директория.
Нека вземем един пример:
Сегашната маска можете да видите чрез командата
Код: 
umask
по подразбиране тя трябва да ви даде това
Код: 

nikolavp@Nikolavp ~ $ umask
0022
Сега правим проста сметка 0666 - 0022 и получаваме, че новосъздадените файлове/директории ще са с права 0644, което на чист български означава писане и четене за притежателя и само чете за групата и всички другите потребители. Това веднага може да проверим с тези команди
Код: 
nikolavp@Nikolavp ~ $ touch file
nikolavp@Nikolavp ~ $ ls -l file
-rw-r--r-- 1 nikolavp nikolavp 0 2007-10-27 16:02 file
Логично ако стойността на umask е 0000 да създаде всички файлове с права за четене и писане за притежателя, групата, всички други ;).


Редактирано от nikolavp на Октомври 30 2007, 13:42

Контакти:  nikolavp

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #2 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 09 2008, 15:42
_kernel_88
 

No avatar chosen




Група: Li fans
Мнения: 8
Регистриран: Януари 2008

Оценка: няма

Offline
Цитат:  (nikolavp @ Oct. 27 2007,13:09)

Много от вас сигурно са виждали umask=000 в /etc/fstab, или пък са Ви дали съвет да го сложите за вашия ntfs/vfat дял. Много хора не знаят - какво означават тези числа  ;), ако и вие сте от тях, значи статията е за Вас :).

Ще ви трябват и познания за правата в Линукс, които можете да си набавите от прекрасната статия на quintessence, която можете да прочетете тук.

Както (вече) знаете с chmod можем да променяме правата на файл/директория, но за какво всъщност служи umask ? Umask е създадена разработчиците, за да можете да укажете на ядрото как да създава новите файлове във вашата файлова система. Ядрото по подразбиране създава файлове с права 0666, първата нула се маха и не ви интересува. Това 666 ще рече, че по подразбиране ядрото създава файловете с права
Цитат:

rw-rw-rw-
което означава писане и чете за притежателя, групата и всички други потребители на машината. Тук идва мястото на umask - стойността му казва кои права да премахне при създаването файл/директория.
Нека вземем един пример:
Сегашната маска можете да видите чрез командата
Код: 
umask
по подразбиране тя трябва да ви даде това
Код: 

nikolavp@Nikolavp ~ $ umask
0022
Сега правим проста сметка 0666 - 0022 и получаваме, че новосъздадените файлове/директории ще са с права 0644, което на чист български означава писане и четене за притежателя и само чете за групата и всички другите потребители. Това веднага може да проверим с тези команди
Код: 
nikolavp@Nikolavp ~ $ touch file
nikolavp@Nikolavp ~ $ ls -l file
-rw-r--r-- 1 nikolavp nikolavp 0 2007-10-27 16:02 file
Логично ако стойността на umask е 0000 да създаде всички файлове с права за четене и писане за притежателя, групата, всички други ;).

Как бихте изчислили правата на новосъздаден файл, ако маската е 0333 ? На моята система се получават права -r--r--r--
Контакти:  _kernel_88
WEB  
Мнение #3 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 09 2008, 17:38
stumps
 

Avatar




Група: Li psychos
Мнения: 1311
Регистриран: Април 2005

Offline
Да, вярно е ... 0333 е еквивалетно на -r--r--r

Пример за изчисляване:

0123 --> 001-010-011 --> NOT (001-010-011) --> 110-101-100 --> -rw-r-x-r--


Следва част от таблицата на всички възможни състояния (за тези, на които не им се смята двоично):

0000 е еквиваленто на -rwxrwxrwx
0111 е еквиваленто на -rw-rw-rw-
0222 е еквиваленто на -r-xr-xr-x
0333 е еквиваленто на -r--r--r--
0444 е еквиваленто на -wx-wx-wx
0555 е еквиваленто на --w--w--w-
0666 е еквиваленто на ---x--x--x
0777 е еквиваленто на ----------
0102 е еквиваленто на -rw-rwxr-x

и т.н.


Редактирано от stumps на Януари 09 2008, 17:42

Два месеца работа с компютъра спестява два часа четене на документация

Бизнесът на Microsoft е бизнес за трима: Един пише вируси, друг прави антивирусни, а третият продава (псевдо)операционна система за тях.
Контакти:  stumps

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
Мнение #4 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 09 2008, 19:45
_kernel_88
 

No avatar chosen




Група: Li fans
Мнения: 8
Регистриран: Януари 2008

Оценка: няма

Offline
Цитат:  (stumps @ Jan. 09 2008,17:38)

Да, вярно е ... 0333 е еквивалетно на -r--r--r

Пример за изчисляване:

0123 --> 001-010-011 --> NOT (001-010-011) --> 110-101-100 --> -rw-r-x-r--


Следва част от таблицата на всички възможни състояния (за тези, на които не им се смята двоично):

0000 е еквиваленто на -rwxrwxrwx
0111 е еквиваленто на -rw-rw-rw-
0222 е еквиваленто на -r-xr-xr-x
0333 е еквиваленто на -r--r--r--
0444 е еквиваленто на -wx-wx-wx
0555 е еквиваленто на --w--w--w-
0666 е еквиваленто на ---x--x--x
0777 е еквиваленто на ----------
0102 е еквиваленто на -rw-rwxr-x

и т.н.

Благодаря ви ! Аз разбрах вашето двоично смятане, но ми направи впечатление, че вие не вадите от 0666 стойността на маската.Как ще се изчисли ако използвом метода с вадене от 0666.Защото ако извадя 0666-0333  получавям пак 0333, което е грешно.Как се вади всъщност при въпросната операция ?
Контакти:  _kernel_88
WEB  
Мнение #5 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 09 2008, 21:46
gosheto
 

Avatar




Група: Li fans
Мнения: 162
Регистриран: Април 2005

Оценка: 5

Offline
umask се вади от 0777 :21;
Объркаването идва от това, че umask=0222 дава права за четене и изпълнение. Но като се създава файл с touch (и не само), не се вдига бита за изпълнение.
Контакти:  gosheto
WEB  
Мнение #6 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 09 2008, 22:11
_kernel_88
 

No avatar chosen




Група: Li fans
Мнения: 8
Регистриран: Януари 2008

Оценка: няма

Offline
Цитат:  (gosheto @ Jan. 09 2008,21:46)

umask се вади от 0777 :21;
Объркаването идва от това, че umask=0222 дава права за четене и изпълнение. Но като се създава файл с touch (и не само), не се вдига бита за изпълнение.

Ще вадим от 0777 само ако е директория.
Ако е файл вадим от 0666
Не е ли така ?
Контакти:  _kernel_88
WEB  
Мнение #7 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 09 2008, 23:17
gosheto
 

Avatar




Група: Li fans
Мнения: 162
Регистриран: Април 2005

Оценка: 5

Offline
Цитат:  (_kernel_88 @ Януари 09 2008,22:11)

Ще вадим от 0777 само ако е директория.
Ако е файл вадим от 0666
Не е ли така ?

Не е така. Дали е директория или файл няма значение. Ето още веднъж статията на quintessence тук, в която много добре е обяснено значението на всеки бит при задаване на права на файлове и директории


Редактирано от gosheto на Януари 09 2008, 23:18
Контакти:  gosheto
WEB  
Мнение #8 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 10 2008, 13:14
_kernel_88
 

No avatar chosen




Група: Li fans
Мнения: 8
Регистриран: Януари 2008

Оценка: няма

Offline
Цитат:  (gosheto @ Jan. 09 2008,23:17)

Цитат:  (_kernel_88 @ Януари 09 2008,22:11)

Ще вадим от 0777 само ако е директория.
Ако е файл вадим от 0666
Не е ли така ?

Не е така. Дали е директория или файл няма значение. Ето още веднъж статията на quintessence тук, в която много добре е обяснено значението на всеки бит при задаване на права на файлове и директории

Аз разбрах значението на отделните битове, но не разбрах кога вадим от 0666 и кога от 0777. В статията, която обеснява значението и смисъла на маската се казва, че се вади от 0666 и никъде не се казва, че се вади от 0777
Контакти:  _kernel_88
WEB  
Мнение #9 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 10 2008, 13:34
gosheto
 

Avatar




Група: Li fans
Мнения: 162
Регистриран: Април 2005

Оценка: 5

Offline
Винаги се вади от 0777, но както ти казах по подразбиране при umask=0222 touch не вдига бита за изпълнение (създава празен текстов файл, който не е изпълним) :P
Ето един пример за директории от където ще ти стане по ясно:
Код: 
vasil@Install:~/proba$ umask
0222
vasil@Install:~/proba$ mkdir test-0222
vasil@Install:~/proba$ ls -l
total 0
dr-xr-xr-x 2 vasil vasil 48 2008-01-10 13:23 test-0222
vasil@Install:~/proba$ umask 0333
vasil@Install:~/proba$ mkdir test-0333
vasil@Install:~/proba$ ls -l
total 0
dr-xr-xr-x 2 vasil vasil 48 2008-01-10 13:23 test-0222
dr--r--r-- 2 vasil vasil 48 2008-01-10 13:24 test-0333


Още нещо от мен - ако за директория нямаш вдигнат бит за изпълнение в нея не можеш да влезнеш, за това се използва umask=0222, а не umask=0333
Код: 
vasil@Install:~/proba$ cd test-0333/
bash: cd: test-0333/: Permission denied


Редактирано от gosheto на Януари 10 2008, 13:39
Контакти:  gosheto
WEB  
Мнение #10
Skip to the previous post in this topic. Написано на: Януари 10 2008, 14:24
_kernel_88
 

No avatar chosen




Група: Li fans
Мнения: 8
Регистриран: Януари 2008

Оценка: няма

Offline
Цитат:  (gosheto @ Jan. 10 2008,13:34)

Винаги се вади от 0777, но както ти казах по подразбиране при umask=0222 touch не вдига бита за изпълнение (създава празен текстов файл, който не е изпълним) :P
Ето един пример за директории от където ще ти стане по ясно:
Код: 
vasil@Install:~/proba$ umask
0222
vasil@Install:~/proba$ mkdir test-0222
vasil@Install:~/proba$ ls -l
total 0
dr-xr-xr-x 2 vasil vasil 48 2008-01-10 13:23 test-0222
vasil@Install:~/proba$ umask 0333
vasil@Install:~/proba$ mkdir test-0333
vasil@Install:~/proba$ ls -l
total 0
dr-xr-xr-x 2 vasil vasil 48 2008-01-10 13:23 test-0222
dr--r--r-- 2 vasil vasil 48 2008-01-10 13:24 test-0333


Още нещо от мен - ако за директория нямаш вдигнат бит за изпълнение в нея не можеш да влезнеш, за това се използва umask=0222, а не umask=0333
Код: 
vasil@Install:~/proba$ cd test-0333/
bash: cd: test-0333/: Permission denied

Ясно е, че при новосъздаден текстови няма смисъл да се вдига бита за изпълнение. Ясно е всичко, това което ми казваш.
Но като се вади винаги от 0777 защо въобще в сатията се споменава за вадене от 0666 ? Искаш да кажеш, че като не се вдигте бита за изпълнение а той е единица всъщност се получава 0666 и затова в статията говорят за вадене от 0666
Контакти:  _kernel_88
WEB  
Общо 16 отговор(а) от Октомври 27 2007, 13:09 до сега
  • Страница 1 от 2 Skip to Page:
  • 1
  • 2
  • Next Page
  • Last Page
 » Начало » Li Форуми » Li Статии » Полезно » Що е то umask?

© 2014 Linux Index Project
Powered by iF 1.0.0 © 2006 ikonForums