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

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

drwxr-s---. user group folder 

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

Когда я проверяю разрешения для этих файлов, у меня есть:

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

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

  • Недопустимый аргумент Richacl при попытке установить атрибуты
  • Как предоставить sftp доступ к подкаталогу только не к родительскому
  • Списки контроля доступа и разрешения на каталог
  • Понимание правил и разрешений udev в libusb
  • Ограничить пользователя от просмотра файлов, которыми он не владеет.
  • Предоставление одному пользователю доступа к папкам нескольких пользователей, но ограничение этих пользователей в их собственном домашнем каталоге
  • Как предоставить пользователю доступ к определенной папке в домашнем каталоге
  • rsync не сохраняет права на каталоги даже с -a
  • 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 и кладет файл, используя любые разрешения, которые он настроил для этого.

    Interesting Posts

    bash_completion для initscripts

    Как вернуться с «тестирования» на «стабильный» – понижение ядра

    PuTTY, CygwinX и переадресация X11 отказались

    Fedora 16 не загружается после того, как Win7 установил GPT-диск

    Скрыть панель запуска Docky (с этой док-станции) в Linux под управлением Ubuntu-Xenial

    Вращение catalina.out с использованием формата timestamp с использованием logrotate. как каталина. $ date.out

    Возможно ли сохранить текст в нано с одним нажатием клавиши

    Как я могу получить версию vsftpd в переменной оболочки?

    Partclone: ​​ошибка при попытке копирования разделенных блоков-блоков

    Скопировать файлы вставки в LibreOffice Writer не работает с рабочего стола Xfce

    Как узнать, какое приложение отключает сон?

    Как удалить все подкаталоги из каталога?

    Что означает «магические тесты» для команды файла?

    Escape on Control, управление клавишей Capslock, клавиша Capslock on Escape

    Как бороться с конфликтующими именами двух разделяемых библиотек?

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