Как применяются разрешения файлов для вновь созданных файлов?

У меня есть каталог, который имеет следующие разрешения:

drwxr-s---. user group folder 

На рабочем столе я обращаюсь к этой папке и щелкните правой кнопкой мыши, чтобы создать новый файл-вызов foo.txt . Затем, используя терминал, я создал другой файл, используя команду $ touch bar.txt .

  • Проверка эффективных разрешений файла для пользователя
  • Что является допустимым вариантом использования для разрешения «выполнить только»?
  • Разрешения на создание некоторых (но не всех) файлов, видимых непосредственно под каталогом
  • Приоритет ACLS, когда пользователь принадлежит нескольким группам
  • Невозможно создать файл + r
  • Есть ли способ в Linux иметь одного пользователя, не являющегося пользователем root, проверить, имеет ли другой пользователь, не являющийся пользователем root, права на папку / файл?
  • Когда я проверяю разрешения для этих файлов, у меня есть:

     -rw-r--r--. user group foo.txt -rw-rw-r--. user group bar.txt 

    Я ожидал – -rw-r-----. user group -rw-r-----. user group . Как появилось дополнительное разрешение на запись для прав группы и чтения для других?

  • Как определить, какой процесс приводит к тому, что файл потеряет свои разрешения?
  • не может chown файл от моего пользователя $ к другому $ user
  • Скопируйте файл с USB-накопителя на рабочий стол, загруженный с помощью LiveCD
  • Восстановление из chown -R /
  • Как сделать резервную копию системных подключений на флэш-накопитель USB / флэш-накопитель?
  • Разрешения для сценария отправки
  • One Solution collect form web for “Как применяются разрешения файлов для вновь созданных файлов?”

    setguid

    Здесь работают 2 силы. Первый – бит setgid, который включен в папке, folder .

     drwxr-s---. user group folder 

    Это s в пачке символов в начале этой строки. Они группируются следующим образом:

     d - directory rwx - read/write/execute bits for user rs - read/execute/setuid bits for group --- - nothing for other users 

    rs означает, что любые файлы или каталоги, созданные внутри этой папки, будут автоматически группироваться в группу group .

    Вот почему файлы foo.txt и bar.txt создаются так:

     -rw-r--r--. user group foo.txt -rw-rw-r--. user group bar.txt 

    Разрешения & umask

    Разрешения, которые вы видите, – другое дело. Они регулируются настройками для вашего 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 в двоичной форме, что является битом записи. A 4 (100) означает, что вы хотите, чтобы чтение было отключено. A 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 и кладет файл, используя любые разрешения, которые он настроил для этого.

    Linux и Unix - лучшая ОС в мире.