manywaypark's Blog
개발, 검색, 함수

[UTIL] scponly - 설치

tips & tricks/Linux/Unix 2008. 9. 21. 23:44 by manywaypark
환경 : ubuntu(64bit), x86-84
ssh 프로토콜만을 사용해서 sftp만 독립적(?)으로 실행하는, 안전한 scponly를 설치하는 방법을 설명한다.[각주:1]
ubuntu package를 설치하는 것만으로는 좀 미진한 부분이 있어 추가 설정에 관해서 알아본다. 
  1. root 권한으로 로그인후에,
  2. scponly package를 설치한다
    # apt-get install scponly
  3. 설정 스크립트 압축 풀기
    # cd /usr/share/doc/scponly/setup_chroot/
    # gzip -d setup_chroot.sh.gz
  4. 설정 스크립트(setup_chroot.sh) 편집 (64bit 시스템만 해당)
    다음과 비슷한 라인을 찾아서,
    LDSO_LIST="/lib/ld.so /libexec/ld-elf.so /libexec/ld-elf.so.1 /usr/libexec/ld.so /lib/ld-linux.so.2 /usr/libexec/ld-elf.so.1"
    다음과 같이 변경(ld-linux-x86-64.so.2 추가)
    LDSO_LIST="/lib/ld.so /libexec/ld-elf.so /libexec/ld-elf.so.1 /usr/libexec/ld.so /lib64/ld-linux-x86-64.so.2 /lib/ld-linux.so.2 /usr/libexec/ld-elf.so.1"
  5. 설정 스크립트 실행
    # sh ./setup_chroot.sh
    username, user_home_dir,  user_working_dir(요건 user_home_dir 밑에 위치하게 설정) 입력.
  6. /etc/shells에 scponlyc 추가
    which scponlyc >> /etc/shells
  7. SUID-Bit 설정
    chmod u+s `which scponlyc`
  8. dev 만들기
    # cd /home/username
    # mkdir dev
    # cd dev
    # mknod -m 666 null c 1 3
  9. sftp로 접속해서 파일 upload, download 테스트하기. 잘 안되면 다음 명령어로 debug message 확인해보기
    echo 2 /etc/scponly/debuglevel

참고: 

happy hackin'
  1. 참고 사이트 정리에 불과하다. :) 우분투 x86-64에 설치할 때를 기준으로 좀 편리하게 정리했다. [본문으로]
파일이 삼천만개면 너무 많은 건가? --;

파일들의 개수가 많아지면, 참기 힘들 정도로 속도가 저하된다.
apt-get 등으로 정상적인 시스템 관리(package update 등)하기도 너무 느려서 짜증날 정도다.

관리의 편의를 위해 많은 삽질 끝에 자동으로 대량의 데이터 파일들을 .deb 파일로 만들어서 간편하게 설치하는 방식을 현재 진행중인 프로젝트에 적용했으나, 속도 문제로 다른 방법을 찾아야할 듯하다.

예:
# dpkg -r some-pkg
(Reading database ... 36070717 files and directories currently installed.)
Removing some-pkg ...

위에 보이는 패키지 하나 삭제하는 데에 몇십분은 걸리는 듯하다. Orz.

happy hackin'




[TIP] 내지는 잡담

tips & tricks/Linux/Unix 2008. 6. 21. 04:23 by manywaypark
집에서 좀 볼일이 있어서 회사 서버로 접속을 했다가 Ubuntu 서버들을 간만에 upgrade하려했더니 업데이트 서버에서 파일이 없다는 식의 에러가 나면서 안됐다.
살펴보니 edgy였다. http://(kr|us).archive.ubuntu.com/ubuntu/dists/ 에 직접 브라우저로 들어가서 살펴보니 egdy는 아예 디렉토리도 없다. Orz.
가만히 생각해보니 모든 서버를 Dapper (LTS)로 했다가, 한놈만 갑자기 죽는 현상이 있어서 egdy로 올렸던 것이 떠올랐다.

표준적인(?) 방법으로,
/etc/apt/sources.list에서 edgy를 몽땅 feisty로 바꾸고
apt-get update
apt-get upgrade
apt-get dist-upgrade
를 했는데,

다음과 같은 무시무시한 경고 메시지가 나왔다.
W: mdadm: unchecked configuration file: /etc/mdadm/mdadm.conf
W: mdadm: please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz .
W: mdadm: no arrays defined in configuration file.
W: mdadm: falling back to emergency procedure in initramfs.

'이거 잘못되면 주말에 회사 나가게 생겼구나. 3T짜리 레이드가 인식이 안될 수도 있겠다'

구글링을 해서 자료를 찾고, reboot을 하는 중에 계속 ping을 날리는데 ping
"Destination Host Unreachable"에서 "64 bytes from boxname (xxx.xxx.xxx.xxx)"으로 바뀔때 어찌나 기쁘던지...

해결법(google and copy and paste):
sudo apt-get remove mdadm
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf # Press space to "uncheck" each item on the mdadm and mdadm-radi lines)
sudo apt-get remove grub
sudo apt-get install grub
sudo update-grub
sudo dpkg --configure -a

참고:https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/98911
cygwin 업그레이드 후에 이전에 본적 없는 눈에 거슬리는 이상한 메시지가 명령을 내릴 때 마다 출력되었다.
윈도우에서 fstab를 찾는 것은 좀 이상하지 않은가?
Huh?  No /etc/fstab file?  Using default root and cygdrive prefix...

mount
로 현재 마운트 된것들을 살펴보고 그것들을 %CYGWIN_HOME%/etc/fstab에 저장해주면 된다.

다음은 내 경우다. (c와 d가 hdd이므로 마운트하고, e는 SD card 이므로 안 써준다.)

C:\>mount
Huh?  No /etc/fstab file?  Using default root and cygdrive prefix...
c:\cygwin on / type ntfs (binmode,system)
c: on /cygdrive/c type ntfs (binmode,noumount,user)
d: on /cygdrive/d type ntfs (binmode,noumount,user)
e: on /cygdrive/e type vfat (binmode,noumount,user)


/etc/fstab :
c:/cygwin / system binary 0 0
c:/cygwin/bin /usr/bin system binary 0 0
c:/cygwin/lib /usr/lib system binary 0 0
# c: /c system binary 0 0
# d: /d system binary 0 0

왜 이렇게 불편하게 되었는지는 모르겠다.
(맨 밑에 두줄은 대충 되는 것같기도 하나, PATH 설정이 좀 꼬여서 특정 application(make 등)에서
문제가 생기는 듯하다. 빼자.)
참고: http://article.gmane.org/gmane.os.cygwin/97894

happy hackin'

 

업무중 간단히 쓸 일이 있어 만든 것인데 기억을 위해 글을 남긴다.
파일을 찾고, 경로에서 문자열을 추출하고 여러줄을 한줄로 만드는 일을 하는 것인데, 나말고는 별로 쓸 사람이 없을 것같기도 하다.
  1. 숫자와 dash로 된 txt 파일들을 찾고(find) 경로 중의 임의의 문자(A or B)를 추출(grep)한다.
    $ find . -name '*.txt' | egrep -o 'A|B|[0-9-]*.txt$'
    (다 좋은데, 하나의 match가 한 줄에 표시되어서 여러줄로 나온다.)
  2. 한줄에 표시하고 싶다 (sed).
    $ find . -name '*.txt' | egrep -o 'A|B|[0-9-]*.txt$' | sed '{
    N
    s/\n//
    }'
난 아직 sed에는 익숙치 않은 듯하다. sed 때문에 검색 + 삽질했다.

sed 예제 많은 페이지: http://www.grymoire.com/Unix/Sed.html

happy hackin'

[TIP] putty가 갑자기 멈출 때...

tips & tricks 2007. 12. 3. 16:27 by manywaypark
putty를 이용하여 작업중에 연결이 끊긴 것도 아닌데 갑자기 멈추는 경우가 있을 수 있다.
ctrl-s를 누르면 XOFF 신호가 전송되는데 이때는 터미널에 입력되거나 출력되는 문자를 보여주지 않는다.
해법은 간단하다 ctrl-q 하면 XON 신호를 전송해서 그동안 안보여주던 입/출력들을 보여준다.

참고: Recovering from Ctrl-S in putty

2008-05-09: screen 세션에서는 XON은 ctrl-a q이다.

happy hackin'
"apt-get install devscripts build-essential fakeroot" 으로 대충 build에 필요한 기본 패키지들을 깔고,
만약 less를 빌드한다면 다음과 같이 해서 소스 받고 build에 필요한(의존성이 있는) 패키지들을 깔고

~$ apt-get source less
~$ apt-get build-dep less
빌드한다.
~$ cd less-###/
~$ fakeroot ./debian/rules binary

"../less_###_XXX.deb"가 생성된다.

"dpkg -i less_###_XXX.deb" 로 시스템에 설치할 수 있다.

"dpkg-deb -c less_###_XXX.deb" 로 .deb 파일의 내용을 확인할 수도 있다 (다른 사람이 만들어 놓은 .deb 파일을 구했을 때는 한번 해보는 것이 좋을 듯).

참고: http://www.debian-administration.org/articles/20 (약간 오래된 글이라 ./debian/rules를 사용하지 않는 듯하다.)

happy hackin'
방금 KLDP에 Debian Binary Package Building HOWTO 한글 번역을 올렸다.

happy hackin'

/etc/motd 파일

tips & tricks/Linux/Unix 2007. 5. 2. 19:33 by manywaypark
/etc/motd 파일은 "message of the day"의 줄임말로, 로그인하는 사용자에게 표시되는 메시지이다.
잘못 건드리면 커널 업데이트 등을 하고 나서 조금 이상하게 변경되는 경우가 있는 듯하다.
평소와 다른 형식으로 표시된다면, 루트 권한으로 편집하면 된다.

참고: http://uw714doc.sco.com/en/SM_startup/sstT.etcmotd.html

happy hackin'

sudo

tips & tricks/Linux/Unix 2007. 4. 23. 15:00 by manywaypark
관리하는 서버 중에 나만 sudo가 되는 박스가 있었는데, 다른 사용자의 요청이 있어서 다른 아이디 하나를 admin group에 추가하려했다.
~ # adduser foobar admin
adduser: The group `admin' does not exist.
흠... 이게 뭐지? 이게 안된적이 있었던가?
/etc/group, /etc/passwd, /etc/sudoers 등의 파일을 확인했다.
이럴 수가 /etc/group에 admin group이 아예 없다. /etc/sudoers에는 admin group이 아니라 그냥 내 아이디를 root로 전환 할 수 있는 설정으로 되어있었다. 아마도, 오래전 admin group을 root로 전환하는 형태의 기본 설정이 나오기전의 배포판 설정이 그대로 대물림(?)된 거 같았다.

일단 새로 admin group을 만들고, 사용자를 admin group에 추가:
~ # addgroup admin
Adding group `admin' (1009)...
Done.
~ # adduser foobar admin
Adding user `foobar' to group `admin'...
Done.

admin group의 root 전환을 위해 /etc/sudoers 파일에 다음 내용을 추가했다.
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

happy hackin'
1 ··· 12 13 14 15 16 
분류 전체보기 (306)
잡담 (20)
함수형 언어 (65)
emacs (16)
java (18)
tips & tricks (154)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

04-25 13:05