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
и устанавливает файл, используя те разрешения, для которых он настроен.
0002
. Если umask устанавливает разрешения вместо удаления прав, тогда бит выполнения будет установлен для пользователя и группы, когда это произойдетtouch
, но это не так.touch
команды. Смотрите ссылку я включенную в моем А. Эта ссылка: unix.stackexchange.com/questions/47178/...