사용자의 파일에 있는 민감한 정보를 숨기지만 Linux의 쉘 스크립트에서는 숨기지 않습니다.

사용자의 파일에 있는 민감한 정보를 숨기지만 Linux의 쉘 스크립트에서는 숨기지 않습니다.

사용자에게 도구가 제공되고 유일한 운영 사용자에게 기본 스크립트 실행이 허용되어야 하는 시나리오를 생각해 보십시오. 이제 도구는 일부 파일을 사용하여 민감한 정보를 저장합니다. 내가 원하는 것은 스크립트가 파일의 데이터에 액세스할 수 있어야 하지만 사용자는 액세스할 수 없어야 한다는 것입니다. 그가 가져야 하는 유일한 액세스 권한은 스크립트를 실행하는 것입니다.

간단한 경우, 도구에 main.sh 파일 2개가 포함되어 있다고 가정해 보겠습니다. 스크립트 사용자는 실행만 할 수 있고 읽을 수도 없고 info_file에 일부 민감한 정보가 포함되어 있으므로 사용자가 아닌 main.sh만 사용해야 합니다. .

이 도구는 다른 컴퓨터의 다른 사용자에게 제공될 수 있습니다. Linux에서 이러한 시나리오를 처리하는 다양한 방법은 무엇입니까?

답변1

SUID를 사용하는 한 가지 방법.

  1. 그룹 및 다른 사용자에게만 쉘 스크립트 및 정보 파일에 대한 실행 권한을 부여하십시오.

  2. 쉘 스크립트를 호출하는 래퍼 C 프로그램을 작성하십시오.

  3. C 실행 파일에 SUID 비트를 설정합니다. (chmod u+s 파일)

    최종 사용자는 C 실행 파일을 호출합니다.

답변2

쉬운 옵션은 보조 파일을 암호화/해독하는 것입니다. 그렇게 하는 방법은 여기에서 살펴봅니다.https://serverfault.com/questions/489140/what-is-a-good-solution-to-encrypt-some-files-in-unix

스크립트 자체가 실제로 컴파일된 코드가 아닌 한, 스크립트를 읽으면 키를 쉽게 검색하고 사용된 암호화 방법을 이해할 수 있으며, 심지어 디컴파일될 수 있으므로 무적은 아닙니다. 컴파일된 언어 코드라면 대부분의 언어에는 암호화/복호화 스크립트를 호출하는 방법이 있고 암호화된 버전을 저장하면 됩니다.

답변3

민감한 정보를 보호하는 유일한 방법은 다음과 같습니다.아니요사용자가 소유하게 하세요어느개인용 컴퓨터나 중앙 서버에서 직접 액세스하세요.

예를 들어:

  • 사용하도록 제공되는 실행 전용(즉, 읽기 액세스 없음) 래퍼 스크립트를 작성합니다 sudo. 이는 루트로 실행할 필요가 없으며 루트가 아닌 전용 사용자로 충분합니다.
  • 사용자가 자신의 컴퓨터에서 실행할 수 있도록 스크립트 복사본을 제공하지 마십시오. 대신 서버에서(예: 를 통해 ssh servername sudo myscript.sh) 실행하도록 요청하세요. 서버가 액세스 제어를 유지할 수 있는 유일한 장소이기 때문입니다.

관련 정보