сукупність
Тут працюють 2 сили. Першим з них є setgid біт , який включений в папку, folder.
drwxr-s---. user group folder
Оце sв пакет символів на початку цього рядка. Вони згруповані таким чином:
d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users
Це r-sозначає, що будь-які файли чи каталоги, створені всередині цієї папки, матимуть групу автоматично встановлену для групи group.
Ось що спричинило файли foo.txtта bar.txtстворити так:
-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt
дозволи та умаск
Дозволи, які ви бачите, - інша справа. Вони регулюються налаштуваннями для вашого umask. Ви можете бачити, на що umaskналаштовано команду umask:
$ umask
0002
ПРИМІТКА. Ці біти також називаються бітами "режиму".
Це маска, тому вона відключить будь-який біт, пов’язаний з увімкненими дозволами. У цьому прикладі єдиний біт, який я хочу відключити - це дозволи на запис для інших.
0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits
Представлення "біт" у цій команді є у десятковій формі. Отже, 2 дорівнює 010 у двійковій формі, що є бітом запису. 4 (100) означатиме, що ви хочете читати вимкнено. 7 (111) означає, що ви хочете прочитати / записати / виконати всі відключені. Створюючи це звідси:
$ umask 007
Відключить читання / запис / виконання бітів для інших користувачів.
То що ж робити з вашими файлами?
Добре umaskкерує дозволами, які будуть встановлені при створенні нового файлу. Отже, якщо у нас був такий umaskнабір:
$ umask 007
І почали торкатися нових файлів, ми побачили їх створені так:
$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile2.txt
Якщо ми змінили це на щось інше, скажіть це:
$ umask 037
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
Це не вплине на файли, які ми вже створили. Дивіться тут:
$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
То що ж відбувається з файловим браузером?
Це umaskте, що я назвав "м'яким" налаштуванням. Це ні в якому разі не є абсолютним і може бути пройдено досить легко в Unix різними способами. У багатьох інструментах є комутатори, які дозволяють задавати дозволи як частину їх роботи.
Візьмемо mkdirдля прикладу:
$ umask
0037
$ mkdir -m 777 somedir1
$
$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov 3 22:44 somedir1
За допомогою -mперемикача ми можемо перекрити umask. У touchкоманди немає цього засобу, тому ви повинні бути творчими. Дивіться це питання U&L Q&A під назвою: Чи можна створювати файли з дозволами, встановленими в командному рядку? тільки для таких методів.
Інші способи? Просто переосмислити umask. Браузер файлів, швидше за все, або робить це, або просто повністю ігнорує umaskта закладає файл, використовуючи всі дозволи, які налаштовано робити.