사용자가 아닌 스크립트만 파일에 액세스할 수 있도록 할 수 있나요?

사용자가 아닌 스크립트만 파일에 액세스할 수 있도록 할 수 있나요?

시스템에 대한 액세스가 제한된 사용자가 있습니다(즉, 그는 sudoer가 아닙니다).단발.

나(시스템 관리자)가 신뢰하고 문제 없이 루트로 실행하는 스크립트나 바이너리가 있습니다 get-todays-passphrase.sh. 이 스크립트의 작업은 에 있는 "개인"(Bob 또는 루트가 아닌 사용자/그룹 소유) 파일에서 데이터를 읽고 /srv/daily-passphrases파일의 특정 줄(오늘 날짜에 해당하는 줄)만 출력하는 것입니다.

Bob과 같은 사용자아니요파일에 기재되어 있어도 내일의 비밀번호를 알 수 있습니다. 따라서 파일은 /srv/daily-passphrasesUnix 권한으로 보호되므로 Bob과 같은 루트가 아닌 사용자는아니요파일에 대한 직접 액세스를 허용합니다. 그러나 get-todays-passphrase.sh"필터링된" 데이터를 반환하는 스크립트는 항상 실행할 수 있습니다.


결론적으로(긴 이야기 짧게버전):

  1. Bob은 보호된 파일을 읽을 수 없습니다.
  2. 이 스크립트는 보호된 파일을 읽을 수 있습니다.
  3. Bob은 항상 파일을 읽을 수 있는 스크립트를 실행할 수 있습니다.

Unix 파일 권한 내에서 이 작업을 수행할 수 있습니까? 아니면 Bob이 스크립트를 시작하면 해당 스크립트는 항상 Bob과 동일한 권한으로 실행됩니까?

답변1

이것은 실제로 매우 일반적이고 매우 간단합니다. sudo사용자가 호출할 수 있는 특정 애플리케이션을 제한할 수 있습니다. 즉, 루트 권한을 모두 부여할 필요도 없고 sudo권한도 부여할 수 없습니다.특정 명령 실행. 이것이 바로 여러분이 원하는 것이며 사용자가 SSH를 통해 Git 리포지토리를 푸시하도록 허용하는 것과 같은 작업에서는 매우 일반적인 관행입니다.

이렇게 하려면 /etc/sudoers다음과 같은 줄을 추가하기만 하면 됩니다.

bob ALL=(root) NOPASSWD: /path/to/command/you/trust

(이 NOPASSWD:부분은 필수는 아니지만, 이 상황에서 흔히 사용되는 부분입니다.) 이때 sudo를 통해 호출 bob할 수 있지만 /path/to/command/you/trust, 그렇지 않으면 호출할 수 없습니다.

즉, 누군가에게 루트 액세스 권한을 부여하는 것(여기서 수행하는 작업)이 정확히 원하는 것이 아닐 수도 있습니다. 스크립트에 결함이 있는 경우 상자가 루팅될 위험이 있다는 점은 주목할 가치가 있습니다. 이러한 이유로, 예를 들어 특정 파일을 소유할 사용자를 구체적으로 생성한 specialuser다음 chown해당 사용자에게 파일을 제공하고 해당 사용자가 되도록 /etc/sudoers만드는 것을 선호할 수 있습니다. bob이 경우 추가하는 줄은 다음 sudoers과 같습니다.

bob ALL=(specialuser) NOPASSWD: /path/to/command/you/trust

답변2

머리말:

댓글에서 지적하고 이유를 설명했듯이이 답변Linux 커널은 무시합니다.사용자 ID 설정/부팅 설정스크립트를 처리할 때의 비트입니다. 벤자민의 대답을 반복하지는 않겠습니다.스크립트그리고실행 가능내 대답을 올바르게 해주세요.


짧은 대답: 사용설정

자세한 단계:

  1. 새 그룹 만들기(예: readpass)
  2. 이 그룹을 비밀번호 파일의 소유자로 만들기sudo chown :readpass thatfile
  3. 파일이 속한 그룹만 읽을 수 있도록 설정sudo chmod g=r,o= thatfile
  4. 실행 파일을 만드세요시드패스 읽기:sudo chmod g+s thatfile

이렇게 하면 실행 파일이 속한 그룹의 권한으로 실행 파일이 실행되어 파일을 읽을 수 있게 됩니다.

관련 정보