Запомняне

» Здравейте
[ Вход :: Регистриране ]
 » Начало » Li Форуми » Li Статии » Полезно » Що е то umask?
  • Страница 2 от 2 Skip to Page:
  • First Page
  • Previous Page
  • 1
  • 2
Тема: Що е то umask?
Мнение #11 Skip to the next post in this topic.
Написано на: Януари 10 2008, 17:29
gosheto
 

Avatar




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

Оценка: 5

Offline
Ето малко за размисъл:
Код: 
vasil@Install:~/proba$ umask 0222
vasil@Install:~/proba$ umask -S
u=rx,g=rx,o=rx
vasil@Install:~/proba$ umask 0333
vasil@Install:~/proba$ umask -S
u=r,g=r,o=r

ето и един пример както създадем файл, който е изпълним:
Код: 
vasil@Install:~/proba$ umask 0022
vasil@Install:~/proba$ gcc proba.c
vasil@Install:~/proba$ ls -l
total 12
-rwxr-xr-x 1 vasil vasil 6474 2008-01-10 17:18 a.out
-rw-rw-rw- 1 vasil vasil   67 2008-01-10 17:13 proba.c
vasil@Install:~/proba$ rm a.out
vasil@Install:~/proba$ umask 0033
vasil@Install:~/proba$ gcc proba.c
vasil@Install:~/proba$ ls -l
total 12
-rwxr--r-- 1 vasil vasil 6474 2008-01-10 17:19 a.out
-rw-rw-rw- 1 vasil vasil   67 2008-01-10 17:13 proba.c

proba.c e сорс на програма написана на C, a a.out e генерираният файл от gcc

p.s. Използвам umask=0022 и umask=0033 за да мога да дам права на потребителя да създаде файл, който е изпълним иначе дава грешка както сам се досещаш  :43;
Контакти:  gosheto
WEB  
Мнение #12 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 12 2008, 12:28
_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 тук, в която много добре е обяснено значението на всеки бит при задаване на права на файлове и директории
umask (abbreviated from user file creation mode mask) is a function in POSIX environments which affects the default file system mode for newly created files and directories of the current process. The permissions of a file created under a given umask value are calculated using the following bitwise operation (note that umasks are generally specified in octal):

   bitwise AND of the unary complement of the argument (using bitwise NOT) and the full access mode.

The full access mode is 666 in the case of files, and 777 in the case of directories. Most Unix shells provide a umask command that affects all child processes executed in this shell.

[edit] Examples

Assuming the umask has the value 174, any new file will be created with the permissions 602 and any new directory will have permissions 603 because:

6668 AND NOT(1748) = 6028

while

7778  AND NOT(1748) = 6038

7778 = (111 111 111)2
174 8 = (001 111 100)2
NOT(001 111 100)2 = (110 000 011)2
(111 111 111)2 AND (110 000 011)2 = (110 000 011)2
    7778           NOT (174)8          (603)8


Toва е от http://en.wikipedia.org/wiki/Umask
Явно има значение дали  е файл или директория.
Знам, че в Линукс всичко е файл, но  в случая явно се прави разлика. Обърнете внимание на това, което съм направил получерно.


Редактирано от _kernel_88 на Януари 12 2008, 12:38
Контакти:  _kernel_88
WEB  
Мнение #13 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 12 2008, 13:19
_kernel_88
 

No avatar chosen




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

Оценка: няма

Offline
Number File      Dir
0           rw-      rwx
1           rw-      rw-
2           r--       r-x
3           r--       r--
4          -w-      -wx
5          -w-      -w-
6          ---       --x
7          ---       ---

Източник : Unix in a Nutshell 3rd ed 1999


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

Avatar




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

Оценка: 5

Offline
Аз мога да ти намеря много статии, в кой пише, че за файлове се вади от 666, а за директории от 777.  Това е така, защото повечето програми създават файлове, които не са изпълними (бита за изпълнение не се вдига).
Но истината е една: в общия случай се вади от 777 независимо дали е файл или директория.
Май не ми четеш постовете защо  :14;
Погледни примера, който ти показах малко по нагоре и ми отговори на въпроса: С какви права трябва да се създаде файл при umask=033 ?


Отг. По твойта логика вадиме от 666 (нали е файл), така че файлът трябва да е с права 633, но файлът е с 744  :8;
Контакти:  gosheto
WEB  
Мнение #15 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 13 2008, 19:39
_kernel_88
 

No avatar chosen




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

Оценка: няма

Offline
Цитат:  (gosheto @ Jan. 12 2008,14:16)

Аз мога да ти намеря много статии, в кой пише, че за файлове се вади от 666, а за директории от 777.  Това е така, защото повечето програми създават файлове, които не са изпълними (бита за изпълнение не се вдига).
Но истината е една: в общия случай се вади от 777 независимо дали е файл или директория.
Май не ми четеш постовете защо  :14;
Погледни примера, който ти показах малко по нагоре и ми отговори на въпроса: С какви права трябва да се създаде файл при umask=033 ?




Отг. По твойта логика вадиме от 666 (нали е файл), така че файлът трябва да е с права 633, но файлът е с 744  :8;

magmind[~]$ umask
0022
magmind[~]$ umask 0033
magmind[~]$ umask
0033
magmind[~]$ touch testfile
magmind[~]$ ls -l testfile
-rw-r--r-- 1 magmind users 0 2008-01-13 19:31 testfile
magmind[~]$ mkdir testdir
magmind[~]$ ls -ld testdir
drwxr--r-- 2 magmind users 4096 2008-01-13 19:32 testdir


Това е моят отговор. Вижда се че файлът има права
-rw-r--r-- тоест 644, а не 744, както ти пишеш.Но всъщност точно това потвърждава нещо друго, което казваш - че за файлове не се вдига бита за изпълнение
Директорията си е 744.

Разбрах твоята логика- вадим си от 777 и винаги си имаме едно наум, че бита за изпълнение си е свален.

Объркването ми идваше от там, че тук пише вадете от 666 там пише вадете от 777 и накрая и аз накрая не можех да си обесня.Та дори  в статията в линукс-индекс и дума не се казваше за вадене от 777.

Сега всичко ми е ясно. Водих тоя мини -дебат с теб на тая тема  само с едничката цел да си обесня нещата.Никога, за да се изтъкна, че съм по прав от тоя или ония. Затова искам да ти благодаря, че отговаряше на моите въпроси.


Редактирано от _kernel_88 на Януари 13 2008, 20:40
Контакти:  _kernel_88
WEB  
Мнение #16 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Януари 13 2008, 22:28
gosheto
 

Avatar




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

Оценка: 5

Offline
Радвам се, че си си изяснил нещата.
Този форум и самият Li проект e за това - да си помагаме и нещата около линукс да са по ясни  :33;

p.s. Може би аз не можаш от самото начало да ти обясня нещата. umask просто казва кои битове са позволени да се вдигат, а от програмта (командата) зависи дали те ще се вдигнат (най - вече бита за изпълнение).
Контакти:  gosheto
WEB  
Мнение #17
Skip to the previous post in this topic. Написано на: Февруари 25 2008, 16:59

Avatar




Група: Li fans
Мнения: 763
Регистриран: Февруари 2008

Оценка: 5

Offline
мен ме интересува не 0ХХХ стойности, тях ги знам. интересува ме проклетата 0 за какво е. какви стойности заема и за какво има смисъл да се променя.

Контакти:  altoas

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
Общо 16 отговор(а) от Октомври 27 2007, 13:09 до сега
  • Страница 2 от 2 Skip to Page:
  • First Page
  • Previous Page
  • 1
  • 2
 » Начало » Li Форуми » Li Статии » Полезно » Що е то umask?

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