안녕하세요. 현재, jdk를 /opt/ 이하 단에 넣어두었는데,
제 계정과 root 계정의 .bashrc파일에 PATH를 수정했습니다.
root와 제 계정에서는 java를 하면 되는데, sudo java 를 하면
java 명령을 못찾겠다고 나오네요.
예전에 이와 같은 문제를 해결했었는데, 관련 내용을찾으려니…
안나오네요 ㅡㅠ 혹시 아시는 분 답변 좀 부탁드립니다.
안녕하세요. 현재, jdk를 /opt/ 이하 단에 넣어두었는데,
제 계정과 root 계정의 .bashrc파일에 PATH를 수정했습니다.
root와 제 계정에서는 java를 하면 되는데, sudo java 를 하면
java 명령을 못찾겠다고 나오네요.
예전에 이와 같은 문제를 해결했었는데, 관련 내용을찾으려니…
안나오네요 ㅡㅠ 혹시 아시는 분 답변 좀 부탁드립니다.
패스를 추가했는데도 그런 현상이 발생하나요?
.bash_profile 파일 안에 (없으면 만들어도 되고 /etc/profile 에 추가하셔도 됩니다)
export PATH="$PATH:/opt/java/bin" <-자바 바이너리 폴더 설정
[quote="yemharc":2sdhrlg9]패스를 추가했는데도 그런 현상이 발생하나요?
.bash_profile 파일 안에 (없으면 만들어도 되고 /etc/profile 에 추가하셔도 됩니다)
export PATH="$PATH:/opt/java/bin" <-자바 바이너리 폴더 설정[/quote:2sdhrlg9]
네 .bashrc 를 수정했구요.
.bash_profile과 /etc/profile을 수정해봤는데도(재부팅까지 했어요)
못찾겠다고 하네요. 왜 그런건지 -_-a
그럼 간단하게 해결해보죠.
java 실행파일을 /usr/bin으로 링크를 걸어버리세요 (…물론 실행은 슈퍼유저 권한으로…먼산)
[quote="yemharc":1o76od77]그럼 간단하게 해결해보죠.
java 실행파일을 /usr/bin으로 링크를 걸어버리세요 (…물론 실행은 슈퍼유저 권한으로…먼산)[/quote:1o76od77]
현재 그렇게 해서 일단, 대처를 했습니다.(…)
구글링해서 찾아봤더니, 다른 사람들도 그저 /usr/bin에 링크 거는것밖에… 해결은 못한 모양입니다
sudo 가 root 의 path 정보를 읽지 않는다는게 약간 이해가 안가네요;;
sudo 를 실행하는 계정의 PATH 에 추가 해보세요.
[quote="changmin811":3s1kljcj]sudo 를 실행하는 계정의 PATH 에 추가 해보세요.[/quote:3s1kljcj]
sudo를 실행하는 계정을 뭘 말씀하시는지 이해가 잘 안가네요^^;
제 계정과 root계정에는 PATH가 잡혀있습니다
우분투에 설치되어 있는 sudo는 --with-secure-path로 빌드되어 있습니다.
또한 기본 설정이 env_reset입니다. 그렇기 때문에 sudo를 실행하면 path가
항상 secure-path로 지정되어 있는 path로 초기화 됩니다. 보안상 위험성을
가질 수 있는 환경변수를 차단하기 위해서 환경변수를 초기화하는 것이
기본으로 설정되어 있습니다.
이를 바꾸려면 /etc/sudoers를 바꾸시거나 /etc/sudoers.d/에 설정파일을
만들어주시면 됩니다.
[code:150rikdh]sudo visudo[/code:150rikdh]로 sudoers파일을 편집해보면
[code:150rikdh]Defaults env_reset[/code:150rikdh]가 설정되어 있음을 확인하실 수 있습니다.
이를 !env_reset으로 고치시면 기본적으로 환경변수를 reset하지 않게 됩니다.
자세한 사항은 man 페이지를 참고 하세요.
java를 굳이 sudo 로 사용 해야 될 상황이 필요한지 궁금합니다.
데몬(서비스) 으로 돌려야 될것이 있다면 스크립트를 작성해서 돌리는게 좋을듯 하고,
아예 root 환경에서 뭔가 작업을 해야 된다면 sudo su - 잠깐 root로 들어갔다가 나오는게 괜찮을듯 합니다.
env_reset을 풀어버리는것도 좋은 선택 같진 않구요.
[quote="Leon":w9jyypra]
[code:w9jyypra]Defaults env_reset[/code:w9jyypra]가 설정되어 있음을 확인하실 수 있습니다.
이를 !env_reset으로 고치시면 기본적으로 환경변수를 reset하지 않게 됩니다.[/quote:w9jyypra]
아 그렇군요. 저는 sudo가 root의 환경변수를 가지고 쓰는줄 알았더니, 그게 아닌가 보군요.
[quote="changmin811":w9jyypra]java를 굳이 sudo 로 사용 해야 될 상황이 필요한지 궁금합니다.
데몬(서비스) 으로 돌려야 될것이 있다면 스크립트를 작성해서 돌리는게 좋을듯 하고,
아예 root 환경에서 뭔가 작업을 해야 된다면 sudo su - 잠깐 root로 들어갔다가 나오는게 괜찮을듯 합니다.
env_reset을 풀어버리는것도 좋은 선택 같진 않구요.[/quote:w9jyypra]
네 굳이 sudo 로 안해도 되는데, /opt/이하에 설치해둔 프로그램을 돌릴때, 가끔가다가 permission denied가 뜰때가 있더군요. 그래서 간단히 sudo 로 처리할 방법을 찾았던거구요.
root 환경에서 작업하는것도 나쁘지는 않은데, 항상 저만 쓰는게 아니고, 사람이 실수할 수도 있기 때문에… sudo 명령을 더 원했던 이유기도 합니다.
근데, env_reset을 풀어버리는게, 보안상 그렇게 안좋은 것인지는 잘모르겠습니다(root의 path를 따르는게 아닌건가요?)
언제나 슈퍼유저 권한 획득에 따른 위험은 존재합니다.
이건 좀 오래된 정보입니다만, sudo를 이용해서 루트 쉘을 얻어내는 방법이 존재했습니다.
[url:3cqh8q1b]https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/349075[/url:3cqh8q1b]
그리고 비단 이것뿐만 아니라도 퍼미션 설정에 따라 시스템과 밀접하게 돌아가는 프로그램들은 언제나
보안상의 구멍을 가지고 있다고 봐야하죠.
다만 개인적인 데스크탑 정로도 사용하는 경우에는 사실 크게 신경써야 할지는 조금 의문이긴 합니다.
sudo 이야기는 아니고 jdk 이야기입니다.
저도 처음엔 jdk를 sun에서 다운 받아 사용하다가 요즘은 귀찮아서
(다운 받는데 클릭을 여러번해야하고 다운로드 속도도 느리고 …)
apt로 설치해서사용하고 있습니다.(아래 사이트 JDK 설치 부분 참조)
http://source.android.com/source/initializing.html그리고 여러 버젼의 패키지를 사용할때 링크 편하게 바꿀 수 있게
우분투에서 툴을 제공해주고 있습니다(위 사이트 참조)
sudo update-alternatives --config java
sudo update-alternatives --config javac
update-java-alternatives -l
[quote="ihavnoth":291w3y2u]sudo 이야기는 아니고 jdk 이야기입니다.
저도 처음엔 jdk를 sun에서 다운 받아 사용하다가 요즘은 귀찮아서
(다운 받는데 클릭을 여러번해야하고 다운로드 속도도 느리고 …)
apt로 설치해서사용하고 있습니다.(아래 사이트 JDK 설치 부분 참조)
http://source.android.com/source/initializing.html그리고 여러 버젼의 패키지를 사용할때 링크 편하게 바꿀 수 있게
우분투에서 툴을 제공해주고 있습니다(위 사이트 참조)
sudo update-alternatives --config java
sudo update-alternatives --config javac
update-java-alternatives -l[/quote:291w3y2u]
이야 멋집니다~ ^^b
JDK5, 6를 바꿔 쓸수 있게 해놨군요. 좋은 정보 감사드립니다.