Samba запретить удалять файлы

Обновлено: 03.07.2024

Настройка файлового сервера Samba на платформе Debian / Ubuntu

Файловый сервер можно без преувеличения назвать средством первой необходимости, даже в сетях без выделенного сервера вы всегда обнаружите папки с общим доступом, но по мере роста объемов данных появляется потребность в отдельном решении. Вариантов его организации множество, одним из которых является служба Samba на Linux-сервере, это простое, недорогое, но в то же время мощное решение по организации общего доступа к файлам и папкам в Windows сетях. В данной статье мы рассмотрим настройку простого сервера на основе Samba 4 работающего в ОС Debian / Ubuntu.

Несмотря на то, что в данной статье в качестве ОС мы использовали Debain 9, все сказанное будет справедливо для любой ОС на базе Debian или Ubuntu, а с поправкой на работу пакетного менеджера - для любого Linux-дистрибутива. Также мы предполагаем, что читатель имеет базовые навыки работы с Linux-системами на базе Debian.

Подготовка системы

Прежде чем приступать к работе продумайте схему хранения данных и доступа к ним. Существую разные типы данных, которые мы будем характеризовать по интенсивности доступа к ним, скажем "холодные данные" отличаются тем, что обращения к ним происходят крайне редко (а к некоторым вообще никогда), но при этом они могут занимать значительные объемы. Это прежде всего резервные копии, инсталляционные пакеты, образа дисков и т.д. и т.п.

Противоположность им "горячие данные" - это данные которые интенсивно используются и изменяются, для файлового сервера примером таких данных может служить файловая информационная база 1С:Предприятия. Между ними находятся обычные данные, характер доступа к которым не имеет каких-либо особенностей.

Исходя из типа данных следует выбирать диски для хранения, для "горячих данных" это должны быть быстрые диски или SSD, а для "холодных" подойдут экономичные модели с упором на большой объем. Также не забывайте про RAID, для защиты данных от аппаратного выхода дисков из строя.

Продумайте структуру директорий и прав доступа к ним. Разумно будет исходить из следующих соображений: разделяйте диски с данными и системой, чтобы при необходимости можно было заменить их без лишних затруднений или перенести на другой сервер. Храните разные типы данных на разных дисках или разделах, скажем, если на разделе для резервных копий закончится свободное место, то это никак не повлияет на работу баз 1С.

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

samba-debian-001.jpg

Также обратите внимание на имя компьютера, Samba 4 будет использовать его в качестве NetBIOS имени.

После установки ОС следует изменить настройку лимита на количество одновременно открытых файлов, в Linux это 1024, а в Windows 16384. Для этого откройте файл /etc/security/limits.conf и добавьте в конце две строки:

После чего сервер следует перезагрузить.

Установка и базовая настройка Samba 4

Установка Samba предельно проста:

После чего откроем файл /etc/samba/smb.conf и выполним общие настройки. Большинство указанных опций в файле уже есть, многие из них даже не потребуется менять, но их назначение будет полезно знать, поэтому мы прокомментируем наиболее важные из них.

Начнем, опции перечисляются в порядке их следования в файле:

Обозначает рабочую группу Windows, по умолчанию WORKGROUP.

Следующая опция определяет интерфейсы или подсети, с которыми будет работать Samba. Допускается смешанная запись, как в примере выше, либо можно указать только интерфейсы:

Или только подсети:

Но само по себе указание интерфейсов не ограничивает Samba, для того чтобы ограничения начали действовать нужно включить следующую опцию:

Следующая опция указывает расположение логов:

По умолчанию лог выключен, для того чтобы его включить добавьте в файл опцию:

Если вам нужен более подробный лог - установите более высокий уровень, минимальное значение - 1, максимальное - 5.

Также закомментируйте опцию:

В настоящий момент она является не рекомендованной (deprecated).

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

Определяет способ определения гостевого доступа, при указанном значении гостем будет считаться любой пользователь, который отсутствует в базе Samba. Также могут использоваться значения never - не использовать гостевой доступ и bad password - в этом случае гостем будет считаться, в том числе, и существующий пользователь если он неправильно введет пароль. Данное значение использовать не рекомендуется, так как при ошибке в пароле пользователь все равно получит доступ, но с гостевыми правами.

На этом общая настройка сервера закончена. Проверим конфигурацию на ошибки:

И перезапустим сервер

Настройка общего ресурса с гостевым доступом

Начнем с самого простого варианта - создадим общий ресурс, доступ к которому может иметь любой пользователь. Для этого добавим в конец файла /etc/samba/smb.conf следующие строки.

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

  • comment - описание ресурса, необязательный параметр;
  • path - путь к директории;
  • read only - режим только чтения, указываем no;
  • guest ok - разрешен ли гостевой доступ, указываем yes;

Теперь создадим саму директорию:

и установим на нее необходимые права, для гостевого ресурса это 777:

samba-debian-006.jpg

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

Это полностью снимет права на выполнение для всех, но оставит полный доступ к исполняемым файлам. Если же требуется разрешить возможность запуска, то вместо create mode следует использовать опцию force create mode, которая будет устанавливать разрешения без учета прав доступа DOS:

Теперь перезапускаем Samba и пробуем получить доступ с любого Windows-клиента.

samba-debian-002.jpg

Если все сделано правильно, то сервер появится в сетевом окружении, и вы без проблем получите доступ к созданной нами общей папке.

Настройка общего ресурса с парольным доступом

Гостевой доступ это просто и удобно, но не всегда приемлемо. Существуют ситуации, когда доступ к общему ресурсу должны иметь только определенные пользователи. В нашем примере создадим два таких ресурса: для бухгалтерии и для IT-отдела.

Снова откроем конфигурационный файл и добавим в него две секции:

Они предельно просты и отличаются запретом гостевого доступа - guest ok = no. Для того, чтобы разделить доступ к ресурсам будем использовать группы пользователей, создадим две новые группы для наших подразделений:

Теперь создадим каталоги:

и изменим группу владельца:

Затем установим права:

Значение 2770 обозначает что мы предоставляем полные права владельцу и группе, для остальных доступ запрещен. А первая двойка устанавливает SGID для каталога, что обеспечивает присвоение группы каталога каждому создаваемому в нем файлу.

В некоторых случаях определенный интерес представляет выставление для каталога sticky bit, который означает, что удалить или переименовать файл может только его владелец, но работать с ним, в том числе изменять, может любой пользователь, имеющий права записи в каталог. Для этого вместо набора прав 2770 используйте права 3770.

Не забываем указать права для вновь создаваемых файлов и директорий, здесь справедливо остается все то, о чем мы говорили выше. Например, можно использовать такой набор опций (с правом запуска исполняемых файлов):

Обратите внимание, что мы устанавливаем SGID только для каталогов, для файлов в данной схеме выставлять его не имеет смысла. А вот если вы установили sticky bit, то его нужно указать в обоих случаях:

Не забываем, что данные опции следует добавить в каждую секцию.

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

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

Затем добавим его в базу Samba:

При этом потребуется установить пароль для доступа к Samba-ресурсам, он должен совпадать с основным паролем пользователя. После чего включим эту учетную запись:

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

samba-debian-003.jpg

С настройками по умолчанию Samba предоставляет каждому существующему пользователю доступ только на чтение к его домашнему каталогу. На наш взгляд это довольно удобно и безопасно. Если вас не устраивает такое поведение - удалите из конфигурационного файла секцию [homes].

Теперь о других пользователях. Скажем у нас есть бухгалтер Иванова и админ Петров, каждый из которых должен иметь доступ к своему ресурсу. В то же время иметь доступ к самому Samba-серверу им необязательно, поэтому создадим новых пользователей следующей командой:

Ключ -M заводит пользователя без создания домашнего каталога, а -s /sbin/nologin исключает возможность входа такого пользователя в систему.

Поместим каждого в свою группу:

Затем добавим их в базу Samba, при этом потребуется установить им пароли:

И включим эти учетные записи

Если все сделано правильно, то пользователь будет иметь доступ к своим ресурсам и не иметь к чужим.

samba-debian-004.jpg

Также обратите внимание, что несмотря на то, что общий ресурс с именем пользователя создан, доступ он к нему получить не сможет, так как физически его домашняя директория не существует.

Настройка общего ресурса со смешанным доступом

Теперь рассмотрим более сложную схему, ресурс со смешанным доступом. Например, вы хотите организовать общую папку с инсталляционными пакетами программ, которые может запустить каждый, но не хотите, чтобы кто-либо мог изменять его содержимое, оставив эту привилегию только участникам группы smbadm.

Добавим в конфигурационный файл следующую секцию:

Здесь все понятно, стандартное описание ресурса. Теперь создадим директорию и изменим группового владельца:

Теперь подумаем о правах, владелец и группа adm должны иметь полный доступ - rwx (7) плюс установленный SGID для директорий, а остальные должны иметь право чтения и выполнения, т.е. r-x (5), для файлов следует использовать force create mode, иначе вместо желаемых 0775 вы получите 0764, все тоже самое, только без права выполнения для группы и остальных.

Перезапускаем Samba и проверяем, без аутентификации пользователь может только копировать и запускать файлы, а прошедшие проверку подлинности пользователи могут изменять и удалять содержимое общего ресурса.

Настройка скрытого общего ресурса

Еще одна часто встречающаяся задача - скрыть общий ресурс из отображаемого списка. Например, служебные ресурсы, используемые в административных целях. Нет ничего проще, достаточно добавить в секцию ресурса еще одну опцию:

После чего ресурс будет скрыт из отображения, но попасть в него можно будет явно указав путь к нему:

samba-debian-007.jpg

Во всем остальном такие ресурсы ничем не отличаются от обычных и к ним применимо все вышесказанное.

Настройка корзины для общего ресурса

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

Для активации корзины добавьте в секцию к общему ресурсу следующие строки:

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

Выше мы везде говорили о правах, корзина не исключение, если у вас включено сохранение структуры папок, то по умолчанию она будет создана с правами 0700, т.е. восстановить файл сможет только тот, кто его удалил. Рекомендуется изменить это поведение и установить права аналогичные указанным в directory mode, для этого добавим еще одну опцию (права указаны для директории buch):

Перезапустим Samba и попробуем что-нибудь удалить.

samba-debian-005.jpg

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

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

Также рекомендуем ознакомиться со статьей Linux - начинающим. Часть 4. Работаем с файловой системой. Теория для более подробного ознакомления с системой прав файловой системы Linux.

Разграничение прав доступа на файловом сервере Samba

В предыдущей статье мы связывали файловый сервер Samba с доменом FreeIPA. Мы развернули и настроили доступ на общие файловые ресурсы с авторизацией пользователей как из домена FreeIPA, так и из доверенного домена Active Directory. Теперь нам нужно создать структуру общего файлового каталога и разграничить доступ на каждую папку в соответствии с правилами, принятыми в организации. Работы будут проводиться на сервере с установленной ОС Rosa Cobalt (он же CentOS7, он же RedHat 7).

Вводные данные.

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

Будем разворачивать следующую структуру:

  • FS_share - общая точка входа на файловом сервере, содержащая папкаи подразделений организации.
  • Unit1 - папка первого подразделения
  • Unit2 - папка второго подразделения.
  1. Все пользователи организации должны видеть структуру каталога.
  2. Пользователи первого подразделения должны работать в каталоге Unit1, но не иметь доступ к каталогу второго подразделения.
  3. Пользователи второго подразделения должны работать в каталоге Unit2, но не иметь доступ к каталогу первого подразделения.
  4. Администраторы файлового сервера должны иметь доступ ко всем каталогам файлового сервера.

Добавляем группы в каталоге FreeIPA.

Для организации доступа к папкам по вышеописанному сценарию нам необходимо в домене FreeIPA создать четыре группы:

  1. fs-users - группа, члены которой имеют доступ к корневому каталогу файлового ресурса. В нее добавим встроенную группу ipausers и ранее созданную внешнюю группу, в которую входят пользователи доверенного домена Active Directory. Т.е. доступ на просмотр корневого каталога файлового ресурса будут иметь все пользователи домена FreeIPA и пользователи доверенного домена Active Directory.
  2. unit1 - группа, в которую входят учетные записи первого подразделения.
  3. unit2 - группа, в которую входят учетные записи пользователей второго подразделения.
  4. fs-admins - группа, в которую входят учетные записи администраторов файлового сервера. Т.е. эти пользователи будут иметь полный доступ во все подкаталоги общего файлового ресурса, а также смогут добавлять или удалять объекты (папки) в корневом общего файлового ресурса.

Конфигурация Samba.

Открываем файл /etc/samba/smb.conf и вносим изменения в раздел, описывающий общие ресурсы. Рздел global сейчас не рассматриваем, т.к. мы его уже настроили на предыдущем шаге.

Немного расшифруем директивы:

  • Директива force create mode = 0110 необходима для того, чтобы дополнтельно выставить на вновь создаваемые файлы executable бит для владельца и группы, который не выставляется директивой create mask. Директива force create mode действует по принципу ИЛИ с основной маской доступа, и выставляет бит в том случае, если он не выставлен директивой create mask.
  • Директива force group = +группа запрещает доступ к папкам всем, кто не входит в эту подгруппу. Текущий пользователь, обращающийся к общему ресурсу имеет только первичное значение по умолчанию группы, назначенное на эту группу. Это позволяет администратору решать, что только пользователи, которые уже находятся в специфической группе, создадут файлы с монопольным использованием группы, установленным на эту группу. Это дает более тонкую степень детализации назначения монопольного использования. Кроме того, это определяет имя группы UNIX, которое будет назначено как первичная группа по умолчанию для всех пользователей, соединяющихся с этим сервисом.
    Это полезно для того, чтобы совместно использовать файлы, гарантируя, что весь доступ к файлам этого сервиса будет использовать названную группу для проверки их разрешений. Таким образом, назначая разрешения для этой группы к файлам и каталогам в пределах этого сервиса администратор Samba может ограничить или позволить совместно использовать эти файлы.
  • Директива browsable = no вообще скрывает подпапки из прямой видимости извне. Поэтому, когда вы просматриваете сетевое окружение с других компьютеров, вы увидите только папку FS_Share .
  • valid users - список пользователей, которым разрешен доступ к сервису. Имена, начинающиеся с ‘ @ ’, ‘ + ’ и ‘ & ’ интерпретируются согласно некоторым правилам и не действительны в имени пользователя.
    Если значения параметра не определено, то все пользователи могут подключаться. Если имя пользователя находится одновременно и в этом списке и в списке invalid users list тогда, доступ для него к сервису будет запрещен. Потоком servicename заменяют для %S . Для секции [homes] полезно использование %S для подстановки имени пользователя.
  • write list - параметр определяет список пользователей имеющих доступ к сервису на чтение/запись. Если соединяющийся пользователь находится в этом списке тогда, он получит доступ на запись независимо от того установлен ли параметр read only (только чтение). Список может содержать названия группы, используется синтаксис @group . Заметьте что если пользователи одновременно находятся в списке только для чтения и в списке на чтение запись они получат доступ и на запись.
  • guest ok - если этот параметр задан в yes на общем ресурсе, то для подключения к ресурсу не требуется пароль. По умолчанию установлен в " No "
  • create mask - устанавливает права для вновь создаваемых файлов
  • directory mask - устанавливает права для вновь создаваемых папок

Права в подпапки Unit1 и Unit2 наследуются от вышестоящей папки ( FS_Share )/ Их задавать в соответствующих разделах не нужно. Более того, если их явно указать в этих разделах, то они игнорируются.

Создаем структуру файлового ресурса и раздаем права.

Для начала необходимо создать структуру папок в корневом каталоге, соответствующую той, которая описана в файле /etc/samba/smb.conf .

Затем назначаем владельцев папок и назначаем права доступа:

  • По умолчанию владельцем владельцем корневой папки share является пользователь root . Оставляем этот параметр без изменения.
  • Владельцами папок Unit1 и Unit2 делаем соответствующие группы пользователей.
  • Права 2770, выставленные на папки Unit1 и Unit2 гарантируют, что все файлы и подпапки, находящиеся в них, будут всегда создаваться с соответствующими подгруппами этих родительских папок, что предоставляет пользователям подгрупп полный доступ к любым документам и подпапкам, даже если они созданы другими пользователями.

В итоге в данной конфигурации мы полностью решили поставленную перед нами задачу.

В прошлой статье мы выполнили базовую настройку Samba. В результате все пользователи внутри нашей сети получили возможность читать и записывать любые данные в расшаренной папке. В этой статье я расскажу, как сделать директорию доступной (или, наоборот, недоступной) для определенных пользователей или ip-адресов внутри вашей сети. Кроме того, я покажу, как скрыть расшаренную нами папку от посторонних глаз.

О пользователях и паролях в Samba.

В качестве пользователей Samba рассматривает уже существующих пользователей Linux. Такой подход обусловлен тем, что подключившемуся необходимо выполнять какие-то действия — как минимум, чтение и, в некоторых случаях, запись. Чтобы система позволила ему это сделать, его необходимо аутентифицировать.

Пароль, в отличие от имени, необходимо установить отдельно. Делается это с помощью утилиты smbpasswd, с ее же помощью мы включаем (активируем) пользователя:

О пользователях и паролях в Samba

О пользователях и паролях в Samba

Вместо username подставьте имя нужного (и обязательно существующего!) пользователя Linux. В процессе потребуется дважды ввести пароль.

Если у вас или других пользователей есть компьютер с Windows, где имя пользователя отличается от используемого в Linux, очень удобно создать псевдоним (алиас), указав его в файле /etc/samba/smbusers. Эта же возможность пригодится и для того, чтобы позволить разным людям действовать от одного имени.

В Ubuntu 16.04 этот файл изначально отсутствует, но его легко создать самостоятельно. Внутрь нужно поместить строку примерно следующего содержания:

где user — имя пользователя на машине с Ubuntu, того самого, для которого мы только что создали пароль, а admin и vasiliy — псевдонимы, а точнее — имена пользователей на компьютерах с Windows. Теперь при подключении Samba будет знать, что admin — это известный ей пользователь user. Как видите, псевдонимов у каждого пользователя может быть несколько, а разделяются они пробелом.

После сохранения документа отредактируйте smb.conf, добавив в секции [global]:

иначе Samba ничего не узнает о добавленных псевдонимах.

В некоторых старых руководствах указывается, что пароли и имена пользователей Samba хранятся в файле /etc/samba/smbpasswd в зашифрованном виде. Однако на данный момент по умолчанию эти данные находятся в бинарном файле /var/lib/samba/private/passdb.tdb. Способ хранения этих данных определяет параметр passdb backend, расположенный в секции [global] в /etc/samba/smb.conf. Изменение его значения на smbpasswd заставит Samba снова использовать упомянутый выше текстовый файл. Можно также указать значение ldapsam и далее, через пробел - адрес хранилища, к которому нужно подключиться с помощью LDAP.

Создание скрытой сетевой папки с ограниченным доступом.

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

Если папка еще не существует, создайте ее и убедитесь, что она доступна для записи и чтения нужным пользователям. Теперь добавим новый раздел в наш smb.conf с примерно следующим содержанием (не забудьте подставить свои данные):

Параметр browseable, как уже упоминалось в прошлой статье, определяет, будет ли видна расшаренная папка всем подключившимся. Выставив отрицательное значение, мы делаем ее невидимой. Чтобы попасть внутрь, необходимо при подключении указать ее имя после адреса сервера, например так:

В примере выше есть несколько новых параметров:

  • read list — список пользователей, имеющих доступ только для чтения;
  • write list — пользователи, имеющие право записи;
  • valid users — ограничивает список пользователей, которые имеют право подключаться.

Таким образом, подключиться могут только user1, user2 и user3 и только при условии, что они знают о расшаренной папке, а user1 может только читать. Существует и способ запретить конкретным пользователям подключаться, для этого используйте опцию invalid users.

Если устройства в вашей сети имеют статические ip-адреса, можно указать их как разрешенные c помощью параметра hosts allow, либо, наоборот, запретить, прописав их после hosts deny.

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

Создание скрытой сетевой папки с ограниченным доступом

Создание скрытой сетевой папки с ограниченным доступом

Создание скрытой сетевой папки с ограниченным доступом

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


В связи с очень высокой стоимостью владения файловыми серверами компании на платформе Windows (лицензирование сервера + лицензия клиентского доступа CAL на каждое подключение) было принято решение о переводе файловых ресурсов на серверы Linux Samba.

Однако при этом возник вопрос о культуре использования пользователями файловых ресурсов.

Увы, но возможность обеспечения безлимитным дисковым пространством так называемых "обменов" отсутствует в связи с ограничением дискового пространства серверов. А пользователи привыкли зачастую помещать туда файлы, не относящиеся к работе, такие как, например, сборники музыки, фильмы, видеоролики. Просмотр списка графических изображений в виде эскизов на общих папках генерирует для каждой папки с находящимися в ней изображениями файлы db. Но самое "инновационное" решение от пользователей, с которым пришлось столкнуться, заключалось в помещении на общий ресурс архива, затем распаковка его в ту же папку, а потом создание в этой же папке очередного архива, который содержал уже в себе первоначальный архив и его распакованное содержимое.

Призывы к совести пользователей не нашли у последних отклика, поэтому пришлось применить некоторые административные методы. К счастью, такие нашлись в виде директив на конкретные общие папки (shares).

Итак, чтобы нельзя было записать в общую папку файлы архивов (zip. rar, 7z), кинофильмы и видеоролики (avi, mkv, mp4, mov), файлы mp3 или ogg, а также предотвратить создание вышеупомянутых файлов эскизов и "кусков", оставшихся от редактирования различных документов, добавьте в конфигурацию конкретного общего ресурса Samba следующие строки:

delete veto files = yes
veto files = /*.zip/*.rar/*.7z/*.mp3/*.ogg/*.avi/*.mp4/*.mov/*.mkv/*.vob/*.tmp/*.db/

Примечание. Можно также добавить и

Для применения новых настроек перезагрузите Samba.

Если необходимо противодействовать записи образов дисков или ряда файлов, содержащихся на компакт-дисках, то продолжите строку выше: *.iso/*.nrg/*.ifo/*.bup/*.vob/

Директива delete veto files = yes указывает серверу Samba удалять файлы запрещённых форматов. А список данных запрещённых форматов содержится в строке veto files = , например: veto files = /*.3gp/

Теперь, если пользователь начнёт операцию копирования (или перемещения) в такую папку, например, фильма, то по завершении копирования (или перемещения) его ждёт сюрприз .

Читайте также: