Проблема с umask (Создание файла с заданными правами)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Проблема с umask

Сообщение edoc_modnar »

Пытаюсь изменить маску при помощи вызова umask(), но ничего не получается. man 2 umask убог. Использую так:

Код: Выделить всё

#include <sys/types.h>
#include <sys/stat.h>

int main()
{
umask(0444);
exit(0);
}

Однако маска не меняется... Может быть umask() меняет маску только для одного процесса?
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Проблема с umask

Сообщение Jan2ary »

А маска для чего? Точнее, для какого файла? Можно пример полнее?
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Проблема с umask

Сообщение edoc_modnar »

По идее функция должна менять значение umask в оболочке. Но у меня такое подозрение, что эта гадина меняет маску только для самой программы (для вызовов open() в программе). Мне же необходимо изменить маску в оболочке. Можно, конечно воспользоваться system("umask xxx");, но предполагается, что утилиты umask в наличии не имеется. Как быть?
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Проблема с umask

Сообщение elide »

По идее функция должна менять значение umask в оболочке. Но у меня такое подозрение, что эта гадина меняет маску только для самой программы (для вызовов open() в программе).
не знаю по какой такой идее она якобы должна менять umask оболочки, но ее поведение стандартно и описано в мануале. если функция работает как должна, а не как хочется - это не проблемы функции....
кстати, сделай which umask и помедитируй над результатом....
слава роботам!
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Проблема с umask

Сообщение Jan2ary »

Простой тест:

Код: Выделить всё

#include <sys/types.h>
#include <sys/stat.h>

int main()
{
        int i = 0;
        char fileName[64] = "/home/andrey/programming/uu_test%i";
        char ff[64];
        for(i = 0; i < 128; i++){
                sprintf(ff, fileName, i);
                creat(ff,umask(i));
        }
        exit(0);
}

Смотрим результат ls -l :)
Эмпирический опыт поможет ;)
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

Re: Проблема с umask

Сообщение xorader »

посмотри исходник тулзы export
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:
Sash_xp
Сообщения: 115

Re: Проблема с umask

Сообщение Sash_xp »

(random_code @ Вторник, 17 Мая 2005, 20:55) писал(а):Однако маска не меняется... Может быть umask() меняет маску только для одного процесса?

так и есть. А вот как изменить для оболочки т.е. для родительского процесса - это интересный вопрос, надо посмотреть как утилита umask реализована, сегодня вечером будет время посмотрю. Да и тебе советую.
Спасибо сказали:
vnp
Сообщения: 1

Re: Проблема с umask

Сообщение vnp »

(Sash_xp @ Четверг, 19 Мая 2005, 4:41) писал(а):А вот как изменить для оболочки т.е. для родительского процесса - это интересный вопрос, надо посмотреть как утилита umask реализована


Никак. Процесс не может воздействовать на среду родительского. Поэтому umask не утилита, а встроенная функция шелла.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Проблема с umask

Сообщение elide »

посмотри исходник тулзы export

+1 (:
слава роботам!
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

Re: Проблема с umask

Сообщение xorader »

логично :megalol:
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:
alex_V
Сообщения: 21

Re: Проблема с umask

Сообщение alex_V »

Подскажите в чем может быть проблема: при создании файла права выставляются каждый раз ПО-РАЗНОМУ, хотя umask задана 022. Так происходит и в shell (например touch file) и в perl скрипте?
Спасибо сказали: