터미널에 sudo 권한이 있고 경고 시간이 얼마나 남았는지 경고하는 방법은 무엇입니까?


10

터미널에서 sudo 권한이 있는지 어떻게 알 수 있습니까? (이러한 권한이 있다는 것을 알면 그냥 입력 sudo -k하면됩니다) 터미널에 너무 많은 정보를 추가하지 않고 간단하고 작은 경고 만하는 것이 좋습니다.

남은 시간이 불가능합니까?

또한 특정 터미널에 대한 권한을 가진 시간이 얼마나 있는지 확인하는 방법은 무엇입니까? (그래서 입력하는 대신 끝내도록 할 수 있습니다 sudo -k). Enter 키를 누를 때마다 남은 시간이 나타날 수 있다고 생각합니다.

편집 : 나는 더 많은 연구를하고 /var/lib/sudo/$USER/$nPts($ nPts가 현재 터미널 pts 인 경우 ps -p $$) sudo 명령이 실행될 때마다 타임 스탬프가 업데이트되며 sudo 명령을 사용하는 경우에만 액세스 할 수 있으므로 나머지 시간은 항상 하나를 구성 ...

추신 : 또는 것과, 내가 노력 alias sudo='sudo -k'하지만 모든 명령에 대한 암호를 입력 할 필요 싫어 ... 또한,이 alias sudos='sudo -k'(또는 alias ssudo='sudo -k'당신이 긴 줄, 바로 홈 버튼을 누르면 입력 's'를 입력하면, 좋은)를 사용하는 경우 작동 을 입력하여 하나의 명령 만 실행하려고합니다 sudos. 그러나 나는 내가 행동해야한다는 것을 알기 위해 정상적인 sudo 권한이 있는지 알지 못한다.


2
왜 투표가 중단 되었습니까? 비록 이것이 가장 명확한 글은 아니지만 제목 질문은 여전히 ​​나에게 유효한 질문처럼 보입니다 (그리고 그에 대한 유용한 질문)
DaimyoKirby

무엇을 명확히 할 수 있습니까? 내 편집하지 않은 초기 게시물은 3 배 더 크고 간결하게하기 위해 많이 정리했습니다. :)
Aquarius Power

나는 그것이 늦었다 고 생각합니다-나는 그것을 다시 읽었으며 더 이해가됩니다.
DaimyoKirby 12

답변:


5

[나는 아직도 더 나은 answear가 있는지 알고 싶습니다.]

작동하는 방법을 찾았으며 프롬프트는 한 줄로 유지됩니다.

당신의 끝에 ~/.bashrc이것을 추가하십시오 :

function FUNCsudoOn() { 
    if sudo -n uptime 2>/dev/null 1>/dev/null; then 
        echo -ne "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"; 
        #echo #without newline, the terminal seems to bugout with lines that are too big... discomment this if you find any problems...
    fi; 
}
function FUNCpromptCommand () { 
    FUNCsudoOn
}
export PROMPT_COMMAND=FUNCpromptCommand
#export PS1="\`FUNCsudoOn\`$PS1" #this also works, use instead of PROMPT_COMMAND

편집 : sudo -n uptimesudo 시간 초과를 업데이트 한다는 것을 알았 습니다. 따라서 Enter 키를 누를 때마다 sudo 시간이 업데이트됩니다 ... 남은 시간을 항상 구성된 시간으로 알기 때문에 기본값은 15 분입니다. .

가장 적합한 색상 형식을 찾으려면 다음--escapedchars같은 옵션으로 ScriptEchoColor 를 사용할 수 있습니다 .

echoc --escapedchars "@{nRlyo} SUDO " #that outputs below...
echo -e "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"

\E[5m에서처럼 깜박임 제거를 중지하려면\E[0m\E[93m\E[41m\E[1m SUDO \E[0m


4

이 작업을 수행 sudo bash 하지 마십시오.

"정상 sudo 권한을 갖기"위해해야 할 일은 sudo명령 앞에 입력하지 않는 것 입니다.

/usr/bin/id무엇을하는지 알 수있는 좋은 방법 sudo입니다. 예를 들면 다음과 같습니다.

id -a        # returns my UID info
sudo id -a   # returns root's info
id -a        # me again
sudo id -a   # root again

sudo매뉴얼 페이지 "의 sudoers (5)에서 재정의하지 않는 한의 sudoers 정책은 15 분 동안 자격 증명을 캐시합니다"말한다. 이것은 기본적으로 sudo명령을 실행하고 sudo암호를 입력하면 두 번째 명령을 실행하기 전에 14.9 분 동안 기다렸다가 다시 암호를 입력 할 필요가 없다는 의미입니다. 15.1 분을 기다리면 비밀번호를 다시 입력해야합니다. sudo -k15 분 타이머를 즉시 만료시킵니다. 내가 볼 수있는 유일한 용도 sudo -k는 신뢰할 수없는 사람에게 잠금 해제 된 터미널을 제공하려는 경우입니다 UID 0.


" sudo명령 앞에 입력하지 마십시오"라고 말했습니다 . 그러나 방화벽 규칙을 확인하려면 iptables -L입력하지 않으면 작동하지 않습니다 sudo iptables -L. 요점은 sudo를 어떻게 실제로 피할 수 있습니까?
물병 자리 힘

또한 남은 시간에 대해 터미널에서 Enter 키를 누를 때마다 얼마나 많은 시간이 남아 있는지 알고 싶습니다. 에 대해 sudo -k, 나는 크래커가 내 컴퓨터에 원격으로 액세스하려고 시도하거나 (어쨌든 할 수 있는지 정말로 모르겠습니다 ...), 또는 잠시 동안 내 컴퓨터를 잠그지 않고 열린 채로 두는 경우에 대해 걱정하고 있습니다 ... 진짜 요점은 : 나는 이런 식으로하고 싶다! sudo -k나중에 필요한만큼 여러 번 입력 하고 암호를 다시 입력하지 않아도되므로, 이렇게하면 기분이 좋아집니다! :)
물병 자리 힘

"Sudo를 사용하지 마십시오"? Sudo는 루트 암호를 배포하거나 바이너리를 setuid로 만들거나를 사용하는 솔루션이었습니다 /bin/su. 폐기 하시겠습니까? "원격으로 내 컴퓨터에 액세스 ..."라고 가정 /proc/YourPID/fd/{0,1,2}합니다. 아니요. 컴퓨터에 원격으로 액세스 한 경우 Bad Guy는 UID 0을 쉽게 사용할 수 있습니다.이 수준의 우려에 앞서 Linux-foo를 늘려야합니다.
waltinator

당신이해야처럼 죄송합니다 호언 장담을 위해, 그것은 소리 alias k=/usr/bin/sudo -k의 교체 sudo에 전화를 랩하는 별칭 또는 bash는 기능 명령 /usr/bin/sudo과 함께 /usr/bin/touch $HOME/tmp/$$/sudotime시간 ($ HOME / tmp를 / $ - 마지막으로, 및 $ {{시간 (지금)를 인쇄 할 무언가를 추가 Bash 프롬프트에서 $ / sudotime))). 사소한 것이 아니지만 기분이 좋아지면 가십시오.
waltinator

흥미 롭습니다. 또한 시도가 발생했을 때 또는 더 나은 네트워크 통신을 종료 할 때도 기록합니다. 그러나 sudo임의의 단어에 대한 별칭으로 숨겨져도 여전히 /usr/bin/sudo대신 입력 할 수 sudo있으며 sudo처럼 작동합니다 : (. 어쨌든 나는 아이디어를 좋아합니다 .. 나는 진짜를 바꾸면 /usr/bin/sudo그것이 아닌 다른 것을 깨뜨릴 지 궁금합니다. 그것을 사용하는 모든 스크립트 .. 내가 그렇게해도 스크립트를 읽어서 sudo가 어떻게 될지 추측 할 수 있습니다.
Aquarius Power
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.