사용자가 입력한 명령을 "인증"하는 방법이 있습니까?

사용자가 입력한 명령을 "인증"하는 방법이 있습니까?

사용자가 입력한 명령이 적용되기 전에 이를 승인하는 방법이 있습니까?

예를 들어, 사용자가 명령을 입력하면 cp file1 file2명령이 실행되지 않으며 , 사용자가 입력하는 명령을 "인증"하려면 루트/루트에 해당하는 사용자가 로그인해야 합니다.

이를 수행할 수 있는 도구/솔루션이 있습니까?

답변1

사용을 승인하려는 바이너리를 운영자에게 경고하고 요청된 작업을 저장하며 승인될 때까지 지연하는 래퍼로 교체할 수 있습니다. 그냥 실행을 제거그리고 읽어보세요(관련 사용자에 대해) 관련 프로그램의 권한을 부여하고 해당 사용자 경로 어딘가에 동일한 이름의 래퍼를 배치합니다. (해당 인터프리터에게 프로그램을 부여하여 프로그램 실행을 방지하려면 읽기 권한을 제거해야 합니다.)

그러나 이 세부 규정의 전반적인 아이디어는 무엇인지 묻고 싶을 수도 있습니다.보안SE. 나에게 그것은 해결되는 것보다 더 많은 문제를 일으키는 것 같습니다(어떤 문제라도 해결된다면). 제 생각에는 망치로 사과를 쳐서 오믈렛을 요리하려고 한다는 것입니다(예: 잘못된 도구를 잘못 사용하는 경우). 무언가를 성취하기 위한 장소).

답변2

거의 무의미하므로 명령을 승인하는 기본 메커니즘이 없습니다. 핵심 Unix 권한 메커니즘은 데이터에 대한 액세스를 보호하는 것입니다. 데이터를 읽을 수 있다면 원하는 대로 무엇이든 할 수 있습니다. 예를 들어, "읽기는 허용하지만 복사는 허용하지 않는다"(복사는 한 곳에서는 읽고 다른 곳에서는 쓰는 것)는 불가능합니다. 그런데 왜 시도할까요?

사용자가 파일에 액세스하는 것을 원하지 않으면 파일에 대한 액세스 권한을 부여하지 마세요.

때때로 사용자에게 파일에 대한 제어된 액세스 권한이 필요한 경우 이메일을 사용할 수 있습니다. "안녕하세요 Bob. wibble어떤 이유에서인지 이 파일에 액세스해야 합니다. 파일을 보내주세요."

답변3

실행 전용으로 설정 sudo하고물었다루트 사용자에게 보내는 명령

이것은 좋은 시작일 수 있습니다(루트로 로그인한 경우에만 작동함).

ps. 아직 테스트해보지 않아서 오류가 있을 수 있습니다.

function asksudo {
  # for users
  write root "asksudo from $(whoami):"
  write root "\"$(whoami)\" \"$(PWD)\" && $*"
}
execsudo {
  # to authorize root executes this with yes/no and the last line of the message
  if [ "$1" = "no" ]
    then
      write $2 "Your command '${*:3}' has been denied" && exit 0
      exit 1 # fails to send the message
  fi
  [[ "$1" != "yes" ]] && echo "invalid decision" && exit 1;

  cd $3 && ${*:4}
  write $2 "Your command '${*:3}' has been executed"
}

관련 정보