'2012/10'에 해당되는 글 2건

  1. 2012.10.16 눈을 아프게 하는 color 변경하기.
  2. 2012.10.10 sudo 상태로 redirection 시키기

회사 인트라넷을 쓰려면 싫어도 windows를 써야 한다.  그러다보니, 개발을 할 때는 server를 쓰거나 Virtualbox 등을 사용하여야 하는데, 출장이 워낙 잦은지라 Virtualbox를 사용한다.

Virtualbox를 사용하면서 SecureCRT같은 프로그램으로 SSH 접속을 하여서 사용하는데, 이전까지 흑백(...) color를 사용할 때는 몰랐는데, 총천연(...) color를 사용하면서 ls에서 나타나는 blue color 때문에 눈이 너무 아프다... 뿐만 아니라 prompt에 현재 디렉토리를 표시하는 blue color도... (눈이 아프다기 보다는 잘 안보인다?)

어쨌거나.  구글링을 해보니 dircolors라는 유틸이 존재한다.  Man pages를 보니 -p 옵션으로 pattern을 보기 쉽게 뽑아내고 쉘 타입에 따라 -b나 -c로 해당 쉘에 맞는 형태로 변경시켜준다는 것을 알았다.

$ dircolors -p > ./dir.color; vi ./dir.color

DIR은 01;34 라고 되어있는데, 세미콜론 앞쪽은 Attribute, 뒤쪽은 color를 나타낸다.  주석을 참고하면, 현재 DIR은 진한 blue로 되어있는 것이다.  이게 색깔이 너무 눈이 아프니까, 여러개 바꿔보다가 cyan이 가장 쓸만한 것 같다.  Cyan의 code는 36이지만, symbolic link가 01:36을 사용하고 있으므로, 진하지 않은 cyan으로 00:36으로 변경하고

$ dircolors -b ./dir.color > ~/.profile; source ~/.profile

$ dircolors -b ./dir.color >> ~/.profile; source ~/.profile

좋아.  눈이 안아파... ㅋㅋ 하지만 prompt의 현재 디렉토리 표시란도 색깔을 바꾸고 싶다.

$ vi ~/.profile

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00;36m\] \w \$\[\033[00m\] '

$ source ~/.profile

아.. 이제 눈이 안아파...

----------------------- 2013년 3월 5일 수정 -----------------------------------

dircolors의 결과를 .profile에다가 바로 때려버리면 기존의 data가 날라갈 수도 있으므로... attach를 하도록 하자... -.- 2번째 항목 수정함!

Posted by 강군님
TAG dircolor

댓글을 달아 주세요

간혹, 접근권한이 없는 디렉토리에 접근을 해야 할 때 애용하는 것이 sudo 명령어이다.

보통의 경우 문제가 생기지 않지만, 특정 machine에서 shell의 redirection 기능을 사용하려고 한다면 문제가 발생한다.  특정 machine이라고 한 것은, fedora의 경우 문제가 발생하고 있지 않기 때문이다.  (아마도 fedora에서의 permission 설정은, sudoers에 등록되어있으면 sudo 명령어가 없이도 접근 권한을 획득할 수 있어서가 아닌 것으로 생각된다).

예를 들어, root로만 접근 가능한 /root/test 라는 디렉토리에 echo와 redirection을 이용하여 파일을 만들어야 된다고 가정해보자.

# echo test > /root/test/temp.txt

이것은 당연히 permission fail이 발생하고, 이것을 해결해보고자 아래와 같이 하더라도 마찬가지 결과가 발생한다.

# sudo echo test > /root/test/temp.txt

쉘에서의 redirection이라는 것은 child process를 생성하고 file을 open하는 것인데, sudo는 parent process에서 실행된 것이므로 child process와는 무관한 내용이 되기 때문이다.  따라서, 문제를 해결하기 위해서는 3개의 명령 (sudo, echo와 redirection으로 인한 file open)이 하나의 process에서 실행되든가, 그게 아니면 실제로 접근제한이 걸린 디렉토리에 write를 할 때만이라도 sudo command가 들어가는 것이다.

첫번째 방법은 다음과 같이 실행할 수 있다.

# sudo bash -c 'echo test > /root/test/temp.txt'

두번째 방법은 다음과 같이 표현할 수 있다.

# echo test | sudo tee /root/test/temp.txt

Posted by 강군님

댓글을 달아 주세요