특정 명령에 비밀번호를 추가하는 방법

특정 명령에 비밀번호를 추가하는 방법

을 사용하지 않고 이를 수행하는 방법을 검색해 보았습니다 sudo.

실제로 보안 기능을 사용하지 않고도 보안 기능을 추가할 수 있나요 sudo?

예를 들어:

이 명령을 사용할 때마다 xxd. 명령을 실행하려면 추가 입력이 필요합니다. 그렇지 않으면 전혀 작동하지 않습니다.

내가 한 일은 xxd문자열을 가비지 16진수로 변환하는 명령을 사용하는 것이었습니다. 따라서 기본적으로 원래 문자열로 되돌아갑니다. 이제 제가 달성하고 싶은 것은 xxd -r비밀번호를 아는 소수의 사람만이 실행할 수 있다는 점을 제외하고는 누구도 사용할 수 없도록 하여 16진수 값이 원래 문자열로 돌아가지 않도록 하는 것입니다.

답변1

원하는 것을 달성하기 위해 다음을 제안할 수 있습니다.

  1. 각 프로그램에 대한 사용자를 만듭니다. 귀하의 예에서는 사용자 uxxd(그룹 uxxd)를 생성한다고 가정합니다.
  2. 원하는 비밀번호를 입력하세요(예: 123456).
  3. 사용자 uxxd에게만 이 프로그램에 대한 실행 권한을 부여합니다.chown uxxd:uxxd xxd chmod 700 xxd
  4. 더 나은 보안을 위해 사용자 uxxd에서 로그인 셸을 제거할 수도 있습니다. (시스템에 따라 이를 /bin/nologin다음과 같이 바꿀 수 있습니다.)

이제 프로그램을 시작하려면 다음이 필요합니다.

su uxxd -c xxd

프로그램이 프로그램을 시작한 사용자를 위해 파일을 생성하려는 경우 해당 사용자는 아마도 uxxd 그룹에 있어야 합니다. 이는 시스템의 기본 umask에 따라 다르며 변경될 수 있습니다.

답변2

답변이 너무 늦어서 죄송합니다.

비밀번호를 지원하지 않기 때문에 xxd 대신 다른 명령을 사용했습니다.

암호화할 때마다 비밀번호를 입력하는 openssl 명령을 사용합니다.

openssl enc -aes-128-cbc -a -salt -pass pass:test123

이제 암호를 해독해야 합니다. 다음을 사용해야 합니다.

openssl enc -aes-128-cbc -a -d -salt -pass pass:test123

모두의 도움에 감사드립니다.

답변3

이것은 안전하지 않습니다

에 추가할 수 있습니다./etc/profile

xxd()
{
if [ $1 = "123456" ]; then
xxd ${@:2}
else
echo "sorry command not available"
fi
}

/usr/bin/xxd()
{
if [ $1 = "123456" ]; then
xxd ${@:2}
else
echo "sorry command not available"
fi
}

xxd 123456 -r ...로 명령을 실행할 수 있습니다.

그러나 복사할 수 없도록 바이너리에 대한 읽기 액세스를 제한해야 합니다.

모든 사용자는 /etc/profile을 읽고 비밀번호를 볼 수도 있습니다. 읽기 액세스 없이 비밀번호를 xxdcmd.sh 스크립트에 넣고 어떻게든 실행할 수 있습니다.

어쨌든, 좋은 해결책은 사용자/그룹을 갖는 것에 대한 제안이라고 생각하지만, 다른 방법을 찾는 것도 흥미로울 것 같습니다.

건배!

추신: 이는 궁극적으로 달성하려는 목표에 대한 좋은 솔루션이 될 것입니다.

gpg -c <filename>
gpg -d <filename.gpg>

관련 정보