2010-07-06 3 views
6

이것은 게임에 "명령을 입력하고 sudo를 앞에 두거나 손가락이 찰깍 소리가 난다는 것을 기억하십시오"라는 스트레스를 받고 있습니다. 내가 예를 들어, 입력하는 것을 잊지 때 나의 리눅스 시스템을 구성하거나 쉘에 어떻게 든 가능한 경우자동으로 UAC와 같은 gksudo를 실행합니다.

궁금 "sudo apt-get install emacs"는 내가 잘못한 것을 말하지 않고 gksudo가 시작되어 내 신임장을 인정하고 움직일 수있게 해줍니다. UAC가 창문에서하는 것처럼.

인터넷 검색이 .. 나에게 도움을 아직하지 않은

그래서이 가능할까요? 내가 뭐 놓친 거 없니? 아니면 사각 서클을 요구합니까?

편집 2010 년 7 월 25 일 : 당신의 interrest에 대한 감사합니다 여러분. 불행하게도, Daenyth와 bmargulies의 답변과 설명은 내가이 질문을 제출하기 전에 솔루션을 google-up 할 수 없기 때문에 내가 예상했거나 두려워했던 것입니다. 나는 좋은 사람이 언젠가 이것을위한 효과적인 해결책을 제공하기를 바랍니다.

BR, 나는이 정말 (응용 프로그램이 관리자 권한을 필요로 자동 결정) 일반적인 방식으로 작동합니다 생각하지 않습니다 기독교

+0

일부 프로그램은 종료 코드로'errno'를 반환합니다.이 경우'EACCESS'로 종료하는 프로그램은 후보가됩니다. 그렇지 않으면 glibc를'EACCESS'에 대한 시스템 호출 결과를 확인하고 권한 상승을 제공하는 버전으로 대체하고자 할 수 있습니다. –

+0

기록을 위해 Windows에는 여기에 Linux가 있어야한다는 기능이 없습니다. Windows의 경우 ERROR_ACCESS_DENIED로 종료되고 자동으로 다시 실행되지 않습니다. Windows에서만 발생하며 올바른 권한이없는 경우 응용 프로그램을 다시 시작해야한다는 규칙이 있습니다. 데비안에 대한 적성은 예를 들어 이것도합니다. 또한 Windows 바이너리에는 쉘을 통해 실행될 때 권한 상승을 요구하는 플래그가 있지만 명령 행의 경우는 다시 다루지 않습니다. –

답변

0

현재 리눅스 소프트웨어 스택이 주어진다면 이것을 할 방법이 없습니다. 또한, MS has a patent on this behavior - 당신은 항상 루트로 명령을 실행하고 싶지만 이미 루트 수있는 경우 present a user interface identifying an account having a right to permit a task in response to the task being prohibited based on a user's current account not having that right.

+0

IANAL,하지만 팝업이 'su'로 계정을 미리 선택하지 않으면 특허로 덮어 쓰지 않는 것 같습니다. 이 특허는 또한 '무제한의 권리'를 가진 계좌를 제외하고 '루트'를 의미하는 것으로 보입니다. –

+0

어쨌든 선행 기술로 인해 유효하지 않을 수도 있지만, 알고있을 가치가 있습니다. – Daenyth

0

. 그러나 당신은 모든 응용 프로그램에 대해 다음과 같이 별칭을 만들 수 있습니다 : 당신이 지금 apt-get install firefox를 입력하면

alias alias apt-get='gksudo apt-get' 

는 그놈 관리자 암호를 요청합니다. 당신은 당신은 같은 쉘 스크립트를 사용할 수 ~./bashrc

+0

죄송합니다. 그러나 이것은 내 필요에 맞지 않았습니다. 내가 찾고있는 것은 "리눅스가 언제 물어볼지를 결정한다"라는 버튼을 어딘가에두면 응용 프로그램을 켜거나 끌 수 있습니다. 제안 해 주셔서 감사합니다. –

0

의 명령을 저장할 수 있습니다 다음

#!/bin/bash 
[email protected] 
if [ $? -ne 0 ]; then 
    sudo [email protected] # or "gksudo [email protected]" 
fi 

이 명령이 비와 함께 돌아왔다 경우 sudo는 접두사 인수에 주어진 명령을 실행 제로 리턴 코드 (즉, 실패한 경우). "SCRIPT_NAME apt-get install emacs"와 같이 사용하십시오. (당신이 do_sudo로 저장 한 경우) 당신은 당신의 $ PATH에 어딘가에 저장이 같은 별칭으로 설정할 수 있습니다

alias apt-get='do_sudo apt-get' 

편집 : synaptic 같은 프로그램에 대한 하지 작업을 수행은 루트가 아닌 사용자에 대해서는 작동하지만 권한을 줄입니다. 그러나 응용 프로그램이 루트 권한없이 호출 될 경우 (예 : apt-get)이 작동합니다.

+1

이것은 매우 약해서 잘못되었거나 잘못되었을 가능성이 있습니다 – Daenyth

1

당신은 당신이 명령 - 찾을 수없는 패키지와 유사한 preexec 후크 기능으로 원하는 것을 할 수 있습니다.

3

Linux는 이것을 허용하지 않습니다. 모든 프로그램이 대화 상자를 시작할 수 있고 UAC가 커널에있는 Windows와는 달리, Linux 프로그램은 반드시 GUI를 지원할 필요는 없으며 sudo는 커널에서 이와 같은 의미가 아닙니다. 프로그램은 권한 상승 권한으로 전화를 걸 수 없습니다 (권한이 시작되고 의도적으로 종료 된 경우 제외). sudo는 권한을 확인하는 setuid 권한으로 별도의 실행 파일입니다. 보기에 좋으면 쉘이 명령 행을 실행하도록 만듭니다. 이것은 뒤집어 질 수 없습니다.

다른 글에서 제안한 것처럼 '열거 된 쉘 게임'을 통해 열거 된 명령 목록에 대해 sudo를 실행할 수 있지만 그만하면됩니다.

+0

'exec gksudo'에 특별한 권한이 필요 없습니다. –

+1

참. gksudo의 fork/exec를 통해 프로그램을 다시 시작할 수 있습니다. 재발급 상태로 다시 읽어 들일 수 있도록 상태를 작성하는 데 흥미로운 보안 문제가있을 수 있습니다. – bmargulies

0

, 당신은 주위에 작은 bash는 스크립트를 래핑하여이 문제를 해결 할 수 있습니다

#!/bin/bash 
if [ $EUID = 0 ]; then 
    "[email protected]" 
else 
    gksudo "[email protected]" 
fi 
당신이 alwaysroot.bash 같은이 뭔가를 호출하고 PATH의 오른쪽 자리에 배치하면

, 당신은이 같은 다른 프로그램을 호출 할 수 있습니다

alwaysroot.bash otherprogram -arguments... 

을 그것도 argumen를 처리 공백이있는 ts.

관련 문제