다음 스크립트를 실행하고 싶습니다.
#!/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
일반 사용자가 파일 시스템을 마운트하고 그 시스템의 프로그램을 실행할 수 있음을 의미합니다. 일반적으로 파일 시스템이 루트가 아닌 다른 사람에 의해 마운트되면 해당 파일이 실행되지 않으므로 이를 지정해야 합니다.