|
Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Пропадает доступ к общей папке на съемном диске |
|
|
Пропадает доступ к общей папке на съемном диске
|
Новый участник Сообщения: 21 |
Профиль | Отправить PM | Цитировать Server 2003, есть съемный USB винт, на нем зашарена папка. Используется только для чтения. Кэширование отключено (т.е. по идее можно в любое время винт выдергивать - это же для этого настройка?). Если винт выдергивается и вставляется снова, общая папка перестает работать, т.е. она есть, показывается как общая, но при заходе через сеть даже с самого сервера проводник просто показывает пустую папку, т.е. даже ошибку не выдает. Спасает только перешаривание папки. Если делать "безопасное извлечение" винта, то вроде бы все нормально. Но делать это некому (т.е. приходит человек, выдергивает винт, вставляет новый и уходит, консольного логина у него нет). Вот чего бы такое придумать чтобы все работало само? Самозашаривающий авторан на винт не прокатит, его содержимое я не контролирую. Да и не сработает он без залогиненной консоли.
|
|
Отправлено: 00:00, 18-01-2008 |
Ветеран Сообщения: 1190
|
Профиль | Отправить PM | Цитировать Цитата panda34:
|
|
------- Отправлено: 09:14, 18-01-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 788
|
Профиль | Отправить PM | Цитировать Нашел скрипт по раздаче прав на шару и каталог.
Настроить на сервере запуск (хоть каждую минуту) от имени LocalSystem (например, через АТ) или от администратора .CMD-шника, который будет проверять, работает ли шара: rem предположим, что у нас расшаривается каталог d:\shared с именем shared rem если шара видна - всё ok, ничего не делаем if exists \\server\shared\*.* goto end rem если локально ничего не видно, значит пустой каталог или нет диска, ничего не делаем if NOT exists d:\shared\*.* goto end rem пересоздаем шару net share shared /delete start ShareSetup.vbs :end Вот, собственно, сам скрипт - модифицировать по вкусу '======================================================= '======================================================= 'ShareSetup.vbs 'Author: Jonathan Warnken - jon.warnken@gmail.com 'Credits: parts of various other posted scripts used 'Requirements: Admin Rights 'Some Addition Lev Shumskii aka WildCat 'Now You may set SecurityDescriptor for NTFS 'and this script work properly under Win2k & Win2k3 t00 '======================================================= Option Explicit Const FILE_SHARE = 0 Const MAXIMUM_CONNECTIONS = 15 Const strDomain = "CohoVineYards.com" Const PERM_READ = 1179817 Const PERM_MODIFY = 1245631 Const PERM_FULL = 2032127 Dim strComputer Dim objWMIService Dim objNewShare strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objNewShare = objWMIService.Get("Win32_Share") 'Worked Example Call sharesec ("C:\Robot", "Robot", "Only Security Department", "Security Department", Perm_Read, Perm_Modify) Sub sharesec(Fname, shr, info, account, Share_Perm, NTFS_Perm) Dim FSO Dim Services Dim SecDescClass Dim SecDesc Dim Trustee Dim ACE Dim Share Dim InParam Dim Network Dim FolderName Dim AdminServer Dim ShareName Dim FolderSecurity Dim RetVal Dim SecurityDescriptor Dim User FolderName = Fname AdminServer = "\\" & strComputer ShareName = shr 'Write New security descriptor for the FolderName Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & AdminServer & "\ROOT\CIMV2") Set SecurityDescriptor = Services.Get("Win32_SecurityDescriptor") Set FolderSecurity = GetObject("winmgmts:Win32_LogicalFileSecuritySetting.Path='" & FolderName & "'") RetVal = FolderSecurity.GetSecurityDescriptor(SecurityDescriptor) Set Trustee = SetGroupTrustee(strDomain, account) 'Use SetGroupTrustee for groups and SetAccountTrustee for users Set ACE = Services.Get("Win32_Ace").SpawnInstance_ ACE.Properties_.Item("AccessMask") = NTFS_Perm ACE.Properties_.Item("AceFlags") = 3 ACE.Properties_.Item("AceType") = 0 ACE.Properties_.Item("Trustee") = Trustee SecurityDescriptor.Properties_.Item("DACL") = Array(ACE) RetVal = FolderSecurity.SetSecurityDescriptor(SecurityDescriptor) 'Create new Share Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & AdminServer & "\ROOT\CIMV2") Set SecDescClass = Services.Get("Win32_SecurityDescriptor") Set SecDesc = SecDescClass.SpawnInstance_() Set Trustee = SetGroupTrustee(strDomain, account) 'Use SetGroupTrustee for groups and SetAccountTrustee for users Set ACE = Services.Get("Win32_Ace").SpawnInstance_ ACE.Properties_.Item("AccessMask") = Share_Perm ACE.Properties_.Item("AceFlags") = 3 ACE.Properties_.Item("AceType") = 0 ACE.Properties_.Item("Trustee") = Trustee SecDesc.Properties_.Item("DACL") = Array(ACE) Set Share = Services.Get("Win32_Share") Set InParam = Share.Methods_("Create").InParameters.SpawnInstance_() InParam.Properties_.Item("Access") = SecDesc InParam.Properties_.Item("Description") = Info InParam.Properties_.Item("Name") = ShareName InParam.Properties_.Item("Path") = FolderName InParam.Properties_.Item("MaximumAllowed") = MAXIMUM_CONNECTIONS InParam.Properties_.Item("Type") = 0 Share.ExecMethod_ "Create", InParam End Sub Function SetAccountTrustee(strDomain, strName) Dim objTrustee Dim account Dim accountSID set objTrustee = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_ set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Account.Name='" & strName & "',Domain='" & strDomain &"'") set accountSID = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SID.SID='" & account.SID &"'") objTrustee.Domain = strDomain objTrustee.Name = strName objTrustee.Properties_.item("SID") = accountSID.BinaryRepresentation set accountSID = nothing set account = nothing set SetAccountTrustee = objTrustee End Function Function SetGroupTrustee(strDomain, strName) Dim objTrustee Dim account Dim accountSID set objTrustee = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_ set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Group.Name='" & strName & "',Domain='" & strDomain &"'") set accountSID = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SID.SID='" & account.SID &"'") objTrustee.Domain = strDomain objTrustee.Name = strName objTrustee.Properties_.item("SID") = accountSID.BinaryRepresentation set accountSID = nothing set account = nothing set SetGroupTrustee = objTrustee End Function |
------- Отправлено: 11:38, 18-01-2008 | #3 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата panda34:
В настоящий момент практикую смену 2х бэкапных хардов несколько раз в неделю, шару восстанавливаю батником, правда запускаю ручками. Единственное - бывает, что валятся точки монтирования хардов, поэтому временами приходится перезагружать комп, чтобы коректно подцеплялся хард. Для пояснения: 1й хард монтируется в папку D:\Mount\BackUp0, а 2й - в D:\Mount\BackUp1, сама шара - "BackUp", права - только доменным админам. @Echo Off net share BackUp /delete set N=~ for %%n in (0 1) do if exist "D:\Mount\BackUp%%n\System Volume Information" Set N=%%n If %N%==~ GoTo Nothing net share BackUp=D:\Mount\BackUp%N% Echo Y | cacls BackUp%N% /T /C /G "domain admins":F GoTo End :Nothing Echo NOTHING TO SHARE!!! pause>nul :End |
|
Отправлено: 17:24, 25-01-2008 | #4 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата NiOl:
Тогда другой вопрос: как дать пользователю право на перезашаривание папки? В XP я делаю задание планировщика с сохраненным паролем админа и пользователь запускает его батником через schtasks. В сервере на schtasks у пользователей прав нету |
||
Отправлено: 13:48, 24-02-2008 | #5 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата panda34:
1. USB-Диск подключается именно на сервер и посторонним челом, которому админские права неположены. 2. Диск всегда один, требуется для работы какой-то проги на серваке и изменить точку монтирования нельзя! Или можно?!! т.е. допустим он всегда монтируется как "E:", но можно и поменять букву, т.к. диск служит только для расшаривания данных группе пользователей, к примеру "\\OurSvr\UpDatedBase\" 3. Диск должен быть доступен в сети практически мгновенно после его физического подключения. Главный вопрос - жесткая привязка точки монтирования - буква диска. Если на серваке нет никакой проги, у которой стоит привязка к конкретному каталогу на этом съемном диске, или же прогу МОЖНО настроить на другой путь к данным, то рекомендую сделать так: На каком-нить несъемном диске сервака (но желательно не на "С:") создать каталог, к примеру "D:\USB_Disk" и расшарить его под старым именем, в него смонтировать этот самый диск (правой "My Computer" => "Manage" => "Disk Management" => выбираем USB устройство, правой кнопкой "Change Drive Letter & Paths" => "Change" => "Mount in the following empty NTFS folder" => выбираем тот самый каталог. Теперь при подключении диска к серваку (если он автоматически найдется) диск мгновенно окажется доступен по сети. Без подключенного диска шара также останется доступна, но! Обращение к ней будет давать ошибку! Это в принципе не страшно - достаточно один раз объяснить пользователям, что такая ошибка означает, что диск не подключен. И вся проблема. |
|
Отправлено: 21:11, 24-02-2008 | #6 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать NiOl, Да, про монтирование в папку я уже думал, проблема в том что винт не один, т.е. просто меняется один на другой. Надо выяснить, если их всего два то смонтировать оба в одну папку.
И еще, зашаривать нужно не диск целиком, а папку в корне диска, т.е. "монтировочную" папку на стационарном диске зашарить не получится, а с вложенной папкой, подключаемой на ходу, есть подозрения что будет точно такая же история. Экспериментировать не могу, т.к. сервером управляю через RDP, а команды "выдернуть USB шнур и вставить обратно" там нету |
Отправлено: 12:03, 25-02-2008 | #7 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Тогда только батник, запускаемый на серваке по заданию (твоему) хоть каждые 5 минут. Батник должен проверять доступность шары, и если ее нет, то пытаться подключить. Для Win`03 calcs.exe выполнять нет нужды, права прекрасно прописываются прямо в net share ключем "grand" (кажется). Если будет проблема написать батник - пиши, поможем.
зы: за исходник можешь взять мой батник, но в нем критичный минус для твоей системы - он не проверяет наличия уже созданной шары, а убивает ее и пытается создать заново. Для моего случая это нормально - доступ к шаре осуществляется только ночью, а запуск батника - мной, в ручном режиме. |
------- Отправлено: 12:43, 26-02-2008 | #8 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Пробовал монтировать в папку, зашаривать диск целиком, зашаривать "монтировочную" папку на локальном диске - пофигу. Если открыты файлы на шаре при отключении диска - после подключения шара не работает. Чего-то там служба сервера все-таки кэширует, зараза.
Короче, написал батник: :m1 if exist \\server\sharedfolder\somefile ( timeout 60 /nobreak goto m1 ) net share sharedfolder /delete /y :m2 if not exist g:\sharedfolder\somefile ( timeout 5 /nobreak goto m2 ) net share sharedfolder=g:\sharedfolder timeout 10 /nobreak goto m1 Изврат, конечно... |
Отправлено: 13:17, 28-02-2008 | #9 |
Ветеран Сообщения: 4904
|
Профиль | Сайт | Отправить PM | Цитировать panda34,
net stop server net start server Будет достаточно после подключения винта заново. Пользователю можно дать права на рестарт службы "Сервер". |
------- Отправлено: 13:34, 28-02-2008 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - [решено] доступ к общей папке | ejik_off | Microsoft Windows 7 | 2 | 11-10-2009 17:50 | |
Доступ - Доступ через сеть к указанной общей папке | Makcermakcer | Microsoft Windows Vista | 0 | 29-08-2009 23:06 | |
[решено] На съемном USB жестком диске Обнаружено: Net-Worm.Win32.Kido.ih | uhuh | Лечение систем от вредоносных программ | 24 | 22-04-2009 08:39 | |
Прочее - [решено] Доступ под паролем к общей папке в одноранговой сети | sergant138 | Microsoft Windows 2000/XP | 2 | 11-01-2008 14:41 | |
Пропадает общий доступ к папке (Win98 SE). Что делать? | ramzes80 | Microsoft Windows 95/98/Me (архив) | 3 | 13-12-2004 09:15 |
|