См. Разрешения для новых файлов в заданном каталоге

Я не понимаю, как моя Linux-машина работает с новыми файлами.

У меня Amazon Linux AMI (дистрибутив на основе RHEL), и когда я выполняю umask я получаю 0002 , поэтому получаю всякий раз, когда создаю новый материал, другие пользователи не получат доступ на write .

Но затем я иду в свой домашний каталог, и я печатаю:

 $ mkdir myDir $ touch myDir/myFile $ ls -l | grep myDir 

и я получаю

 drwxrwxr-x 2 myself myself 4096 May 11 22:37 myDir 

и для папки:

 $ ls -l myDir -rw-rw-r-- 1 myself myself 0 May 11 22:37 myFile 

Поэтому, видимо, там происходит больше, чем моя umask , так myFile разрешения myFile более ограничительны, чем защита от write .

Копаем глубже, если я попробую:

 $ sudo touch /var/run/myPidFile.pid $ ls -l /var/run/ | grep myPidFile.pid -rw-r--r-- 1 root root 0 May 11 22:42 myPidFile.pid 

Так myPidFile.pid получает гораздо более ограничительное разрешение по умолчанию, под /var/run тогда myFile попадает под мою домашнюю папку.

Мы могли бы обвинить root umask но если я запустил umask под root я получаю 0022 который действительно более ограничительный, чем 0002 umask моего пользователя, но по-прежнему не объясняет, как не разрешено разрешение бит выполнения.

Итак, как я могу понять разрешение по умолчанию для папки на Linux?

  • Umask не работает
  • установите umask перед каждой командой неинтерактивного оболочки без входа
  • Где применяется значение, которое umask применяется для
  • Разрешения на ftp'd-файлы, похоже, не соответствуют umask
  • Как определяются разрешения по умолчанию (на OS X)?
  • Разрешения mkdir не соответствуют umask (изменение зависит от местоположения)
  • установите umask (разрешения) аналогично setgid в каталоге
  • Как найти, где я установил «umask 077»?
  • 2 Solutions collect form web for “См. Разрешения для новых файлов в заданном каталоге”

    Umask – большая часть головоломки. У корня есть другая umask. Это довольно типично.

    Часть загадки, которую вам не хватает, состоит в том, что umask – это маска . Когда приложение создает файл, оно указывает некоторые разрешения; umask – это фильтр для этих разрешений, который удаляет некоторые биты разрешения. Файл содержит только биты разрешений, включенные в приложение. Например, приложение, которое намеревается создать неисполняемый файл (например, touch ), передает биты 666 (в восьмеричном); с umask 002 это приводит к разрешениям 664, т. е. rw-rw-r–: umask удалил бит другой записи. При создании каталога приложение (например, mkdir ) обычно разрешает выполнение, поэтому укажите 777 в качестве разрешений; umask 002 приводит к разрешениям 775 в каталоге, то есть rwxrwxr-x.

    Вы можете видеть, какие разрешения использует приложение, наблюдая за вызовами системы . Например:

     $ strace -e open,mkdir touch foo … skipping opening of dynamically linked libraries etc. … open("foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 +++ exited with 0 +++ $ strace -e open,mkdir mkdir goo … skipping opening of dynamically linked libraries etc. … mkdir("goo", 0777) = 0 +++ exited with 0 +++ 

    Директории нужны разрешения на выполнение для нее, чтобы изменить ее или получить список, поэтому, когда каталог сделан, он автоматически получает бит + x.

    Однако файлам требуется только бит выполнения, если они являются скомпилированным двоичным (c / c ++ / etc) или интерпретируемым сценарием (sh / bash / php / perl / etc), а также не делают вещи исполняемыми по умолчанию по соображениям безопасности.

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