2

В моей системе Windows 10 Алиса - разработчик / администратор, а Боб - обычный пользователь. Алиса написала набор программ для использования Бобом (.bat файлы и / или ярлыки, которые запускают .py файлы в python.exe). Когда Боб дважды щелкает эти программы, они должны запускаться с использованием разрешений файловой системы Алисы (или какого-либо другого повышенного пользователя), при этом Бобу не нужно знать пароль этого другого пользователя или действительно делать что-то особенное, кроме первоначального двойного щелчка для запуска. Но в то же время Бобу не следует разрешать запускать что - либо еще с измененными разрешениями.

Вот минимальный пример программы, которую я хочу запустить, назовем ее WhiteHat.bat:

:: This is WhiteHat.bat
@echo User %1 is running this program as %USERNAME%
@pause

Все мои исследования пока указывают на runas . Например, Алиса подготавливает следующий файл в той же папке, что и WhiteHat.bat:

::This is RunWhiteHatAsAlice.bat
@runas /noprofile /user:%COMPUTERNAME%\Alice /savecred  "%~dp0WhiteHat.bat \"%USERNAME%\""

В первый раз, когда Боб дважды щелкает RunWhiteHatAsAlice.bat , Алиса вводит свой пароль. Впоследствии Боб может дважды щелкнуть по нему без присутствия Алисы, и он увидит:

User Bob is running this program as Alice

Все идет нормально. Но проблема в том, что теперь у Боба, похоже, есть разрешение на все, что угодно Алисе Если он пишет следующие два файла в своем собственном домашнем каталоге:

:: This is BlackHat.bat
@echo User %1 is DELETING ALL FILES as %USERNAME%
@pause

а также

:: This is RunBlackHatAsAlice.bat
@runas /noprofile /user:%COMPUTERNAME%\Alice /savecred  "%~dp0BlackHat.bat \"%USERNAME%\""

затем он, кажется, может использовать сохраненные учетные данные (которые Алиса предназначала для использования только для запуска WhiteHat.bat) для запуска любого произвольного кода в BlackHat.bat .

Я думаю, поэтому, что runas не способ делать то, что я хочу? Если только я не пропустил ту часть документации, в которой объясняется, как ограничить область действия пользователя с сохраненными учетными данными.

Каков соответствующий способ сделать это? Системы POSIXoid будут просто использовать setuid - есть ли эквивалент?

Пояснение: настоящее приложение "белая шляпа", конечно, может вызвать изменения в файлах файловой системы (скажем, оно записывает в TheData.txt). Я не хочу просто давать Бобу разрешение на TheData.txt . Я хочу, чтобы он мог изменить это, конечно, но только в соответствии с определенной логикой, которая запрограммирована в пакетных /python-файлах. Я не хочу, чтобы он мог открыть это в блокноте и запутать это произвольно.

1 ответ1

1

Я думаю, поэтому, что руны не способ делать то, что я хочу?

Это было бы правильно. Если вы сохраните учетные данные для конкретного пользователя, Windows не будет запрашивать эти учетные данные, поскольку вы указали, что они должны быть сохранены.

Каков подходящий способ сделать это?

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .