Существует ли эквивалент Setuid для Windows?

Существует ли эквивалент Setuid для Windows?

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

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

решение1

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

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

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


Обратите внимание, что ответ ниже связан с исходным вопросом о Sticky.

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

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

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

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

введите описание изображения здесь

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

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

удачи.

решение2

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


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

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

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

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

Пример:

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

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

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

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

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

Связанный контент