프로그램을 실행하는 사용자의 권한을 프로그램에 부여하고 싶습니다. 에 해당하는 것이 있습니까?세트이드Windows(바람직하게는 Windows 7 또는 최소한 Windows XP 이후)에서?
프로그램이 이를 실행하는 사용자보다 더 많은 권한을 가지도록 하려면 어떻게 해야 합니까? (예를 들어, 나는 프로그램이 프로그램 파일에 쓰기를 원하지만 사용자는 쓰기를 원하지 않습니다).
답변1
간단히 대답하자면, 프로그램을 생성한 사용자의 권한으로 프로그램을 실행하기 위해 아무것도 할 필요가 없습니다. 이는 Windows 시스템의 표준입니다.
SetUID처럼 프로그램이 완전히 다른 사용자로 실행되도록 하기 위해 Microsoft는 다음을 제공했습니다.루나스다른 사용자 자격 증명으로 실행 파일을 호출하는 데 사용할 수 있는 명령입니다.
또한 Windows 7과 같은 UAC 지원 시스템에서는 실행 파일을 Shift + 마우스 오른쪽 버튼으로 클릭하여 다른 사용자로 프로그램을 실행하고 필요한 경우 해당 사용자의 관리자 권한을 호출할 수 있습니다.
아래 답변은 Sticky에 대한 원래 질문과 관련이 있습니다.
귀하의 질문에 직접 대답하려면 예와 아니오를 선택하십시오. 기능을 에뮬레이트할 수 있지만 응용 프로그램은 완전히 다릅니다.
내 생각에 Sticky 비트를 다른 특수 유닉스 권한인 SetUID 및 SetGID와 혼동하고 계신 것 같습니다. 둘 다 프로세스를 호출하는 사용자와 관련하여 응용 프로그램이 실행되는 방식에 영향을 주지만 Sticky는 그렇지 않습니다.
Sticky는 사용자에게 쓰기 권한이 있더라도 루트 또는 소유자 사용자 이외의 어떤 사용자도 파일을 삭제하거나 이름을 바꾸는 것을 허용하지 않으므로 파일을 편집할 수 있습니다.
고급 권한 창(개체 속성 -> 보안 탭 -> 고급)에서 추가 또는 편집할 수 있습니다.권한"사용자" 에 대해 CREATOR OWNER
권한을 부여 Delete
하고 Delete subfolders and files
. 그런 다음 ACL의 다른 모든 엔터티에 대해 동일한 권한을 취소합니다(거부하지는 않음).
이렇게 하면 쓰기 권한이 있는 모든 사용자가 파일을 생성/편집할 수 있지만 파일 소유자만 삭제할 수 있습니다.
이 접근 방식에는 Sticky와 동일한 결함이 있습니다. 즉, 편집 권한이 있는 모든 사용자가 파일을 0B로 덮어쓸 수 있다는 점에 유의하세요. 이는 개념적으로 파일을 삭제하는 것과 유사합니다(많은 사람들이 그것이 좋은 것이라고 주장합니다...).
행운을 빌어요.
답변2
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 콘솔 > 서비스 선택 > 속성 > 로그온