我想賦予程式執行它的使用者的權限。是否有相當於塞圖伊德在 Windows 上(最好是 Windows 7 或至少是 XP 之後的 Windows)?
如果我希望程式擁有比執行它的用戶更多的權限怎麼辦? (例如,我希望程式寫入程式文件,但我不希望使用者能夠這樣做)。
答案1
簡而言之,您不需要執行任何操作即可使程式以產生該程式的使用者的權限運行。這是 Windows 系統的標準。
為了強製程式以完全不同的使用者身分執行(如 SetUID 那樣),Microsoft 提供了魯納斯命令,您可以使用該命令在不同的使用者憑證下呼叫可執行檔。
此外,在 Windows 7 等啟用 UAC 的系統上,您可以按住 Shift + 右鍵單擊可執行文件,以在不同使用者下執行該程序,並在需要時呼叫該使用者的管理員權限。
請注意,下面的答案與 Sticky 的原始問題相關。
直接回答你的問題,是和否。人們可以模擬該功能,但應用程式完全不同。
我認為您可能會將 Sticky 位元與其他特殊的 unix 權限 SetUID 和 SetGID 混淆,這兩者都會影響應用程式相對於呼叫進程的使用者執行的方式,但 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 控制台 > 選擇服務 > 屬性 > 登入