Общий доступ для двух локальных пользователей (Нужен совет)
Модераторы: SLEDopit, Модераторы разделов
-
Karapuzz
- Сообщения: 100
Общий доступ для двух локальных пользователей
На десктопе два пользователя, члены одной группы. Есть определенный контент (музыка, фотки и прочее) для которого необходиом организовать общий доступ для обоих пользователей с правами на запись. При этом не только для существующего контента, но и для нового, например один из пользователей скинул фотки с фотоаппарата, второй должен иметь полный доступ на эти фотки. Игрался с acl, не помагает. Дефолтные права, установленные при помощи setfacl действительны только для создаваемых файлов, копируемые файлы наследуют права исходно. Создание раздела fat для хранения на нем контента не подходит, ибо есть файлы более 4ГГб.
Что посоветуете?
Что посоветуете?
-
Sleeping Daemon
- Сообщения: 1450
Re: Общий доступ для двух локальных пользователей
Karapuzz писал(а): ↑14.03.2009 05:16На десктопе два пользователя, члены одной группы. Есть определенный контент (музыка, фотки и прочее) для которого необходиом организовать общий доступ для обоих пользователей с правами на запись. При этом не только для существующего контента, но и для нового, например один из пользователей скинул фотки с фотоаппарата, второй должен иметь полный доступ на эти фотки. Игрался с acl, не помагает. Дефолтные права, установленные при помощи setfacl действительны только для создаваемых файлов, копируемые файлы наследуют права исходно. Создание раздела fat для хранения на нем контента не подходит, ибо есть файлы более 4ГГб.
Что посоветуете?
Создать группу, включить этих пользователей в эту группу, создать каталог с полными правами для этой группы. Курить man для chmod.
Или ACL.
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
Sleeping Daemon писал(а): ↑14.03.2009 07:23Создать группу, включить этих пользователей в эту группу, создать каталог с полными правами для этой группы. Курить man для chmod.
Или ACL.
Все это я делал, за исключением создания отдельной группы, оба пользователя и так члены одной группы. Как я писал выше, копируемые файлы сохраняют свои права, если явно не указать иное. Подробней можно почитать на opennet.ru
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Общий доступ для двух локальных пользователей
fam+fileschanged
Shell
$ cat /usr/local/bin/chchch
#!/bin/bash
chown mail:floppy "$2"
chmod a=rwx "$2"
$ ls -ld /home/share/
drwxrwxrwx 2 root root 4096 2009-03-15 02:17 /home/share/
$ sudo fileschanged -cCfr -x /usr/local/bin/chchch /home/share/ &
$ touch /home/share/1
$ touch /tmp/2
$ mv /tmp/2 /home/share
$ touch /tmp/3
$ cp /tmp/3 /home/share
$ ll /home/share/
-rwxrwxrwx 1 mail floppy 0 2009-03-15 02:25 1
-rwxrwxrwx 1 mail floppy 0 2009-03-15 02:25 2
-rwxrwxrwx 1 mail floppy 0 2009-03-15 02:25 3
$ apt-cache -n search ^fam$
fam - File Alteration Monitor
$ apt-cache -n search ^fileschanged$
fileschanged - command-line utility that reports when files have been alteredПисать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Спасибо сказали:
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
Не знал про такое, спасибо, только вот что-то не выходит.
Код: Выделить всё
vim chch
#!/bin/bash
chmod 664 $2
chmod a+x chch
ls -l ~/1/
drwxrwxrwx 2 jura users 4096 Мар 15 11:23 1
sudo fileschanged -cCfr -x /usr/local/bin/chch ~/1/<тут пробел?>&
touch ~/1/file1
touch ~/Desktop/file2
cp file2 ~/1/
ls -l
-rw-r--r-- 1 jura users 0 Мар 15 11:27 file1
-rw-r--r-- 1 jura users 0 Мар 15 11:29 file2И еще, как быть с файлам, в именах которых есть пробелы?
Код: Выделить всё
vim chch
#!/bin/bash
chmod 664 $1
chch Text\ File
chmod: невозможно получить доступ к `Text': Нет такого файла или каталога
chmod: невозможно получить доступ к `File': Нет такого файла или каталога-
KernelPanic
- Бывший модератор
- Сообщения: 2060
- Статус: Brain Атаке
- ОС: Debian squeeze/sid/exp
Re: Общий доступ для двух локальных пользователей
Наверное сделать так:
Да, пробел там нужен. И использовать именно $2
Код: Выделить всё
#!/bin/bash
chmod 664 "$2"Да, пробел там нужен. И использовать именно $2
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
С пробелами разобрался, спасибо. Но вот права все равно остаются rw-r--r--
И еще
И еще
Код: Выделить всё
fileschanged -cCfr -x /usr/local/bin/chch ~/1/ &
[1] 7059 //это нормально, и что значит?
jura@linux-jdbp:~ #-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Общий доступ для двух локальных пользователей
когда отправляете процесс в бэкграунд, то пишется его job-номер и pid.
кстати, не забывайте убивать эти процессы. а то, возможно, их у вас наплодилась уже куча.
и друг другу мешают.
для теста запустите просто в отдельном терминале
$ fileschanged -cCfr ~/1
и смотрите, будет ли он писать в stdout имена файлов, которые вы в первом терминале будете создавать/перемещать/копировать в ~/1
очень рекомендовал бы прочитать
info fileschanged
или хотя бы
man fileschanged
p.s. ну, и, насколько я понимаю, famd должен присутствовать в списке процессов (улыбка).
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
Разобрался. Действительно famd не был запущен, даже скрипта /etc/rc.d/fam не было. Необходимо доставить пакет fam-server (это в opensuse 11 так). Всем спасибо большое за помощь!
И еще, немного изменил скрипт /usr/local/bin/chch
В первом варианте не было возможности разделения файлов и каталогов, и по этому файлам приходилось присваивать права rwx, но x не нужен.
И еще, немного изменил скрипт /usr/local/bin/chch
Код: Выделить всё
#!/bin/bash
find "$2" -type f -exec chmod g+rw,u+rw {} \;
find "$2" -type d -exec chmod g+rwx,u+rwx {} \;В первом варианте не было возможности разделения файлов и каталогов, и по этому файлам приходилось присваивать права rwx, но x не нужен.
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
Ну вот, вроде все хорошо, да не очень. Как оказалось fileschanged не может справится с большим объемом данных.
Ну и права естественно не меняются. С этим можно как-то справиться?
Код: Выделить всё
fileschanged -cCfr /home/jura/1/
/home/jura/1/gajim
/home/jura/1/gajim/m4
/home/jura/1/gajim/m4/python.m4
/home/jura/1/gajim/m4/acinclude.m4
/home/jura/1/gajim/m4/nls.m4
/home/jura/1/gajim/test
/home/jura/1/gajim/test/lib
....
/home/jura/1/gajim/autopackage/@gnome.org/pygtk/skeleton.1
/home/jura/1/gajim/autopackage/@gtk.org
Ошибка сегментированияНу и права естественно не меняются. С этим можно как-то справиться?
-
Mazdader
- Сообщения: 155
- ОС: Debian Squeeze
Re: Общий доступ для двух локальных пользователей
А вариант с umask 002 не подходит?
-
Karapuzz
- Сообщения: 100
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
К чему в итоге я пришел. То что я описывал выше (это про то где хоть как-то работало) я делал на работе где стоит opensuse 11. Дома стоит opensuse 11.1. Вот тут проблема. Fam запущен. Делаю fileschanged -cCfr ~/1, кидаю в каталог 1 чего-нибудь и ни чего, ноль реакции. Поробовал заменить fam на gamin. Делаю fileschanged -cCfr ~/1 и вижу изменения в подопытном каталоге, но когда делаю fileschanged -cCfr -x /usr/local/bin/chch ~/1/ &, то скрипт /usr/local/bin/chch не выполняется. Права остаются прежними. Есть еще идеи?
Спасибо сказали:
-
Goodvin
- Ведущий рубрики
- Сообщения: 4333
- Статус: ⚝⚠⚒⚑⚖☭☞☣☤&
Re: Общий доступ для двух локальных пользователей
Посмотреть в логи ?
Может быть там видна причина того, почему на срабатывает ?
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
Давно бы посматрел, если бы там что-то было.
Вроде заработало. Надо было просто не закрывать консоль, в которой fileschanged запущен, иначе процесс убивается (интересно почему?). Gamin, скажу я вам работает куда стабильней fam. Ради теста скопировал в подопытный каталог небольшой набор картинок (более 600 Мб) в виде сложной иерархии каталогов и подкаталогов с файлами. Все схавал, все права раздал как надо.
-
KernelPanic
- Бывший модератор
- Сообщения: 2060
- Статус: Brain Атаке
- ОС: Debian squeeze/sid/exp
Re: Общий доступ для двух локальных пользователей
Потому что связан с консолью. Отвязка производится с помощью символа амперсанда в конце команды &
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Общий доступ для двух локальных пользователей
имхо - от закрытия графической консоли амперсанд не поможет.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
KernelPanic
- Бывший модератор
- Сообщения: 2060
- Статус: Brain Атаке
- ОС: Debian squeeze/sid/exp
Re: Общий доступ для двух локальных пользователей
А, ну да, тогда через развязку nohup (пример на основе команды sash-kan):
Там еще вывод в /dev/null ( > /dev/null), чтоб в открытую консоль не сыпалась инфа о работе утилиты.
Код: Выделить всё
nohup fileschanged -cCfr -x /usr/local/bin/chchch /home/share/ > /dev/null &Там еще вывод в /dev/null ( > /dev/null), чтоб в открытую консоль не сыпалась инфа о работе утилиты.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Общий доступ для двух локальных пользователей
возможно, имеет смысл увеличить timeout (см. man fileschanged).
а для надёжности неплохо ещё и stdout и stderr завернуть в /dev/null:KernelPanic писал(а): ↑16.03.2009 15:44Отвязка производится с помощью символа амперсанда в конце команды &
$ <команда> &>/dev/null &
да и вообще имеет смысл, если уж будете использовать fileschanged, прописать его запуск на нужных runlevel-ах, как для полноценного демона. из скрипта в /etc/init.d/
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
Поступил проще, положил все это дело в автозапуск kde.
Вроде работает, но все равно как-то криво, если из каталога много чего удалить, потом права не меняются. Но это видимо косяк fileschanged, тем более что утилита с 2006 года не обновлялась. И еще, с timeout немного поигрался, не помогает.
Код: Выделить всё
vim ~/.kde/Autostart/fileschanged
#!/bin/bash
fileschanged -cCfr -x /usr/local/bin/chch /home/jura/Мои\ рисунки/ &
chmod a+x ~/.kde/Autostart/fileschangedВроде работает, но все равно как-то криво, если из каталога много чего удалить, потом права не меняются. Но это видимо косяк fileschanged, тем более что утилита с 2006 года не обновлялась. И еще, с timeout немного поигрался, не помогает.
-
KernelPanic
- Бывший модератор
- Сообщения: 2060
- Статус: Brain Атаке
- ОС: Debian squeeze/sid/exp
Re: Общий доступ для двух локальных пользователей
Если Ваш скрипт chch имеет вид, описанный выше, то есть:
То он делает кучу лишних операций, так как рекурсивно работает.
Посмотрите на вызов fileschanged - там уже есть опция -r, показывающая, что нужно рекурсивно просматривать подпапки.
Другими словами. Принесли Вы на флешке папку с фотографиями. Предположим, что папка называется new-fotos, а там несколько подпапок с именами new1...new5, а внутри каждой подпапки еще несколько подпапок best1...best50, в которых сами фотки (foto1...).
то есть структура вида:
Вы берете и копируете всю папку new-fotos в Вашу папку /home/jura/Мои рисунки.
Утилита fileschanged отловила, что произошли изменения в корне папки "Мои рисунки", значит запускает на появившуюся там папку new-fotos Ваш скрипт.
Данный скрипт пробегает по всем файлам и папкам внутри папки new-fotos и производит изменения, так как утилита find работает рекурсивно в данном случае.
Далее, так как указана опция -r у утилиты fileschanged, то она также должна осуществить запуск скрипта для всех вложений внутри папки new-fotos.
И вот она видит, что в папке new-fotos у Вас есть папка new1, ну что ж значит запускает Ваш скрипт на эту подпапку. Но ведь Ваш скрипт уже произвел все изменения внутри всех подпапок папки new-fotos.
Поэтому это действие будет лишним. И так далее для всех подпапок внутри папки new-fotos, что проявляется в виде накладных расходов/временных затрат (причем затраты возрастают в несколько раз).
Как этого избежать?
Где-то нужно убрать рекурсию. Так как утилита fileschanged "мониторит", то ей рекурсия нужна, значит следует избавиться от рекурсии внутри скрипта:
В данном случае проверка на директорию/файл выполнена в условиях, что куда проще (и менее затратно) использования утилиты find.
Код: Выделить всё
#!/bin/bash
find "$2" -type f -exec chmod g+rw,u+rw {} \;
find "$2" -type d -exec chmod g+rwx,u+rwx {} \;То он делает кучу лишних операций, так как рекурсивно работает.
Посмотрите на вызов fileschanged - там уже есть опция -r, показывающая, что нужно рекурсивно просматривать подпапки.
Другими словами. Принесли Вы на флешке папку с фотографиями. Предположим, что папка называется new-fotos, а там несколько подпапок с именами new1...new5, а внутри каждой подпапки еще несколько подпапок best1...best50, в которых сами фотки (foto1...).
то есть структура вида:
Код: Выделить всё
new-fotos
|---new1/
| |---best1/
| | |---foto1.jpg
| | |---foto2.jpg
| | | ...
| | |---fotoN.jpg
| |
| |---best2/
| | |---foto1.jpg
| | |---foto2.jpg
| | | ...
| | |---fotoN.jpg
| |
| | ...
| |
| |---best50/
...............Вы берете и копируете всю папку new-fotos в Вашу папку /home/jura/Мои рисунки.
Утилита fileschanged отловила, что произошли изменения в корне папки "Мои рисунки", значит запускает на появившуюся там папку new-fotos Ваш скрипт.
Данный скрипт пробегает по всем файлам и папкам внутри папки new-fotos и производит изменения, так как утилита find работает рекурсивно в данном случае.
Далее, так как указана опция -r у утилиты fileschanged, то она также должна осуществить запуск скрипта для всех вложений внутри папки new-fotos.
И вот она видит, что в папке new-fotos у Вас есть папка new1, ну что ж значит запускает Ваш скрипт на эту подпапку. Но ведь Ваш скрипт уже произвел все изменения внутри всех подпапок папки new-fotos.
Поэтому это действие будет лишним. И так далее для всех подпапок внутри папки new-fotos, что проявляется в виде накладных расходов/временных затрат (причем затраты возрастают в несколько раз).
Как этого избежать?
Где-то нужно убрать рекурсию. Так как утилита fileschanged "мониторит", то ей рекурсия нужна, значит следует избавиться от рекурсии внутри скрипта:
Код: Выделить всё
#!/bin/bash
if [ -d "$2" ]; then
chmod 770 "$2"
elif [ -f "$2" ]; then
chmod 660 "$2"
fi-
KernelPanic
- Бывший модератор
- Сообщения: 2060
- Статус: Brain Атаке
- ОС: Debian squeeze/sid/exp
Re: Общий доступ для двух локальных пользователей
Выпадает в "Ошибка сегментрования" при копировании некоторого кол-ва небольших файлов в папках, так что костыль...
-
Karapuzz
- Сообщения: 100
Re: Общий доступ для двух локальных пользователей
KernelPanic писал(а): ↑17.03.2009 17:08Код: Выделить всё
#!/bin/bash if [ -d "$2" ]; then chmod 770 "$2" elif [ -f "$2" ]; then chmod 660 "$2" fi
Вот за это большое спасибо, я не силен в скриптописании.
Выпадает в "Ошибка сегментрования" при копировании некоторого кол-ва небольших файлов в папках, так что костыль...
Да, костыли определенно есть. Думаю еще для верности в авторан прописать принудительное присвоение прав, чтоб при каждом старте системы доделывало то, что не сделал fileschanged.