The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Смена прав на файлы на лету"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Системное и пользовательское ПО / Linux)
Изначальное сообщение [ Отслеживать ]

"Смена прав на файлы на лету"  +/
Сообщение от HanTengry (ok) on 28-Янв-11, 06:20 
Есть сервер(OS: SLES SUSE9 SP3), и на других компьютерах 2 программы, одна из программ выгружет файлы, другая забирает на обработку раз в 3 минуты. Вторая программа не может забирать файлы если файлам не присвоить определенные права. Вроде бы логично поставить в crontab строчку chmod, которая раз в минуту будет "причесывать" файлы под нужные права.
Но какое-то время вторая программа не работала. Файлов накопилось несколько тысяч. chmod не успевал за минуту применить ко всем файлам права, до того как запуститься следующий процесс chmod, в результате сервер назапускал процессов chmod и тормозит.
Кривизна решения еще в том что следующий процесс chmod заново обрабатывает файлы для смены прав, хотя они уже обработаны предыдущим процессом.
Вопрос: Есть другое решение? Хотелось бы делать смену прав на файлы только для новых файлов и сразу после их появления. Как отслеживать?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Смена прав на файлы на лету"  +/
Сообщение от Дядя Федор email on 28-Янв-11, 08:14 
> Вопрос: Есть другое решение? Хотелось бы делать смену прав на файлы только
> для новых файлов и сразу после их появления. Как отслеживать?

Не совсем понятно - что из себя представляет первая программа и как она выгружает файлы. Но напрашивается решение изменять права на файлы прямо на этапе выгрузки и дальнейшего помещения в файловую систему. К примеру, чтобы это делал Ваш скрипт, в котором будет 2 строки - запуск этой программы + chmod. По крону, наверное? Ну и второе решение... искать новые файлы find по параметрам time (ctime и т.д.) и изменять им права. Либо менять права только тем файлам, у которых они не соответствуют заданным параметрам (права на запись, чтение, исполнение - тот же test в bash это умеет).

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Смена прав на файлы на лету"  +/
Сообщение от HanTengry (ok) on 28-Янв-11, 08:53 
>> Вопрос: Есть другое решение? Хотелось бы делать смену прав на файлы только
>> для новых файлов и сразу после их появления. Как отслеживать?
>  Не совсем понятно - что из себя представляет первая программа и
> как она выгружает файлы.

Обе программы - внедренные продукты, стороннего разработчика, лесть в них мне не дадут, эти программы к расшареной дирректории обращаются по сети, как я понял по FTP протоколу, работают под Windows.
> прямо на этапе выгрузки и дальнейшего помещения в файловую систему. К
> примеру, чтобы это делал Ваш скрипт, в котором будет 2 строки
> - запуск этой программы

Не понял, какой программы? Первая программа всегда запущена. В моем случае надо как-то отследить момент выгрузки, т.е. ее обращение к сетевому каталогу?  
> второе решение... искать новые файлы find по параметрам time (ctime и
> т.д.) и изменять им права. Либо менять права только тем файлам,
> у которых они не соответствуют заданным параметрам (права на запись, чтение,
> исполнение - тот же test в bash это умеет).

Что из этих 2-х вариантов будет работать быстрее. Не будут ли оба этих процесса опять просматривать каждый файл на предмет в первом случае времени во втором прав - не станет ли время работы процесса опять зависеть от количества файлов?


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Смена прав на файлы на лету"  +/
Сообщение от Дядя Федор email on 28-Янв-11, 09:00 
Пожалуй, PavelR изложил более верное и правильное решение чуть ниже.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Смена прав на файлы на лету"  +/
Сообщение от Дядя Федор email on 28-Янв-11, 09:06 
Кстати. Раз Вы сказали, что программа Виндовая заливает файлы по FTP-протоколу, соответственно, у Вас поднят FTP-сервер. Посмотрите, при помощи какого ПО это сделано (ну, там wu-ftpd, vsftpd, ProFTP etc). Разберитесь под каким пользователем заливается файл по FTP (возможно, anonymous) и в настройках FTP-сервера выставьте параметр umask - тогда файлы будут заливаться уже с нужными Вам параметрами.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Смена прав на файлы на лету"  +/
Сообщение от HanTengry (ok) on 28-Янв-11, 10:06 
> Кстати. Раз Вы сказали, что программа Виндовая заливает файлы по FTP-протоколу, соответственно,
> у Вас поднят FTP-сервер. Посмотрите, при помощи какого ПО это сделано
> (ну, там wu-ftpd, vsftpd, ProFTP etc). Разберитесь под каким пользователем заливается
> файл по FTP (возможно, anonymous) и в настройках FTP-сервера выставьте параметр
> umask - тогда файлы будут заливаться уже с нужными Вам параметрами.

У меня оказался samba сервер, пожалуй вы правы, часа через 2 отпишу
параметры где-то здесь:
smb.conf параметры create mask и directory mask для шары.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Смена прав на файлы на лету"  +/
Сообщение от HanTengry (ok) on 28-Янв-11, 14:52 
>> Кстати. Раз Вы сказали, что программа Виндовая заливает файлы по FTP-протоколу, соответственно,
>> у Вас поднят FTP-сервер. Посмотрите, при помощи какого ПО это сделано
>> (ну, там wu-ftpd, vsftpd, ProFTP etc). Разберитесь под каким пользователем заливается
>> файл по FTP (возможно, anonymous) и в настройках FTP-сервера выставьте параметр
>> umask - тогда файлы будут заливаться уже с нужными Вам параметрами.
> У меня оказался samba сервер, пожалуй вы правы, часа через 2 отпишу
> параметры где-то здесь:
> smb.conf параметры create mask и directory mask для шары.

Возможно здесь проблема(проверю): выгружается под одним юзером(oracle, что видно по выгружаемым файлам), а рассшареная папка подключеная в винде как сетевой диск с помощью root (юзер который есть по умолчанию в Samba).
Решение: 1) smbpasswd -a oracle
2) smb stop\start
3) Переподключить сетевой диск под oracle

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

2. "Смена прав на файлы на лету"  +/
Сообщение от PavelR (??) on 28-Янв-11, 08:42 
>[оверквотинг удален]
> определенные права. Вроде бы логично поставить в crontab строчку chmod, которая
> раз в минуту будет "причесывать" файлы под нужные права.
> Но какое-то время вторая программа не работала. Файлов накопилось несколько тысяч. chmod
> не успевал за минуту применить ко всем файлам права, до того
> как запуститься следующий процесс chmod, в результате сервер назапускал процессов chmod
> и тормозит.
> Кривизна решения еще в том что следующий процесс chmod заново обрабатывает файлы
> для смены прав, хотя они уже обработаны предыдущим процессом.
> Вопрос: Есть другое решение? Хотелось бы делать смену прав на файлы только
> для новых файлов и сразу после их появления. Как отслеживать?

google://inotify

http://habrahabr.ru/blogs/linux/66569/#habracut

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Смена прав на файлы на лету"  +/
Сообщение от HanTengry (ok) on 28-Янв-11, 09:20 
> google://inotify
> http://habrahabr.ru/blogs/linux/66569/#habracut

man читать надо еще.
Но вопрос: за событиями inotify умеет следитью.
Увидела событие: в директорию закинули файлы, запустила действие: Какое?

1. find по параметрам time
2. test в bash
этим процессам опять надо будет просмотреть все файлы, которые уже лежат в директории?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Смена прав на файлы на лету"  +/
Сообщение от PavelR (??) on 28-Янв-11, 10:20 

> man читать надо еще.

Да, это самое сложное.... Согласен абсАлютнА и полнАстью.

> Но вопрос: за событиями inotify умеет следитью.
> Увидела событие: в директорию закинули файлы, запустила действие: Какое?

А почитать не судьба ?

Или за вас это сделать ?

Похоже не судьба и это надо сделать за вас.. Хорошо.

>[оверквотинг удален]
>
><путь> <событие> <команда>
>
>Также в команде можно использовать следующие внутренние переменные (очень удобные для >логирования ИМХО):
>
>$$ знак $
>$@ объект нашей слежки (директория)
>$# имя созданного файла
>$% флаг события (текстом)
>$& флаг события (цифрой)

Еще вопросы ?


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру