-
Вообщем, рассказываю!
Есть СЕРВЕР с расшаренной папкой Х и созданным для нее ЛОГИНОМ и ПАРОЛЕМ, которые она требует для возможности юзания этой папки Есть сетевая ПРОГА, которая должна работать с этой сетевой папкой (т.е. создавать, удалять, перемещать файлы)
Так вот, в настройках проги прописан ПУТЬ, ЛОГИН и ПАРОЛЬ, при помощи которых она успешно работает с сетевой папкой. Прога написана на Делфи и использует для этой цели функцию WNetAddConnection2
Появилась проблема. До запуска ПРОГИ мы не можем зайти на сетевой ресурс, т.к. выдается диалоговое окно для ввода ЛОГИНА и ПАРОЛЯ. А вот во время работы ПРОГИ - диалоговое откно не появляется и ресурс доступен каждому.
ВОПРОС: Как защитить сетевой ресурс - так чтобы Х могла использовать только ПРОГА, но не юзеры?? Ибо скрыть IP сервера "невозможно"
PS: Мопед не мой, я программу не писал. А программист морозится, говорит эта задача не решаема
-
все верно. все так и должно быть.
-
> А вот во время работы ПРОГИ - диалоговое откно не появляется > и ресурс доступен каждому.
каждому это кому? не из под админа ли все работают? нужно чтобы прога запускалась от другова пользователся... точнее про структуру внутр. сети...
-
> А программист морозится, говорит эта задача не решаема
На кол такого программиста. После установления соединения через WNetAddConnection2 в одной программе оно становится доступным всем программам до тех пор, пока его не разорвать с помощью вызова WNetCancelConnection2. Если программист все же не доработает свою программу, вам останется только написать свою маленькую программу, которая по таймеру или как рвала бы соединение во время работы основной программы.
-
На кол такого программиста.
на кол таких советчиков. что должен был сделать программист, если сама инфраструктура сети это детская песочница? и что толку от кансел коннекшен, если оно вызывается при закрытии программы?
кто помешает юзеру не закрывать эту программу?
-
что должен был сделать программист
Не нужно сваливать все на инфраструктуру сети. Программе пофиг должно быть, как там политика безопасности построена. Должен соблюдаться один из основных постулатов: Создал что-то - уничтожь сразу после использования.
> т.е. создавать, удалять, перемещать файлы
Переписал, создал, удалил файлы - закрой коннект. Еж если пошли по такому пути, надо до ума и довести.
> и что толку от кансел коннекшен, если оно вызывается при > закрытии программы? > кто помешает юзеру не закрывать эту программу?
А с чего вы взяли, что WNetCancelConnection2 вызывается при закрытии программы? Я вообще-то сказал, чтобы либо программист должен доработать, вызывая дисконнект после каждой операции, либо написать свою прогу (или сервис), которая по таймеру постоянно вызывала WNetCancelConnection2. Соединение - понятие глобальное и им могут пользоваться все программы в этой сессии. Так же как и любая программа может его закрыть.
-
Создал что-то - уничтожь сразу после использования.
Смешно. Программисту говорят: пиши программу, работающую с шарой. Путь к шаре, логин и пароль к ней читай из файла настроек.
Но, как только закончишь работать с шарой, немедленно отключись.
-
Доступ к шаре должен быть получен в результате логона юзера запустившего программу. Локально или в домене или еще как.
Если же их жаба душит что все видят шару (типа они озабочены безопастностью шары) - то не надо хранить пароль к ней в настройках (либо просить программера захардкодить пароль в программе). Так как это политика ведущая в противоположном их желаниям направлении (снижающая безопасность ресурсов).
-
> А программист морозится, говорит эта задача не решаема
Предложи ему (программисту) справа к имени шары добавить '$', без кавычек. Если, конечно, задавать или менять имя шары в его или твоей компетенции. Программа это "съест", а вот юзеру, на мой взгляд это будет не по зубам. Успеха))
-
> Программа это "съест", а вот юзеру, на мой взгляд это будет > не по зубам.
На это не стоит наедятся. Сейчас ой как много развелось поделок, показывающих список шар, в том числе и закрытых. И ой как много юзеров ими пользуется.
> Смешно. > Но, как только закончишь работать с шарой, немедленно отключись.
Что же Вы тут смешного усмотрели? Это Вам не БД, где имело бы смысл хранить коннект с СУБД со старта программы и до выхода из нее. Ибо поиметь этот коннект в другой проге ой как сложно было б без особого хакерства (а то и вообще нельзя).
А тут, если такая дыра у МС - то надо обходить ее такими корявыми способами, если уж политика такая корявая. Какой вопрос был задан - таков ответ и был дан. По-вашему, на вопрос "как поменять сломанный карбюратор в машине?" Вы отвечаете - "Не надо было такое г.. покупать - не сломалось бы...".
-
> а вот юзеру, на мой взгляд это будет не по зубам. это ты фаром не пользуешься... он все системные шары (и под них подделывающиеся) на раз показывает. и на мой взгляд не он один.
> Доступ к шаре должен быть получен в результате логона юзера запустившего программу. или можно запускать программу от юзера имеющего права на папку, и если у остальных их не будет, то цель достигнута. простой раздачей прав, и не нужно в программу пароль "вшивать".
> если уж политика такая корявая. доступ дается юзеру, программа работает от имени и с правами юзера, получает доступ... и в одном случае юзеру его дать, в другом нет. это как? что то не то в консерватории. и вовсе не ms.
> По-вашему, на вопрос "как поменять сломанный карбюратор в машине?" Вы отвечаете - "Не надо было такое г.. покупать - не сломалось бы...". именно так и надо отвечать, т.к. купили карбюратор и запихали его в дизель... логика не стыкуется. либо делай как было задумано, либо все детали в мусор...
-
Что же Вы тут смешного усмотрели?
Вот именно что не БД. Права на шару даются юзеру, а не программе. Поэтому делать AddConnection в интерактивной программе - зло. Юзер запустивший программу должен уже иметь права на шару. Тогда и кансел не потребуется.
-
Вариант: октрывать шару => производить операции => закрывать шару реализован, только операция занимает допустим около получаса, поэтому это "отчасти" защита.
Все еще думаем)
-
все же уже разжевали. о чем тут еще думать?
-
Можно кое-что придумать: например написать процедуры Connect и DisConnect. Надо считать список файлов - Connect>ListFiles>DisConnect, скопировать/переместить/изменить/переименовать/всякаятакаяхрень - по тому же алгоритму: Connect>всякаяхрень>DisConnect Примеры процедур:
Procedure Connect;
var Err: integer; nw: TNetResource;
begin
nw.dwType := RESOURCETYPE_ANY;
nw.lpLocalName := nil; nw.lpRemoteName := PChar('\\192.168.3.10\Shara'); nw.lpProvider := nil;
Err := WNetAddConnection2(nw, PChar('Password'), PChar('NickName'), 0);
if Err <> NO_ERROR then
begin
ShowMessage('Не удалось подключиться...');
Application.Terminate;
end;
end;
Procedure DisConnect;
var Err: integer; nw: TNetResource;
begin
WNetCancelConnection2(PChar('Z'), CONNECT_UPDATE_PROFILE, true );
WNetCancelConnection2(PChar('\\192.168.3.6\Shara'), 0, true );
WNetCancelConnection2(PChar('\\192.168.3.6'), 0, true );
WNetCancelConnection2(PChar('\\192.168.3.6\IPC$'), 0, true );
end;
-
Назначить шаринг на пользователя, далее LogonUser + ImpersonateLoggedOnUser и работай только из своего процесса.
-
Вы дату поста смотрели ))))
-
Хе :)
-
Shrike тролит? ;)
-
Некропостер.
|