В Windows XP: как создать пользователя с правами на чтение только одного определенного каталога? - PullRequest
1 голос
/ 02 января 2009

Позвольте мне сначала заявить: я знаю, что любой пользователь, который хочет запустить программу (или даже войти в систему), должен иметь доступ (возможно, по крайней мере) к системным каталогам Windows и общим библиотекам в %ProgramFiles%, но Я хотел бы иметь возможность получить доступ к Skype, например, запустив его с непривилегированным пользователем и убедившись, что он не может получить доступ к любым ненужным файлам.

Я боюсь, что единственный способ сделать это - определить все каталоги gazillion, в которых я храню файлы, к которым у меня нет доступа этого пользователя, а затем создать новую группу пользователей, которая может получить доступ к этим каталогам или запустить Skype и Azureus в виртуальной машине.

Есть ли лучший способ?

Ответы [ 4 ]

3 голосов
/ 02 января 2009

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

Реальная проблема заключается в том, что маркер программы (внутренний объект безопасности, который отслеживает, какие идентификаторы безопасности есть у запущенного процесса) будет содержать группы «Все» и «Прошедшие проверку», которые также имеют доступ для чтения ко многим вещам. Невозможно создать учетную запись без этих групп. Вы можете удалить доступ, который есть у групп «Все» и «Аутентифицированные пользователи», к большинству всего, но было бы много работы, чтобы отследить их.

Я бы сказал, что создание стандартной учетной записи пользователя или гостевого доступа для ненадежных программ будет достаточно безопасным. Чтобы поддерживать самообновления и хранить связанные файлы в одном месте, я предлагаю вам установить эти программы непосредственно в профиле учетной записи пользователя, под которой они будут работать, например. C:\Documents and Settings\skype\Program Files\Skype

Если вы хотите стать действительно модным, вы можете использовать токен с ограничениями, чтобы либо запретить только группам «Все», «Прошедшие проверку» и т. Д. (Поэтому они не могут предоставить какой-либо доступ), либо создать список «Ограниченный SID». Это будет трудно реализовать, потому что есть глобальные объекты, к которым программы могут получить доступ, к которым имеет доступ группа «Все», что обычно является безопасным выбором.

См. Функция CreateRestrictedToken .

Существует также программа командной строки с открытым исходным кодом, для которой я создал программу для создания ограниченных токенов и объектов заданий на лету: UlimitNT

1 голос
/ 02 января 2009

Может быть sudown - это решение. Это sudo-подобный (как известно из Linux) подход к работе в качестве непривилегированного пользователя, но с возможностью перехода к административной учетной записи (с паролем) при необходимости.

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

0 голосов
/ 03 января 2009

просто используйте acl apis (образцы в msdn)

0 голосов
/ 02 января 2009

Помимо использования виртуальной машины вы можете изучить использование песочницы. Посмотрите на Песочницу Фокс в качестве примера.

...