Как установить umask для определенной папки

По некоторым очевидным причинам мне нужно установить значение umask для одной конкретной папки. Как это можно сделать?

Спасибо заранее!

UPDATE 1

Причина, по которой мне нужно использовать umask для конкретной папки, следующая. У меня есть веб-приложение, и когда он создает некоторый файл, разрешение по умолчанию - 700. Но для этого файла мне требуется как минимум 755 разрешений. Думаю, теперь я могу объяснить проблему более четко.

19
задан 23 May 2011 в 01:23

28 ответов

Другим решением может быть просто установить идентификатор группы на файлы, созданные в каталоге, что делает новые файлы, принадлежащие идентификатору группы каталогов, вместо идентификатора группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

Это устанавливает специальное разрешение для файла setgid, которое приведет к созданию всех файлов, созданных в /my/folder, принадлежащих группе www-data, которая имеет разрешение rx (5) из-за родительского каталога.

0
ответ дан 25 July 2018 в 21:51
  • 1
    Вы ошибаетесь GUID для восьмеричного значения SUID – adampski 24 January 2018 в 01:44

вы можете использовать setfacl

setfacl -d -m group:name:rwx /path/to/your/dir

Где name - имя группы

Чтобы узнать, какие группы вы или какой-либо конкретный пользователь видите в Unix / linux, вы узнаете, какая группа данного пользователя находится через командную строку?

24
ответ дан 25 July 2018 в 21:51
  • 1
    Возможно, setfacl изменился. Я получаю сообщение об ошибке, что -m не является допустимым вариантом. – Ryan Burnette 10 January 2015 в 23:51
  • 2
    Райан, setfacl не изменяется. Скорее всего, вы не указали правильное название группы (после -m). – sergk 4 February 2015 в 07:10
  • 3
    довольно уверен setfacl для списков контроля доступа , а не umask. Лучшее решение, но не то, что было задано, я не думаю. – Wyatt8740 11 February 2016 в 04:05

Вы не можете установить umask для каталога, это значение уровня процесса. Если вам нужно запретить другим читать файлы в каталоге, отмените соответствующие биты разрешений.

Например, если у вас есть каталог /home/user/directory с некоторыми файлами и каталогами, которые могут получать разрешения, такие как 777 из процесс, установите биты разрешения /home/user/directory примерно на 700. Это сделает невозможным слияние других пользователей (исключая корень суперпользователя) в /home/user/directory.

Я параноик и настроен разрешения на /home/user до 750, поэтому я могу читать, писать и спускаться в своем домашнем каталоге. Это приводит к тому, что папки, подобные /home/user/Public, не могут быть доступны другим, но я могу жить с этим.

За обновление вашего вопроса: все же вы не можете контролировать это в файловой системы (кроме использования другого типа файловой системы, такого как FAT, который сильно запрещен), вам нужно сделать это в своем веб-приложении. Если ваш webapp закодирован в PHP, вы можете изменить umask на лету, используя функцию umask:

<?php umask(0022); // other code ?>

Вы можете поместить это в файл конфигурации, например файл, содержащий пароль для подключения к базе данных (мышление в таких приложениях, как Wordpress).

Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в свои файлы конфигурации, иначе вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, подобные 755 и 644, весьма опасны для webapps, если код чувствителен, каждый может его прочитать.

10
ответ дан 25 July 2018 в 21:51
  • 1
    Я знаю, что это древний, но я считаю, что стоит упомянуть: администратор может связать mount /home/user/Public (mount -o bind /home/user/Public /some/other/place), чтобы обойти проблему с разрешениями родительского каталога. – Adrian Günter 8 May 2018 в 18:52

Чтобы изменить разрешения для папки, используйте chmod. umask для файлов.

Установите umask на то, что вам нужно

umask xxx

, и измените его, когда вы сделали

umask 022
-1
ответ дан 25 July 2018 в 21:51
  • 1
    umask = файлы и каталоги, fmask = только файлы, dmask = только каталоги. :П – htorque 23 May 2011 в 01:15
  • 2
    Я узнал что-то новое сегодня :) – wojox 23 May 2011 в 01:23
  • 3
    На самом деле это опции для определенных файловых систем, таких как NTFS (не команда настройки маски создания файла umask). Извините за добавление запутанной информации. – htorque 23 May 2011 в 01:54
  • 4
    umask изменяет маску создания файла для текущего процесса (текущую оболочку), если у вас есть другой открытый или пользовательский процесс оболочки, я не верю, что это будет затронуто. Эта команда также повлияет на любые другие файлы, созданные за пределами каталога, до тех пор, пока вы не измените ее. – Mr. Dave 3 May 2017 в 17:57

Другим решением может быть просто установить идентификатор группы на файлы, созданные в каталоге, что делает новые файлы, принадлежащие идентификатору группы каталогов, вместо идентификатора группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

Это устанавливает специальное разрешение для файла setgid, которое приведет к созданию всех файлов, созданных в /my/folder, принадлежащих группе www-data, которая имеет разрешение rx (5) из-за родительского каталога.

0
ответ дан 2 August 2018 в 03:27
  • 1
    Вы ошибаетесь GUID для восьмеричного значения SUID – adampski 24 January 2018 в 01:44

вы можете использовать setfacl

setfacl -d -m group:name:rwx /path/to/your/dir

Где name - имя группы

Чтобы узнать, какие группы вы или какой-либо конкретный пользователь видите в Unix / linux, вы узнаете, какая группа данного пользователя находится через командную строку?

24
ответ дан 2 August 2018 в 03:27
  • 1
    Возможно, setfacl изменился. Я получаю сообщение об ошибке, что -m не является допустимым вариантом. – Ryan Burnette 10 January 2015 в 23:51
  • 2
    Райан, setfacl не изменяется. Скорее всего, вы не указали правильное название группы (после -m). – sergk 4 February 2015 в 07:10
  • 3
    довольно уверен setfacl для списков контроля доступа , а не umask. Лучшее решение, но не то, что было задано, я не думаю. – Wyatt8740 11 February 2016 в 04:05

Вы не можете установить umask для каталога, это значение уровня процесса. Если вам нужно запретить другим читать файлы в каталоге, отмените соответствующие биты разрешений.

Например, если у вас есть каталог /home/user/directory с некоторыми файлами и каталогами, которые могут получать разрешения, такие как 777 из процесс, установите биты разрешения /home/user/directory примерно на 700. Это сделает невозможным слияние других пользователей (исключая корень суперпользователя) в /home/user/directory.

Я параноик и настроен разрешения на /home/user до 750, поэтому я могу читать, писать и спускаться в своем домашнем каталоге. Это приводит к тому, что папки, подобные /home/user/Public, не могут быть доступны другим, но я могу жить с этим.

За обновление вашего вопроса: все же вы не можете контролировать это в файловой системы (кроме использования другого типа файловой системы, такого как FAT, который сильно запрещен), вам нужно сделать это в своем веб-приложении. Если ваш webapp закодирован в PHP, вы можете изменить umask на лету, используя функцию umask:

<?php umask(0022); // other code ?>

Вы можете поместить это в файл конфигурации, например файл, содержащий пароль для подключения к базе данных (мышление в таких приложениях, как Wordpress).

Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в свои файлы конфигурации, иначе вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, подобные 755 и 644, весьма опасны для webapps, если код чувствителен, каждый может его прочитать.

10
ответ дан 2 August 2018 в 03:27
  • 1
    Я знаю, что это древний, но я считаю, что стоит упомянуть: администратор может связать mount /home/user/Public (mount -o bind /home/user/Public /some/other/place), чтобы обойти проблему с разрешениями родительского каталога. – Adrian Günter 8 May 2018 в 18:52

Чтобы изменить разрешения для папки, используйте chmod. umask для файлов.

Установите umask на то, что вам нужно

umask xxx

, и измените его, когда вы сделали

umask 022
-1
ответ дан 2 August 2018 в 03:27
  • 1
    umask = файлы и каталоги, fmask = только файлы, dmask = только каталоги. :П – htorque 23 May 2011 в 01:15
  • 2
    Я узнал что-то новое сегодня :) – wojox 23 May 2011 в 01:23
  • 3
    На самом деле это опции для определенных файловых систем, таких как NTFS (не команда настройки маски создания файла umask). Извините за добавление запутанной информации. – htorque 23 May 2011 в 01:54
  • 4
    umask изменяет маску создания файла для текущего процесса (текущую оболочку), если у вас есть другой открытый или пользовательский процесс оболочки, я не верю, что это будет затронуто. Эта команда также повлияет на любые другие файлы, созданные за пределами каталога, до тех пор, пока вы не измените ее. – Mr. Dave 3 May 2017 в 17:57

Другим решением может быть просто установить идентификатор группы на файлы, созданные в каталоге, что делает новые файлы, принадлежащие идентификатору группы каталогов, вместо идентификатора группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

Это устанавливает специальное разрешение для файла setgid, которое приведет к созданию всех файлов, созданных в /my/folder, принадлежащих группе www-data, которая имеет разрешение rx (5) из-за родительского каталога.

0
ответ дан 4 August 2018 в 19:24
  • 1
    Вы ошибаетесь GUID для восьмеричного значения SUID – adampski 24 January 2018 в 01:44

вы можете использовать setfacl

setfacl -d -m group:name:rwx /path/to/your/dir

Где name - имя группы

Чтобы узнать, какие группы вы или какой-либо конкретный пользователь видите в Unix / linux, вы узнаете, какая группа данного пользователя находится через командную строку?

24
ответ дан 4 August 2018 в 19:24
  • 1
    Возможно, setfacl изменился. Я получаю сообщение об ошибке, что -m не является допустимым вариантом. – Ryan Burnette 10 January 2015 в 23:51
  • 2
    Райан, setfacl не изменяется. Скорее всего, вы не указали правильное название группы (после -m). – sergk 4 February 2015 в 07:10
  • 3
    довольно уверен setfacl для списков контроля доступа , а не umask. Лучшее решение, но не то, что было задано, я не думаю. – Wyatt8740 11 February 2016 в 04:05

Вы не можете установить umask для каталога, это значение уровня процесса. Если вам нужно запретить другим читать файлы в каталоге, отмените соответствующие биты разрешений.

Например, если у вас есть каталог /home/user/directory с некоторыми файлами и каталогами, которые могут получать разрешения, такие как 777 из процесс, установите биты разрешения /home/user/directory примерно на 700. Это сделает невозможным слияние других пользователей (исключая корень суперпользователя) в /home/user/directory.

Я параноик и настроен разрешения на /home/user до 750, поэтому я могу читать, писать и спускаться в своем домашнем каталоге. Это приводит к тому, что папки, подобные /home/user/Public, не могут быть доступны другим, но я могу жить с этим.

За обновление вашего вопроса: все же вы не можете контролировать это в файловой системы (кроме использования другого типа файловой системы, такого как FAT, который сильно запрещен), вам нужно сделать это в своем веб-приложении. Если ваш webapp закодирован в PHP, вы можете изменить umask на лету, используя функцию umask:

<?php umask(0022); // other code ?>

Вы можете поместить это в файл конфигурации, например файл, содержащий пароль для подключения к базе данных (мышление в таких приложениях, как Wordpress).

Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в свои файлы конфигурации, иначе вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, подобные 755 и 644, весьма опасны для webapps, если код чувствителен, каждый может его прочитать.

10
ответ дан 4 August 2018 в 19:24
  • 1
    Я знаю, что это древний, но я считаю, что стоит упомянуть: администратор может связать mount /home/user/Public (mount -o bind /home/user/Public /some/other/place), чтобы обойти проблему с разрешениями родительского каталога. – Adrian Günter 8 May 2018 в 18:52

Чтобы изменить разрешения для папки, используйте chmod. umask для файлов.

Установите umask на то, что вам нужно

umask xxx

, и измените его, когда вы сделали

umask 022
-1
ответ дан 4 August 2018 в 19:24
  • 1
    umask = файлы и каталоги, fmask = только файлы, dmask = только каталоги. :П – htorque 23 May 2011 в 01:15
  • 2
    Я узнал что-то новое сегодня :) – wojox 23 May 2011 в 01:23
  • 3
    На самом деле это опции для определенных файловых систем, таких как NTFS (не команда настройки маски создания файла umask). Извините за добавление запутанной информации. – htorque 23 May 2011 в 01:54
  • 4
    umask изменяет маску создания файла для текущего процесса (текущую оболочку), если у вас есть другой открытый или пользовательский процесс оболочки, я не верю, что это будет затронуто. Эта команда также повлияет на любые другие файлы, созданные за пределами каталога, до тех пор, пока вы не измените ее. – Mr. Dave 3 May 2017 в 17:57

Другим решением может быть просто установить идентификатор группы на файлы, созданные в каталоге, что делает новые файлы, принадлежащие идентификатору группы каталогов, вместо идентификатора группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

Это устанавливает специальное разрешение для файла setgid, которое приведет к созданию всех файлов, созданных в /my/folder, принадлежащих группе www-data, которая имеет разрешение rx (5) из-за родительского каталога.

0
ответ дан 6 August 2018 в 03:35
  • 1
    Вы ошибаетесь GUID для восьмеричного значения SUID – adampski 24 January 2018 в 01:44

вы можете использовать setfacl

setfacl -d -m group:name:rwx /path/to/your/dir

Где name - имя группы

Чтобы узнать, какие группы вы или какой-либо конкретный пользователь видите в Unix / linux, вы узнаете, какая группа данного пользователя находится через командную строку?

24
ответ дан 6 August 2018 в 03:35
  • 1
    Возможно, setfacl изменился. Я получаю сообщение об ошибке, что -m не является допустимым вариантом. – Ryan Burnette 10 January 2015 в 23:51
  • 2
    Райан, setfacl не изменяется. Скорее всего, вы не указали правильное название группы (после -m). – sergk 4 February 2015 в 07:10
  • 3
    довольно уверен setfacl для списков контроля доступа , а не umask. Лучшее решение, но не то, что было задано, я не думаю. – Wyatt8740 11 February 2016 в 04:05

Вы не можете установить umask для каталога, это значение уровня процесса. Если вам нужно запретить другим читать файлы в каталоге, отмените соответствующие биты разрешений.

Например, если у вас есть каталог /home/user/directory с некоторыми файлами и каталогами, которые могут получать разрешения, такие как 777 из процесс, установите биты разрешения /home/user/directory примерно на 700. Это сделает невозможным слияние других пользователей (исключая корень суперпользователя) в /home/user/directory.

Я параноик и настроен разрешения на /home/user до 750, поэтому я могу читать, писать и спускаться в своем домашнем каталоге. Это приводит к тому, что папки, подобные /home/user/Public, не могут быть доступны другим, но я могу жить с этим.

За обновление вашего вопроса: все же вы не можете контролировать это в файловой системы (кроме использования другого типа файловой системы, такого как FAT, который сильно запрещен), вам нужно сделать это в своем веб-приложении. Если ваш webapp закодирован в PHP, вы можете изменить umask на лету, используя функцию umask:

<?php umask(0022); // other code ?>

Вы можете поместить это в файл конфигурации, например файл, содержащий пароль для подключения к базе данных (мышление в таких приложениях, как Wordpress).

Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в свои файлы конфигурации, иначе вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, подобные 755 и 644, весьма опасны для webapps, если код чувствителен, каждый может его прочитать.

10
ответ дан 6 August 2018 в 03:35
  • 1
    Я знаю, что это древний, но я считаю, что стоит упомянуть: администратор может связать mount /home/user/Public (mount -o bind /home/user/Public /some/other/place), чтобы обойти проблему с разрешениями родительского каталога. – Adrian Günter 8 May 2018 в 18:52

Чтобы изменить разрешения для папки, используйте chmod. umask для файлов.

Установите umask на то, что вам нужно

umask xxx

, и измените его, когда вы сделали

umask 022
-1
ответ дан 6 August 2018 в 03:35
  • 1
    umask = файлы и каталоги, fmask = только файлы, dmask = только каталоги. :П – htorque 23 May 2011 в 01:15
  • 2
    Я узнал что-то новое сегодня :) – wojox 23 May 2011 в 01:23
  • 3
    На самом деле это опции для определенных файловых систем, таких как NTFS (не команда настройки маски создания файла umask). Извините за добавление запутанной информации. – htorque 23 May 2011 в 01:54
  • 4
    umask изменяет маску создания файла для текущего процесса (текущую оболочку), если у вас есть другой открытый или пользовательский процесс оболочки, я не верю, что это будет затронуто. Эта команда также повлияет на любые другие файлы, созданные за пределами каталога, до тех пор, пока вы не измените ее. – Mr. Dave 3 May 2017 в 17:57

Вы не можете установить umask для каталога, это значение уровня процесса. Если вам нужно запретить другим пользователям читать файлы в каталоге, отмените соответствующие биты разрешений.

Например, если у вас есть каталог / home / user / directory с некоторыми файлы и каталоги, которые могут получать разрешения, такие как 777, из процесса, устанавливают биты разрешения / home / user / directory примерно на 700. Это сделает невозможным для других пользователей (исключая корень суперпользователя)

Я параноик и устанавливаю разрешения на / home / user до 750, поэтому только я может читать, писать и опускаться в моем домашнем каталоге. Это приводит к тому, что другие папки, такие как / home / user / Public , недоступны другим, но я могу с этим жить.


За обновление вашего вопроса: по-прежнему , вы не можете контролировать это в файловой системе (кроме использования другого типа файловой системы, такого как FAT, который сильно обескуражен), вам нужно сделать это в своем веб-приложении. Если ваш webapp закодирован в PHP, вы можете изменить umask на лету, используя функцию umask :

  & lt;? Php umask (0022);  // другой код? & gt;   

Вы можете поместить это в файл конфигурации, например, файл, содержащий пароль для подключения к базе данных (мышление в таких приложениях, как Wordpress).

Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в своих конфигурационных файлах, иначе вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, такие как 755 и 644 , весьма опасны для webapps, если код чувствителен, каждый может его прочитать.

10
ответ дан 7 August 2018 в 21:25

Чтобы изменить разрешения для папки, используйте chmod. umask для файлов.

Установите umask на то, что вам нужно

  umask xxx  

, и измените его, когда вы сделали

  umask 022  
0
ответ дан 7 August 2018 в 21:25

вы можете использовать setfacl

  setfacl -d -m group: name: rwx / path / to / your / dir  

Где имя - это имя группы

Чтобы узнать, какие группы вы или какой-либо конкретный пользователь, см. В unix / linux, как вы узнаете, какая группа задана пользователь находится через командную строку?

24
ответ дан 7 August 2018 в 21:25

Другим решением может быть просто установить идентификатор группы на файлы, созданные в каталоге, что делает новые файлы, принадлежащие идентификатору группы каталогов, вместо идентификатора группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:

chown www-data: www-data / my / folder

chmod 4755 / my / folder

Это устанавливает специальное разрешение на установление setgid, которое приведет к тому, что все файлы, созданные в / my / folder , будут принадлежать www-data , которая затем имеет разрешение rx (5) из-за родительского каталога.

0
ответ дан 7 August 2018 в 21:25

вы можете использовать setfacl

  setfacl -d -m group: name: rwx / path / to / your / dir  

Где имя - это имя группы

Чтобы узнать, какие группы вы или какой-либо конкретный пользователь, см. В unix / linux, как вы узнаете, какая группа задана пользователь находится через командную строку?

24
ответ дан 10 August 2018 в 09:43

Вы не можете установить umask для каталога, это значение уровня процесса. Если вам нужно запретить другим пользователям читать файлы в каталоге, отмените соответствующие биты разрешений.

Например, если у вас есть каталог / home / user / directory с некоторыми файлы и каталоги, которые могут получать разрешения, такие как 777, из процесса, устанавливают биты разрешения / home / user / directory примерно на 700. Это сделает невозможным для других пользователей (исключая корень суперпользователя)

Я параноик и устанавливаю разрешения на / home / user до 750, поэтому только я может читать, писать и опускаться в моем домашнем каталоге. Это приводит к тому, что другие папки, такие как / home / user / Public , недоступны другим, но я могу с этим жить.


За обновление вашего вопроса: по-прежнему , вы не можете контролировать это в файловой системе (кроме использования другого типа файловой системы, такого как FAT, который сильно обескуражен), вам нужно сделать это в своем веб-приложении. Если ваш webapp закодирован в PHP, вы можете изменить umask на лету, используя функцию umask :

  & lt;? Php umask (0022);  // другой код? & gt;   

Вы можете поместить это в файл конфигурации, например, файл, содержащий пароль для подключения к базе данных (мышление в таких приложениях, как Wordpress).

Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в своих конфигурационных файлах, иначе вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, такие как 755 и 644 , весьма опасны для webapps, если код чувствителен, каждый может его прочитать.

10
ответ дан 10 August 2018 в 09:43

Чтобы изменить разрешения для папки, используйте chmod. umask для файлов.

Установите umask на то, что вам нужно

  umask xxx  

, и измените его, когда вы сделали

  umask 022  
0
ответ дан 10 August 2018 в 09:43

Другим решением может быть просто установить идентификатор группы на файлы, созданные в каталоге, что делает новые файлы, принадлежащие идентификатору группы каталогов, вместо идентификатора группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:

chown www-data: www-data / my / folder

chmod 4755 / my / folder

Это устанавливает специальное разрешение на установление setgid, которое приведет к тому, что все файлы, созданные в / my / folder , будут принадлежать www-data , которая затем имеет разрешение rx (5) из-за родительского каталога.

0
ответ дан 10 August 2018 в 09:43

Чтобы изменить разрешения для папки, используйте chmod. umask для файлов.

Установите umask на то, что вам нужно

  umask xxx  

, и измените его, когда вы сделали

  umask 022  
0
ответ дан 13 August 2018 в 15:55
  • 1
    umask = файлы и каталоги, fmask = только файлы, dmask = только каталоги. :П – htorque 23 May 2011 в 01:15
  • 2
    Я узнал что-то новое сегодня :) – wojox 23 May 2011 в 01:23
  • 3
    На самом деле это опции для определенных файловых систем, таких как NTFS (не команда настройки маски создания файла umask ). Извините за добавление запутанной информации. – htorque 23 May 2011 в 01:54
  • 4
    umask изменяет маску создания файла для текущего процесса (текущую оболочку), если у вас есть другой открытый или пользовательский процесс оболочки, я не верю, что это будет затронуто. Эта команда также повлияет на любые другие файлы, созданные за пределами каталога, до тех пор, пока вы не измените ее. – Mr. Dave 3 May 2017 в 17:57

вы можете использовать setfacl

  setfacl -d -m group: name: rwx / path / to / your / dir  

Где имя - это имя группы

Чтобы узнать, какие группы вы или какой-либо конкретный пользователь, см. В unix / linux, как вы узнаете, какая группа задана пользователь находится через командную строку?

24
ответ дан 13 August 2018 в 15:55
  • 1
    Возможно, setfacl изменился. Я получаю сообщение об ошибке, указывающее, что -m не является допустимым вариантом. – Ryan Burnette 10 January 2015 в 23:51
  • 2
    Ryan, setfacl не изменяется. Скорее всего, вы не указали правильное название группы (после -m ). – sergk 4 February 2015 в 07:10
  • 3
    довольно уверен setfacl для списков управления доступом , а не umask . Лучшее решение, но не то, что было задано, я не думаю. – Wyatt8740 11 February 2016 в 04:05

Вы не можете установить umask для каталога, это значение уровня процесса. Если вам нужно запретить другим пользователям читать файлы в каталоге, отмените соответствующие биты разрешений.

Например, если у вас есть каталог / home / user / directory с некоторыми файлы и каталоги, которые могут получать разрешения, такие как 777, из процесса, устанавливают биты разрешения / home / user / directory примерно на 700. Это сделает невозможным для других пользователей (исключая корень суперпользователя)

Я параноик и устанавливаю разрешения на / home / user до 750, поэтому только я может читать, писать и опускаться в моем домашнем каталоге. Это приводит к тому, что другие папки, такие как / home / user / Public , недоступны другим, но я могу с этим жить.


За обновление вашего вопроса: по-прежнему , вы не можете контролировать это в файловой системе (кроме использования другого типа файловой системы, такого как FAT, который сильно обескуражен), вам нужно сделать это в своем веб-приложении. Если ваш webapp закодирован в PHP, вы можете изменить umask на лету, используя функцию umask :

  & lt;? Php umask (0022);  // другой код? & gt;   

Вы можете поместить это в файл конфигурации, например, файл, содержащий пароль для подключения к базе данных (мышление в таких приложениях, как Wordpress).

Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в своих конфигурационных файлах, иначе вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, такие как 755 и 644 , весьма опасны для webapps, если код чувствителен, каждый может его прочитать.

10
ответ дан 13 August 2018 в 15:55
  • 1
    Я знаю, что это древний, но я считаю, что стоит упомянуть: администратор может связывать mount / home / user / Public ( mount -o bind / home / user / Public / some / other / place ), чтобы обойти проблему разрешений родительского каталога. – Adrian Günter 8 May 2018 в 18:52

Другим решением может быть просто установить идентификатор группы на файлы, созданные в каталоге, что делает новые файлы, принадлежащие идентификатору группы каталогов, вместо идентификатора группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:

chown www-data: www-data / my / folder

chmod 4755 / my / folder

Это устанавливает специальное разрешение на установление setgid, которое приведет к тому, что все файлы, созданные в / my / folder , будут принадлежать www-data , которая затем имеет разрешение rx (5) из-за родительского каталога.

0
ответ дан 13 August 2018 в 15:55
  • 1
    Вы ошибаетесь GUID для восьмеричного значения SUID – adampski 24 January 2018 в 01:44

Другие вопросы по тегам:

Похожие вопросы: