Разрешения на файлы:

9

Я хотел бы дать 755 разрешений для каталога, поэтому я использую:

# chmod -R 755 /my/folder/

Он работает для всех файлов в моей папке, но проблема в том, что я использую скрипты, которые создают новые файлы в этой папке, и по умолчанию разрешения равны 600.

Как я могу наложить 755 разрешений на эти «будущие» файлы?

--РЕДАКТИРОВАТЬ--

Я использую скрипт, который дает мне информацию о сетевом трафике в моем кампусе. У меня есть новый файл каждые 10 минут, расположенный в папке с названием trip, расположенной в папке с месяцами, например:

ls -lrt /home/netmet/secure/2017-04/2017-04-27/
total 118548
-rwxr-sr-x 1 root root   85922 avril 27 00:10 zzaccounting.dmp-00-00
-rwxr-sr-x 1 root root   54874 avril 27 00:20 zzaccounting.dmp-00-10
-rwxr-sr-x 1 root root   33534 avril 27 00:30 zzaccounting.dmp-00-20
-rwxr-sr-x 1 root root   48890 avril 27 00:40 zzaccounting.dmp-00-30
-rwxr-sr-x 1 root root   36878 avril 27 00:50 zzaccounting.dmp-00-40
-rwxr-sr-x 1 root root   37034 avril 27 01:00 zzaccounting.dmp-00-50
-rwxr-sr-x 1 root root   38154 avril 27 01:10 zzaccounting.dmp-01-00
-rwxr-sr-x 1 root root   38318 avril 27 01:20 zzaccounting.dmp-01-10
-rwxr-sr-x 1 root root   26978 avril 27 01:30 zzaccounting.dmp-01-20
-rwxr-sr-x 1 root root   31558 avril 27 01:40 zzaccounting.dmp-01-30
-rwxr-sr-x 1 root root   23662 avril 27 01:50 zzaccounting.dmp-01-40
-rwxr-sr-x 1 root root   32298 avril 27 02:00 zzaccounting.dmp-01-50
-rwxr-sr-x 1 root root   30282 avril 27 02:10 zzaccounting.dmp-02-00
-rwxr-sr-x 1 root root   31110 avril 27 02:20 zzaccounting.dmp-02-10
-rwxr-sr-x 1 root root   25718 avril 27 02:30 zzaccounting.dmp-02-20
-rwxr-sr-x 1 root root   26306 avril 27 02:40 zzaccounting.dmp-02-30
-rwxr-sr-x 1 root root   23690 avril 27 02:50 zzaccounting.dmp-02-40
-rwxr-sr-x 1 root root   23002 avril 27 03:00 zzaccounting.dmp-02-50
-rwxr-sr-x 1 root root   21854 avril 27 03:10 zzaccounting.dmp-03-00

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

-rw------- 1 root root 3479106 avril 27 15:50 zzaccounting.dmp-15-40

Дело в том, что для каждой папки и файла в / home / netmet / secure / я хочу 755 разрешений по умолчанию.

Я уже сделал это:

chmod -R g+s /home/netmet/secure   
setfacl -d -m g::rwx /home/netmet/secure   
setfacl -d -m o::rx /home/netmet/secure   
klaypez
источник
3
ACL является ответом. Это обсуждалось ранее.
d3ag0s
8
ACL является ответом для переопределения umask, но не для переопределения программы, которая создает файлы с режимом 0600по дизайну. Смотрите здесь для некоторых ссылок.
ilkkachu
1
И еще одна деталь: по умолчанию вы не можете использовать umaskдля добавления бита выполнения к файлам, это нужно сделать вручную
Ромео Нинов
Умаск не работает, ребята
Klaypez
Можете ли вы отредактировать скрипт, который вы используете для создания файлов? Как файлы попадают в конечный каталог (например, 2017-04-27) и как каталоги создаются в первую очередь? Пожалуйста, обновите вопрос с этими деталями.
Тигр

Ответы:

1

Попробуйте запустить umaskв своей папке. Если он возвращает что-то кроме «0022», то это ваша проблема. В вашем случае он должен сначала вывести «0177». Система разрешений при создании каталога в основном вычисляется: default - umask0777 является режимом по умолчанию для каталогов, а 0666 - для обычных файлов, но существуют разные маски, если я правильно понимаю эти вещи. Попробуйте выполнить umask a=rx,uu+w.

РЕДАКТИРОВАТЬ: Вы можете использовать Umask, чтобы дать бит выполнения для каталога, чтобы иметь возможность CD в него, но не для файлов. Они должны быть предоставлены выполнить бит вручную из-за безопасности. Просто добавьте chmod +x <file>в свой скрипт. И флаг выполнения, установленный в файле, кроме исполняемого, не имеет никакого эффекта.

Enginecrafter77
источник
1
Команда umaskоболочки не зависит от пути, она зависит только от пользователя, который ее запускает, у каждого пользователя есть определенное значение umask, определенное при входе в систему, которое можно изменить позже. Это определяет, как создаются новые разрешения для файлов.
Патрик Мевзек
Это должно быть chmod a=rx,u+wв вашем ответе.
Патрик Мевзек
1

Я предполагаю, что вы запускаете сценарии, которые генерируют файлы в среде, где umask имеет значение 0077. Это не позволяет генерирующей программе устанавливать какие-либо биты разрешений в битах разрешений «группа» и «другие».

Обратите внимание, что umask является частью наследуемой среды любого процесса и обычно устанавливается из «профиля» по умолчанию при входе в систему. Любой процесс (оболочка) может изменить свой собственный и исходный детский (начальный) umask с помощью команды 'umask'.

Биты в текущем umask будут препятствовать созданию файлов с этими битами, установленными в их разрешениях (следовательно, «маска», маскирующая результирующие биты разрешений)

TheMadsen
источник
0

Примечание : это не идеально и должно рассматриваться как временное решение

Вы можете создать задание cron, которое запускает команду chmod каждые 5 минут или по желанию.

Там же есть inotify

Guthrie
источник