아파치 사용자가 external USB를 마운트 할수 없습니다

라즈베리파이에 자바스크립트와 파이썬으로 개발중입니다.
프로그램 실행후에 usb로 데이타를 다운로드 받는 프로그램인데 pi사용자로는 usb를 꼽아서 마운트가 가능한데 아파치 사용자(www-data)의 경우는 마운트가 되지 않습니다.

혹시 어떤 설정들을 사용해서 마운트를 해야하는지 알려주시면 너무 감사하겠습니다.

마운트 명령어를 직접 치셨나요?
pi사용자로는 어떻게 마운트를 하셨는지 여기다 자세히 기술할 수 있나요?

왜 재질문을 하는가하면요… 선생께서 질문하신 내용이 논리적으로 이해가 쉽지않은까닭입니다.
(요컨데 선생께서 알고 있는 마운트와 제가 알고 있는 마운트가 같은지 확인이 필요합니다)

마운트라는 행위에 대하여 선생께서 하신 작업을 세세히 미주알고주알 적어주시면 좀 더 질문을 이해하는데 도움이 될거 같아요~

[크롬북에서 적었어요~]

제가 설명을 잘 못해서 죄송합니다.
제 프로그램 환경은 라즈베리파이에 앞단의 GUI는 HTML, 자바스크립트를 사용하고 라즈베리파이의 H/W에 관련 한 부분은 파이썬(CGI)을 사용하고 있습니다.

파이썬으로 직접 실행(python test.py)을 할 경우에는
sudo mount -v -o rw uid=pi,gid=pi /dev/sda1 /mnt/usb 이렇게 했습니다. 실제로 uid와 gid는 getpass.getuser()에서 받은 사용자 정보를 넣었습니다.
이 경우에는 정상적으로 마운트가 되어서 마운트 된 usb의 내용을 보고 또 해당 usb에 디렉토리를 만들거나 파일을 복사하는게 가능했습니다.

그런데 GUI에서 할 경우에 사용자가 pi가 아니라 www-data가 되는데 이 경우에는
sudo mount -v -o rw uid=pi,gid=pi /dev/sda1 /mnt/usb 의 같은 명령어를 써도 uid, gid를 getpass.getuser()에서 받아온 (www-data)를 써도 usb자체가 마운트가 되지 않습니다.

프로그램 구현상 자동마운트 기능을 사용하면 안되기 때문에 fstab에 아래와 같은 라인을 추가해서 사용하고 있습니다.

/dev/sda1 /mnt/usb vfat rw,sync,noauto,exec,user,umask=000 0 0

설명이 충분히 되었는지 모르겠습니다.

sudo 권한의 벽에 막힌거 같아보입니다.

/etc/group 파일을 열어보시면… sudo 항목이 보일겁니다…

그곳에다 www-data 가 추가되지 않았다면 추가해보심을 추천해봅니다…

[우분투 18.04 파여폭스 나비에서 적었어유~~~]

아파치 사용자(www-data) 에 sudo 권한을 부여하는 행위는 마운트 동작에만 한정시켜주시길 바래요.

뭐랄까 삽으로 처리해야 할 일에 포크레인을 투입한거 같은 느낌이 계속 드네유 ;;;

sudo 사용자의 명령문을 제한시키는 방법에 관한 참고문헌 함께 남깁니다:
===> https://superuser.com/questions/767415/limit-user-to-execute-selective-commands-linux/767419

꾸벅~

[우분투 18.04 파여폭스 나비에서 적었어유~~~]

그리고 이건 노파심에 드리는 말씀인디요;;;

/etc 파일들을 편집 작업 할때엔…
반드시 수정 전 백업 파일 만들어두시길 바래요.
반드시 수정 전 백업 파일 만들어두시길 바래요.
반드시 수정 전 백업 파일 만들어두시길 바래요.

황병희 드림

[우분투 18.04 파여폭스 나비에서 적었어요~~~]

다른 sudo 명령(sudo reboot - ip 수정 후 재부팅 등 사용해야해서)을 사용해야해서 이미 sudo 권한은 www-data사용자에게 주었습니다.
권한의 문제는 아닌것 같습니다.

으따 시골이라 모짜리 하고 돌아왔씁니다 ;;;

보통 아파치 웹서버를 띄울때 보안을 위하야 www-data 나 nobody 등등의 제 3의 계정을 만듭니다.
시스템을 보호하기 위하여 취하는 정책인데요…

선생께서 이미 www-data 에 sudo 의 전권(= “Super User 가 할 수 있는 모든 권한”)을 위임하셨다니…
그럼 이제부턴 보안은 그냥 없는셈치고 나가봅니다…

두가지 방향이 있씁니다…

pi 사용자로써는 마운트를 성공하셨다니까… 아파치 웹서버를 pi 사용자로 구동시킵니다. 요게 첫번째 방법.
가능한한 첫번째 방법을 쓰시길 당부드립니다. 더 쉬우니깐요…
다행스럽게도 아파치 웹서버 환경변수에 해당 항목이 있더이다…
/etc/apache2/envvars 파일을 살펴보세요…

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

위 환경변수가 이미 준비되어 있기에 일이 한결 쉬워졌씁니다.

두번째는 www-data 의 쉘 환경을 pi 사용자와 거의 비슷하게 만들어줍니다.
이것도 /etc/passwd /etc/group 등등의 파일을 수동으로 만져야만 합니다…
수동 편집이 어렵다면 www-data 사용자를 지우고 www-data 를 새로이 생성합니다.
새로이 생성할때,
시스템의 보통 사용자처럼 bash 도 할당하고 비밀번호 등등도 부여하고 홈디렉토리도 만들고 ssh 로도 접속가능하게끔요
그리고 sudo 그룹에도 추가시켜줍니다.
(이미 맨위에서 선생께선 보안은 포기한 상태이기에 이렇게 나갈 수 있는거구용~)

위의 두가지 방법다 실패하시면,
(문제해결을 위하야…)
가장 마지막엔 선생의 파이썬 코드를 다 까셔야 합니다.
그리고 아파치 웹서버 설정 파일도요…

[크롬북에서 적었어요~]
[우분투 18.04 파여폭스 나비에서 내용을 보강했씁니다]