Мы устанавливаем цифровую мультимедийную систему на радиостанции колледжа, где я работаю. Мы пытаемся предоставить программистам (читай; ди-джеям, а не кодерам) доступ к музыке, не позволяя им копировать ее на свои флеш-накопители или передавать через Интернет.
Мы работаем в системах Windows (Windows XP для клиентских машин и Windows Server 2008 для медиа-сервера). Моя идея такая.
Это кажется идеальным решением, но есть одна ошибка. Если приложение для воспроизведения или машина выйдет из строя, программист - единственный человек, который сможет запустить его снова в разумные сроки (мы являемся FM-радиостанцией мощностью 15 кВт, поэтому простои - это большое дело). Отсюда моя дилемма ...
Как я могу дать программисту возможность запускать наше приложение воспроизведения от имени пользователя, которому он не знает пароль?
sudo.bat
@echo off
runas /user:Administrator /savecred %1
на удивление, он больше не запрашивает пароль даже после перезагрузки или сбоя питания
... не позволяя им копировать какие-либо из них на свои флэш-накопители или передавать их через Интернет
Отключите на этих машинах USB-накопители, доступ в Интернет и т. Д.
Я могу придумать несколько способов обойти эту проблему. Первым (и более сложным) было бы написать небольшую службу Windows, запускающую Traktor. Таким образом, ProgramUser может запросить у службы новый экземпляр Traktor, и служба работает как MediaUser, поэтому Traktor запускается как MediaUser.
Другая возможность, и гораздо более простая, - настроить ярлык запуска, который запускает Traktor при каждом входе в систему - ярлыки Windows позволяют вам установить учетные данные соответствующего пользователя в свойствах ярлыка. Если компьютер когда-либо выйдет из строя, программистам просто нужно войти в систему, и у них будет новый Traktor, работающий как MediaUser!
Надеюсь, одно из этих решений сработает для вас!
Вы можете создать программу, которая запускает процесс MediaUser для ди-джея. Это можно сделать так, чтобы он запускался как ProgramUser.
Пароль / учетные данные для MediaUser необходимо будет скомпилировать в программу, чтобы она знала пароль, но конечный пользователь никогда не должен знать об этом. У них была бы просто кнопка или программа с надписью «Перезапустить тректор», и она могла бы делать всю работу.
Вот пример процесса на C #. Единственное изменение - это жесткое кодирование учетных данных, чтобы ди-джей их не видел.
Взгляните на Steel RunAs. Я использовал его для нескольких сценариев за свою карьеру системного администратора, когда никакие другие альтернативы не были подходящими. Это определенно удобно. Он создает исполняемый файл, в котором шифрует сохраненные учетные данные. Связь
В идеале вы можете модифицировать Traktor для работы в качестве службы с отдельным графическим интерфейсом. Это дает вам наилучшие параметры безопасности - Traktor будет тогда работать как пользователь с правильными учетными данными, и никому не нужно знать, что они собой представляют, или нужно вводить пароль для его перезапуска. Фактически, вы можете заставить его перезапуститься, если он выйдет из строя в оснастке служб.
Ваш графический интерфейс для управления Traktor затем записывается как собственное приложение, которое пользователь запускает от своего имени, он отправляет сообщения службе Traktor (через TCP / IP, RPC, общую память или любую другую форму IPC), чтобы заставить ее делать то, что пользователь хочет. Если вы заставили графический интерфейс работать с использованием межсетевого протокола (например, TCP / IP), то пользователь может войти на свою рабочую станцию, и служба traktor может работать на более надежном сервере, возможно, заблокированном для предотвращения «случайных» перезагрузок. Если у вас все хорошо, вы можете вместо этого написать веб-приложение для управления Traktor (то есть веб-сервер будет отправлять сообщения в службу), и ваш пользователь сможет запускать станцию из дома!
Сервис traktor будет запущен с сервера без необходимости входа в систему.