[samba] Проблема с recycle: touch = yes

Oleg Gints oleg на cec.amur.elektra.ru
Вт Мар 23 10:01:37 MSK 2004


Oleg Gints пишет:
> Привет!
> 
> Версия самбы -samba-3.0.2a-alt1.M22
> 
> Проблема - не отрабатывает touch при удалении не своих
> файлов, хотя права на запись файла имеются.
> 

Отвечу сам себе :)

info utime, там читаем:
   `EPERM'
      If the TIMES argument is not a null pointer, you must either
      be the owner of the file or be a privileged user.

Но пользоваться корзиной без touch неудобно -
невозможно будет организовать автоматическую чистку.
А так при активной работе свободное место на диске быстро кончится.

Может следует внести изменения в сторону упрощения:

vfs_recycle.c, функция
static void recycle_do_touch(vfs_handle_struct *handle, const char *fname)


-       if (SMB_VFS_NEXT_UTIME(handle, handle->conn, fname, &tb) == -1 ) {
+       if (SMB_VFS_NEXT_UTIME(handle, handle->conn, fname, NULL) == -1 ) {
                 DEBUG(0, ("recycle: touching %s failed, reason = %s\n", 
fname, strerror(errno)));
         }
  }

т.е. вызываем utime(file_name, NULL)
В этом случае время не требуется быть владельцем файла, достаточно прав 
на запись. Из минусов - изменится не только atime, но и mtime.

Но так хоть можно будет автоматом настроить чистку удаленных скажем пару
дней назад файлов. Пользователи сами этого никогда делать не будут.


-- 
С уважением,
Олег Гинц



Подробная информация о списке рассылки Samba