글래스 피시 응용 프로그램 서버는 응용 프로그램 서버를 관리하고 또한 시작을 중지하고 나는이 스크립트를 실행 루트 사용자를 제한하고자하는 스크립트를 제공합니다. 그 이유는 일부 주요 개발자가 서버를 권한이없는 사용자로 관리하는 것을 잊고 응용 프로그램 서버를 루트 사용자로 다시 시작하면 응용 프로그램 서버가 루트 사용자 [*]에 의해 실행되어야하기 때문입니다.
루트 액세스를 피하는 옵션이 아니며 개발자는 로컬 컴퓨터에서이를 수행하는 데 익숙하기 때문에 잊어 버립니다. asadmin
스크립트가 권한이없는 사용자로 실행되도록 변경하거나 스크립트가 루트로 실행될 때마다 오류 메시지를 표시하도록 선택하고 싶습니다 .
배쉬 쉘이 사용됩니다.
[*] : 파일에 대한 권한을 수정하려고했지만 루트가 소유하고 chmod 한 많은 파일을 추적했지만 응용 프로그램에 이상한 오류가 발생하여 루트로 다시 실행해야합니다.
답변
다른 답변과 비슷하지만 원하는 방향으로.
if [[ $EUID -eq 0 ]]; then
echo "This script must NOT be run as root" 1>&2
exit 1
fi
또는 sudo
스크립트 내에서 -u
플래그를 사용하여 권한이없는 사용자로 강제 실행 하여 실행할 사용자를 지정할 수 있습니다. Glassfish를 사용하지는 않지만 여기에는 가상 예제 의사 스크립트가 있습니다.
#!/bin/bash
if [ $1 == "start" ]; then
sudo -u nobody /usr/bin/glassfish
fi
잘만되면 당신은 아이디어를 얻는다. 스크립트의 모양이나 권한이없는 사용자의 이름을 잘 모르겠습니다.
답변
@Tshepang은 올바른 아이디어를 가지고 있습니다. 어느 것이 가장 이식 가능한지 모르겠지만 사용자가 루트인지 여부를 감지하는 다른 방법이 있습니다.
id -u
$UID
또는 동일한 매개 변수를 사용하여 다른 사용자로 강제 실행하도록 할 수 있습니다.
if [[ "$USER" != appuser ]]
then
exec sudo -u appuser "$0" "$@"
fi