setguid
Здесь работают 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 под названием: Можно ли создавать файлы с разрешениями, установленными в командной строке? только для таких методов.
Другие способы? Просто переопределите umask. Скорее всего, файловый браузер либо делает это, либо просто полностью игнорирует umaskи устанавливает файл, используя те разрешения, для которых он настроен.