sudo로 스크립트를 실행하고 비밀번호를 묻지 않게 하려면 어떻게 해야 하나요?

sudo로 스크립트를 실행하고 비밀번호를 묻지 않게 하려면 어떻게 해야 하나요?

다음 스크립트를 실행하고 싶습니다.

#!/bin/bash

if grep -qs 'MinecraftServer' /media/kiancross/MinecraftServer/MinecraftServer; then
    echo "Disk already mounted, server boot will continue"
else
     mount /dev/sda1 /media/kiancross/MinecraftServer
fi

sudo mount /dev/sda1 /media/kiancross/MinecraftServer
cd /media/kiancross/MinecraftServer/MinecraftServer/1.6.4
screen -d -m -S MinecraftServer ./start.sh
screen -r MinecraftServer   

내 문제는 마운트하려면 sudo가 필요하고 관리자가 아닌 사람이 이 스크립트를 실행할 수 있기를 원한다는 것입니다. 스크립트를 실행하면 mount: only root can do that관리자 비밀번호를 묻습니다.

나는 당신에게 가라고 제안한 다른 포럼의 지침을 따르고 sudo visudo 다음 코드 줄을 추가했습니다 myusername ALL = (root) NOPASSWD: /path/to/my/program. 이것을 시도한 후 재부팅한 후에도 여전히 비밀번호를 묻는 메시지가 나타납니다. 또한 root이 기사에 설명된 대로 파일 소유자를 변경해 보았습니다 .

이렇게 한 후에도 비밀번호 없이는 실행할 수 없습니다.

저는 우분투 14.04를 실행하고 있습니다.

답변1

이를 수행하는 방법에는 두 가지가 있습니다.

1: sudo를 사용하세요

하나는 모든 사람이 sudo를 사용하여 디스크를 마운트할 수 있도록 허용하는 것입니다. sudo 줄은 다음과 같아야 합니다.

ALL ALL = NOPASSWD: mount /dev/sda1 /media/kiancross/MinecraftServer

첫 번째 ALL은 "모든 사용자"를 의미하고, 두 번째는 "이 sudoers 파일이 설치된 모든 서버에서"를 의미합니다. 또한 디렉터리뿐 아니라 실제 명령에 대한 전체 경로도 필요합니다.

이렇게 하면 다음과 같이 명령이 mount항상 with 를 사용하여 실행되도록 스크립트도 변경해야 합니다 sudo.

 sudo mount /dev/sda1 /media/kiancross/MinecraftServer

2: 설치 옵션 사용

또 다른 접근 방식은 모든 사용자가 마운트할 수 있도록 /dev/sda1의 마운트 옵션을 변경하는 것입니다. 이렇게 하면 sudo를 전혀 사용할 필요가 없습니다. 이렇게 하려면 해당 디스크의 줄이 다음과 같도록 /etc/fstab을 변경합니다.

/dev/sda1 /media/kiancross/MinecraftServer YOURFSTYPE users,exec

YOURFSTYPE물론 디스크의 파일 시스템 유형(아마도 ext4)을 기록해야 한다고 나와 있습니다 .

대안은 users,exec일반 사용자가 파일 시스템을 마운트하고 그 시스템의 프로그램을 실행할 수 있음을 의미합니다. 일반적으로 파일 시스템이 루트가 아닌 다른 사람에 의해 마운트되면 해당 파일이 실행되지 않으므로 이를 지정해야 합니다.

관련 정보