라즈베리파이에 자바스크립트와 파이썬으로 개발중입니다.
프로그램 실행후에 usb로 데이타를 다운로드 받는 프로그램인데 pi사용자로는 usb를 꼽아서 마운트가 가능한데 아파치 사용자(www-data)의 경우는 마운트가 되지 않습니다.
혹시 어떤 설정들을 사용해서 마운트를 해야하는지 알려주시면 너무 감사하겠습니다.
라즈베리파이에 자바스크립트와 파이썬으로 개발중입니다.
프로그램 실행후에 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 파여폭스 나비에서 내용을 보강했씁니다]