The OpenNET Project / Index page

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

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

"Сохранение прав доступа при перемещении файлов"  +/
Сообщение от danmer email(ok) on 25-Окт-09, 18:42 
Есть сервер с debian lenny на борту. На нем организован файловый сервер на самбе 3.2.5 Права на доступ к файлам и папкам задаются через acl. Каждому пользователю доступны как минимум две папки на чтение и запись: личная, куда имеет доступ только он и папка отдела, куда имеет доступ группа пользователей. Все самбовские шары расположены на одной файловой системе.

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

Вопрос к знатокам: можно ли сделать так, чтобы при перемещении папок/файлов права доступа не сохранялись, а наследовались от родительского каталога, куда происходит перемещение.

Сам пока что вижу единственный способ: мониторить лог самбовского full_audit, и после анализа строчек с rename переназначать права.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Сохранение прав доступа при перемещении файлов"  +/
Сообщение от anonimous on 01-Ноя-09, 19:47 
>[оверквотинг удален]
>Проблема возникает, когда пользователь, например, переносит файл из личной папки в общеотдельскую.
>Права доступа при перемещении сохраняются, и в отдельской папке появляется файл,
>на который группа отдела прав не имеет.
>
>Вопрос к знатокам: можно ли сделать так, чтобы при перемещении папок/файлов права
>доступа не сохранялись, а наследовались от родительского каталога, куда происходит перемещение.
>
>
>Сам пока что вижу единственный способ: мониторить лог самбовского full_audit, и после
>анализа строчек с rename переназначать права.

СМ. в сторону
force directory mode = 0777
force create mode = 0777
(force group - хуже, однако)
на по-шарной основе.

в личной папке, однако, user mask 022 стоит, верно?

В домене я применяю это и владельца (группу дисковых прав) всех Самба шар - группу Domain Users - первичную группу всех моих доменных юзеров.
Но это требует кроме
write users = Group1 Group2
в каждую шару писать
valid users = Group1 Group2 Group3 (Group3 - чтение)  
чтоб прочие не совали носы, куда не надо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Сохранение прав доступа при перемещении файлов"  +/
Сообщение от danmer (ok) on 03-Ноя-09, 08:38 
>на по-шарной основе.

А если будет две-три сотни шар самба нормально их переварит? И постоянные samba reload посреди рабочего дня не будут сказываться на работе юзверей? И, как я понимаю, в этом варианте уже будет невозможно назначить отдельные права на подпапки внутри шары?

Сейчас у меня владельцем папок является root:root, за редким исключением, когда надо назначить квоты. Права даны 700. Сделано жесткое наследование владельца с помощью inherit owner, группы с помощью SGID и прав с помощью inherit permissions и inherit acls. Ну а конкретные права назначены уже с помощью acl, которые тоже наследуются.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Сохранение прав доступа при перемещении файлов"  +/
Сообщение от danmer email(ok) on 01-Дек-09, 22:36 
Проблему решил, как и первоначально думал, написанием программки мониторинга full_audit лога самбы. На оптимальность кода не претендую, но может кому пригодится

$PATH_SHARE="home/samba/shares";
$TMP_FILE="/tmp/acl_rename.tmp";
$TMP_FILE2="/tmp/acl_rename2.tmp";

while ($str=<STDIN>)
{

if (index($str,"|rename|ok|")!=-1)
{
  @ar = split(/\|/,$str);
  $share=$ar[2];
  $action=$ar[3];
  $ok=$ar[4];
  $src=$ar[5];
  $dst=$ar[6];
  chomp($dst);

  $psrc=reverse(substr(reverse($src),index(reverse($src),"/")+1,1000));
  $pdst=reverse(substr(reverse($dst),index(reverse($dst),"/")+1,1000));

  if ($psrc ne $pdst)
  {
   qx "find '/$PATH_SHARE/$share/$dst' > $TMP_FILE2";
   open(F2, $TMP_FILE2) or die "Ошибка открытия файла в acl_rename";
   @f2 = <F2>;
   close(F2) or die "Ошибка закрытия файла в acl_rename";

   foreach $j (@f2)
   {
    chomp($j);
    $pj=reverse(substr(reverse($j),index(reverse($j),"/")+1,1000));
    qx "getfacl '$pj' > $TMP_FILE 2>/dev/null";

    open(F1, $TMP_FILE) or die "Ошибка открытия файла в acl_rename";
    @f1 = <F1>;
    close(F1) or die "Ошибка закрытия файла в acl_rename";

    open(F1, ">$TMP_FILE") or die "Ошибка открытия файла в acl_rename";
    $f1[0] = "# file: $j\n";

    if (-d "$j")
     {
      print F1 @f1,"\n";
     }
    else
     {
      foreach $i (@f1)
      {
       if (index($i,"default:")==-1)
        {
         print F1 $i;
        }
      }
     }
     close(F1) or die "Ошибка закрытия файла в acl_rename";
     qx "cd / && setfacl --restore=$TMP_FILE";
   }
  }
}
}

Запуск tail -n 0 -F /var/log/samba/full_audit.log | acl_rename.pl &

Теперь при перемещении файла или папки внутри шары, пермишены и acl не сохраняются, а назначаются равными той папке куда переместили.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Сохранение прав доступа при перемещении файлов"  +/
Сообщение от Сергей (??) on 02-Дек-09, 09:46 
При перемещении права на файл сохраняются, а вот если копировать, то они спускаются с каталога...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Сохранение прав доступа при перемещении файлов"  +/
Сообщение от danmer email(ok) on 02-Дек-09, 11:39 
Мне в обоих случаях нужно чтобы они не сохранялись.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Сохранение прав доступа при перемещении файлов"  +/
Сообщение от tux2002 email(ok) on 24-Дек-09, 15:52 
>[оверквотинг удален]
>Проблема возникает, когда пользователь, например, переносит файл из личной папки в общеотдельскую.
>Права доступа при перемещении сохраняются, и в отдельской папке появляется файл,
>на который группа отдела прав не имеет.
>
>Вопрос к знатокам: можно ли сделать так, чтобы при перемещении папок/файлов права
>доступа не сохранялись, а наследовались от родительского каталога, куда происходит перемещение.
>
>
>Сам пока что вижу единственный способ: мониторить лог самбовского full_audit, и после
>анализа строчек с rename переназначать права.

Покажи getfacl хотя бы одного отдельского каталога. Там есть строка default для группы?
Лично у меня вот такой шаблон назначения прав:


#!/bin/sh
OWNER="administrator"
GROUP="domain admins"
WGROUP="acp-write"
RGROUP="acp-read"
DIR=/samba-data/acp

chmod -R 770 $DIR
chown -R "$OWNER" $DIR
chgrp -R "$GROUP" $DIR
setfacl -R -b $DIR
setfacl -R -d -m u:"$OWNER":rwx $DIR
setfacl -R -m g::rwx $DIR
setfacl -R -d -m g::rwx $DIR
setfacl -R -m u:"clamav":rwx $DIR
setfacl -R -d -m u:"clamav":rwx $DIR
setfacl -R -m g:"$WGROUP":rwx $DIR
setfacl -R -d -m g:"$WGROUP":rwx $DIR
setfacl -R -m g:"$RGROUP":r-x $DIR
setfacl -R -d -m g:"$RGROUP":r-x $DIR


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Сохранение прав доступа при перемещении файлов"  +/
Сообщение от danmer email(ok) on 24-Дек-09, 18:19 
default для группы конечно же есть. Назначаются права так

chown root:gotd1 otd1
chmod 700 otd1
chmod g+s otd1
setfacl -m d:g:gotd1:rwx,g:gotd1:rwx otd1

в итоге getfacl otd1 выдает следующее:

# file: otd1
# owner: root
# group: gotd1
user::rwx
group::---
group:gotd1:rwx
mask::rwx
other::---
default:user::rwx
default:group::---
default:group:gotd1:rwx
default:mask::rwx
default:other::---

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема




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

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