문제

사용자는 SSH를 통해 *** 닉스 기반 기계에 원격으로 액세스 할 것이며 가장 빠른 현재 사용중인 사용자 이름이 /etc /sudoers 파일에 nopasswd 액세스가 있는지 확인하는 방법.

가능한 옵션 :

  • /etc /sudoers의 사용자 이름에 대한 grep, parse 명령 프롬프트 출력이 nopasswd가 있는지 여부를 결정하는 경우, 라인을 제거한 다음 새 권한을 추가하십시오.
  • 파일에 허가 문자열을 추가하십시오 (나쁜 아이디어).
  • 보호 된 파일로 Sudo를 시도하고 비밀번호로 나에게 유발되는지 확인하십시오.

나는 더 쉬운 것을 기대하고 있지만 내 Google-FU는 아무런 답을 얻지 못했습니다.

도움이 되었습니까?

해결책

만약에 sudo -v 성공, 사용자는 사용할 권한이 있습니다 sudo; 실패하면 사용자는 사용할 권한이 없습니다. sudo.

# su user -c 'setsid sudo -v </dev/null'; echo $?
[sudo] password for user:
1
# su root -c 'setsid sudo -v </dev/null'; echo $?
0

없이 setsid, sudo STDIN/STDOUT/STDERR이 모두 리디렉션 된 경우에도 비밀번호를 대화식으로 요청하려고합니다. 통제 터미널이 없다면 필요하지 않지만 아마도 다른 것이 필요할 것입니다. su 같은 사용자 권한을 변경합니다 포크+setReuid.

다른 팁

당신이 실제로 "the가 필요하다면 가장 빠른 길 ", 나는 당신이 많은 동시 요청을 처리 할 웹 서버를 구축하고 있다고 생각합니다.

이것은 또 다른 문제 - 동시성 문제를 제기합니다. 일반적으로 많은 프로세스 읽기 및 동일한 중요한 파일에 대한 쓰기는 재앙을위한 레시피입니다.

작업을 처리하기 위해 작은 독립 프로세스를 구축하십시오. 클라이언트로부터 요청을 받고 최소한의 인터페이스가 있어야하며 /etc/sudoer 파일. 같은 것 has_NOPASSWD_access() 그리고 set_NOPASSWD_access(). 파일을 작성해야 할 때만 파일을 읽어야하므로 요청을 제공하는 데 필요한 I/O 시간을 크게 줄입니다.

장점 -

  • FAST : 파일 만 읽는 데 I/O가 필요하지 않습니다. 초기 읽기 이후 버퍼에 저장되므로 파일을 읽습니다.
  • 스레드 SAFE : 하나의 서버 만 Sudoer 파일을 작성하고 읽습니다.
  • 단일 선택 원칙 -이 프로세스 만 Sudoer 파일을 처리합니다
  • 우아함 (나는 희망) :-)

단점 --- 주석에 나열하면 추가하겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top