링크, bash 스크립트 및 SUID를 사용하여 특정 기능에 대한 제한된 액세스를 제공하려고 합니다. SUID 스크립트가 루트 액세스로 실행되지 않습니다.

링크, bash 스크립트 및 SUID를 사용하여 특정 기능에 대한 제한된 액세스를 제공하려고 합니다. SUID 스크립트가 루트 액세스로 실행되지 않습니다.

편집: 이고정 비트가 활성화되었습니다. 스크립트가 루트 파일에 쓸 수 없습니다.비슷한 문제인 것 같습니다

편집하다:루트가 아닌 사용자로 실행하기 위해 쉘 스크립트에서 SetUID를 어떻게 사용할 수 있습니까?도 매우 유사합니다.

스크립트가 있는데 이를 read.sh라고 부르겠습니다. 파일이 있으니 비밀이라고 부르겠습니다.

# cd /home/normie
# echo "some stuff" > secret
# echo "#!/bin/bash" > read.sh
# echo "cat secret" >> read.sh
# chmod 600 secret
# chmod 4755 read.sh
# su normie
$ ./read.sh
<<Error about not having access to secret>>

내가 뭐 놓친 거 없니? SUID 비트로 인해 스크립트가 소유자로 실행된다고 생각했나요? 다음을 실행할 때

# echo "touch newfile" > sumfile.sh
# chmod 4755 sumfile.sh
# su normie
$ ./sumfile.sh
$ ls -alh
<<newfile shows as owned by root>>

여기서 무슨 일이 일어나고 있으며, 내가 원하는 대로 작동하게 하려면 어떻게 해야 합니까? 내가 원하는 방식은 일반 사용자가 전체 루트 액세스 권한으로 특정 스크립트를 실행하기를 원합니다. (나는 그것이 suid 비트가 한 일이라고 생각했습니다)

답변1

sudo 설치apt install sudo

관련 사용자를 일부 그룹의 일부로 만들기groupadd group && usermod -g group user

/etc/sudoers에 다음을 추가합니다.%group (ALL)=(root:root) NOPASSWD:/path/to/script.sh

.bashrc에 별칭 추가alias ALIAS='sudo /path/to/script.sh'" >> ~user/.bashrc

이제 그룹의 모든 구성원은 문제의 스크립트를 루트로 실행할 수 있습니다.

뻔뻔하게 훔친 답변루트가 아닌 사용자로 실행하기 위해 쉘 스크립트에서 SetUID를 어떻게 사용할 수 있습니까?(user9517)

관련 정보