1

Я хочу дать программе права пользователя, выполняющего ее. Есть ли в Windows эквивалент Setuid (желательно Windows 7 или хотя бы Windows post-XP)?

Что если я хочу, чтобы программа имела больше прав, чем пользователь, выполняющий ее? (Например, я хочу, чтобы программа писала в Program File, тогда как я не хочу, чтобы пользователь мог это делать).

2 ответа2

3

Короткий ответ: вам не нужно ничего делать, чтобы программа запускалась с правами пользователя, который ее породил. Это стандарт для систем Windows.

Чтобы заставить программу работать как совершенно другой пользователь, как это делает SetUID, Microsoft предоставила команду Runas , которую можно использовать для вызова исполняемого файла с учетными данными разных пользователей.

Кроме того, в системах с поддержкой UAC, таких как Windows 7, вы можете удерживать Shift + щелчок правой кнопкой мыши на исполняемом файле, чтобы запустить программу под другим пользователем и при необходимости вызвать права администратора этого пользователя.


Обратите внимание, что ответ ниже относится к первоначальному вопросу о Sticky.

Чтобы прямо ответить на ваш вопрос, да и нет. Можно эмулировать функцию, но приложение совершенно другое.

Я думаю, что вы можете путать бит Sticky с другими специальными разрешениями Unix SetUID и SetGID, которые влияют на то, как приложения выполняются по отношению к пользователю, вызывающему процесс, а Sticky - нет.

Sticky не позволит ни одному пользователю, кроме root или Owner-user, удалить или переименовать файл, даже если у пользователя есть права на запись, и, таким образом, может редактировать файл.

В окне Advanced Permisions (из объектов Properties - вкладка> Безопасность -> Дополнительно), вы можете добавлять или редактировать разрешения для CREATOR OWNER "пользователь" и предоставить им права доступа Delete и Delete subfolders and files Затем для каждого другого объекта в ACL аннулируйте (но не запрещайте) те же разрешения.

Это позволит всем пользователям с правами записи создавать / редактировать любой файл, но только владелец файла может удалить его.

Обратите внимание, что у этого подхода есть тот же недостаток, что и у Sticky: любой пользователь с правами на редактирование может перезаписать файл с 0B, что концептуально аналогично удалению файла (многие утверждают, что это as-good-as ...).

удачи.

1

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


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

Вы можете запустить программу с другим пользователем (если вы, например, удерживаете SHIFT + right-click затем выберите Run as different user или просто Run as administrator), чтобы получить повышенные права другого пользователя, обладающего правами администратора на компьютере.

Использование команды CMD runas также позволяет добиться этого и может быть установлено в ярлыке для автоматизации входа в систему.

Документация здесь

Пример:

runas /user:.\localadmin /savecred notepad.exe

Параметр /savecred сообщает команде, что пароль пользователя уже сохранен на компьютере, и при запуске пароль не требуется. Сначала необходимо сохранить пароль в диспетчере учетных данных на панели управления.

Обратите внимание, что это также загрузит программу, используя профиль другого пользователя. Например, программа, которая сохранила настройки в AppData, загрузит их от пользователя, запустившего программу.

Однако службы Windows могут работать от имени другого пользователя. Это можно сделать в

Консоль Services.msc> выберите Сервис> Свойства> Войти

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