우리 팀의 대부분의 사람들은 sudo 액세스 권한을 가지고 있습니다. 그러나 나는 여전히 sudo su를 실행하기 전에 확인하기를 원합니다. 사용자가 Y를 누르면 그를 루트로 허용하고, 그렇지 않으면 자신의 홈 디렉터리로 되돌립니다. 아래 코드를 시도했지만 사용자가 다른 키를 누르면 여전히 루트로 로그인할 수 있습니다. 도와주세요
!/bin/bash
echo -e "You are entering into high security env."
echo -e "If You are still not sure about the purpose, please logout of root user immediately."
echo -e "Contact admin immediately in case of any doubt."
sleep 1
echo -e "Press Y if you still want to enter as a root user"
read ch
case $ch in
'Y'|'y' )
echo -e "Risk is all yours. PT team welcome you here."
;;
*)
bash /root/.bash_logout
exit
;;
esac
답변1
분명히 너무 많은 사용자가 sudo 액세스 권한을 갖고 있다는 점은 우려됩니다.
바퀴를 재발명하는 것보다 더 표준적인 접근 방식을 권장하고 루트는 .profile
실행 시에만 실행되기 때문에 sudo su -
sudo의 별칭은 덜 편리할 뿐만 아니라 미리 인쇄되어 있기 때문입니다.
이 /etc/sudoers
구성에는 각 사용자가 처음 사용할 때 받는 기본 경고를 영구적으로 유지하는 옵션이 있습니다.
귀하는 귀하의 로컬 시스템 관리자로부터 일반적인 강의를 들으셨을 것으로 생각됩니다. 일반적으로 다음 세 가지로 귀결됩니다.
#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.
루트 비밀번호:
항상 열어두려면 /etc/sudoers.d/privacy
다음 내용이 포함된 파일을 생성하면 됩니다.
Defaults lecture = always
현재 사용자로 시도하려면 먼저 로그아웃해야 합니다.
기본 메시지는 sudo 소스 코드에 있으며, 이를 변경하려면 sudo를 다시 컴파일해야 합니다. 이 작업을 수행하지 않는 것이 좋습니다. 고집할 경우 apt-src에서 패키지를 컴파일한 다음 고정/고정해야 합니다. 왜냐하면 무작위로 업데이트되지 않고 수동으로만 업데이트되기 때문입니다.
귀하의 요청에 대한 보완책으로 사람들의 행동을 기록하기 시작할 것을 강력히 권장합니다. 특히 사람들이 무제한으로 sudo
접근할 수 있는 경우에는 더욱 그렇습니다.
다음에 추가하는 경우 /etc/bash.bashrc
:
readonly PROMPT_COMMAND='history -a >(logger -t "commandlog $USER[$PWD] $SSH_CONNECTION")'
그러면 모든 사용자 명령이 시스템 로그에 기록됩니다.
잠긴 중앙 syslog 서버로 로그가 전달되도록 구성하겠습니다 syslog
. 그러면 해커 공격이나 악의적인 sysadmin이 발생하더라도 증거를 조작할 수 없습니다.
답변2
스크립트는 어디에서 호출됩니까? 루트의 경우 .bash_profile 또는 .bashrc?
나는 이 줄이 사용자를 로그아웃시킬 것이라고 믿지 않습니다:
bash /root/.bash_logout
.bash_logout 파일의 명령을 실행하는 새로운 bash 프로세스를 생성합니다.
다음 줄을 시도해 볼 수 있습니다.
logout
업데이트: 또는 시도해 보세요:
exit
쉘 시작 파일이 경고 스크립트를 실행 중이라고 가정하면 "exit"는 쉘이 아닌 경고 스크립트만 종료합니다.
"exit"를 실행하는 bash 코드가 별도의 경고 스크립트가 아닌 .bashrc 파일에 있는 경우 셸을 종료해야 합니다.