꽃병 라우터

Tech 2008/12/05 12:56 |
사용자 삽입 이미지

멋진 IT기기이다.
투박한 네트워크 기기인 라우터가 꽃과 만나 꽃병으로까지 쓰일수 있다니..
정말 아이디어 대박이다.

단지 물을 넣고 씻고 그럴텐데.. 그럴때 방수에 대한 위험이 없을지 모르겠다.


아무튼 원추!


관련링크: stc
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Tech' 카테고리의 다른 글

꽃병 라우터  (0) 2008/12/05
Gmail 테마 기능 추가  (0) 2008/11/20
로딩 애니매이션 이미지 모음  (0) 2008/06/20
vsftpd 로 가상 유저 서비스 하기  (0) 2008/06/10
Proftpd와 mysql 연동한 사용자 관리  (0) 2007/03/02

Trackback Address :: http://jinsnet.com/trackback/27 관련글 쓰기

댓글을 달아 주세요

Gmail 테마 기능 추가

Tech 2008/11/20 11:21 |
구글에서 제공하는 메일 서비스 지메일에서 새롭게 테마라는 기능을 추가했다.
그동안 다양한 새 기능들은 Labs를 통해 임시로 제공했었는데..

오늘 들어가보니.. UI가 확 바껴있고.. 테마로 가서 변경을 하라는것이다.

사용자 삽입 이미지

Gmail Themes


위 그림을 클릭해보면 알듯이 총 27가지의 기본 테마를 제공하고 있다.
단순 CSS로 변경뿐만 아니라 귀엽고 멋진 그림도 있어서...
개인별로 다양한 풍을 낼수 있어 좋다.

혼자 보는 메일에 이런 서비스를 제공하는것은 자기 만족이겠지만..
구글이 최초가 아닐까 한다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Tech' 카테고리의 다른 글

꽃병 라우터  (0) 2008/12/05
Gmail 테마 기능 추가  (0) 2008/11/20
로딩 애니매이션 이미지 모음  (0) 2008/06/20
vsftpd 로 가상 유저 서비스 하기  (0) 2008/06/10
Proftpd와 mysql 연동한 사용자 관리  (0) 2007/03/02

Trackback Address :: http://jinsnet.com/trackback/24 관련글 쓰기

댓글을 달아 주세요

Ajax 나 페이지 로딩을 사용하면서 로딩중이라는 메세지를 표시해야하는데..
여기 다양한 로딩 애니매이션 모음이 있어 스크랩 한다.


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지



Source From: http://www.badeziner.com/2008/05/04/120-free-ajax-activity-indicator-gif-icons/
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Tech' 카테고리의 다른 글

꽃병 라우터  (0) 2008/12/05
Gmail 테마 기능 추가  (0) 2008/11/20
로딩 애니매이션 이미지 모음  (0) 2008/06/20
vsftpd 로 가상 유저 서비스 하기  (0) 2008/06/10
Proftpd와 mysql 연동한 사용자 관리  (0) 2007/03/02

Trackback Address :: http://jinsnet.com/trackback/16 관련글 쓰기

댓글을 달아 주세요

vsftpd 의 기능중 가상 유저를 만들어 서비스하는 방법을 설명합니다.

이 글에서는 pam_pwdfile 을 이용해 사용자를 인증하여 FTP를 재공하는 방법을 설명합니다.

먼저 Linux-PAM 과 pam_pwdfile 소스를 다운 받습니다.  pam_pwdfile 을 이미 사용중이라면 받지 않아도 됩니다.

Linux-PAM 은 아래 링크에서 다운 받으세요.
http://www.us.kernel.org/pub/linux/libs/pam/pre/library/Linux-PAM-0.75.tar.bz2

pam_pwdfile 은 아래에서 바로 받으세요.
http://cpbotha.net/files/pam_pwdfile/pam_pwdfile-0.99.tar.gz

예를 들어 /usr/local/src 에 두 화일을 모두 받았다고 하면
그곳에서 pam_pwdfile 의 압축을 풉니다.

/usr/local/src# tar zxvf pam_pwdfile-0.99.tar.gz


pam_pwdfile-0.99 폴더로 들어가서 INSTALL 화일을 읽으면 설치 하는 방법이 나옵니다.
1번에 Linux-PAM 의 최신 버전을 받을 수 있는 주소가 나오는데 위에 받은 버전과 같은지 체크해주세요.
아래 내용은 INSTALL 화일에 있는 내용을 제가 다시 설명한것입니다.

그후 src 폴더에서

/usr/local/src# bunzip2 -c Linux-PAM-0.75.tar.bz2 | tar -xvf -

를 쳐서 Linux-PAM 의 압축을 풉니다.

# cd Linux-PAM-0.75/modules
# tar -xzvf /where/you/put/it/pam_pwdfile-0.99.tar.gz
# cd ..

# rm default.defs  (보통 화일이 없습니다.)
# ln -s defs/linux.defs default.defs  (linux 아니면 자신의 OS에 맞는 화일을 입력하세요.)

Linux-PAM-0.75 폴더에서
# make all 을 칩니다.

자, 이제 Linux-PAM-0.75/modules/pam_pwdfile 폴더에 pam_pwdfile.so 화일이 생성 됐을것입니다.

이 화일을 /lib/security 폴더로 복사하세요.

cp modules/pam_pwdfile/pam_pwdfile.so /lib/security

/etc/pam.d/ 폴더로 가서
vsftpd 라는 화일을 만들고 그안에 아래 내용을 씁니다.

#%PAM-1.0
auth    required pam_pwdfile.so pwdfile /etc/vsftpd/passwd_ftp
account required pam_permit.so


/etc/vsftpd/ 폴더로 갑니다.

filter.pl 이라는 화일을 만듭니다.

#! /usr/bin/perl -w
use strict;
 
# filter "user:cleartext" lines into "user:md5_crypted"
# probably requires glibc
 
while (<>) {
    chomp;
    (my $user, my $pass) = split /:/, $_, 2;
    my $crypt = crypt $pass, '$1$' . gensalt(8);
    print "$user:$crypt\n";
}
 
sub gensalt {
    my $count = shift;
    my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z');
    my $s;
    $s .= $salt[rand @salt] for (1 .. $count);
    return $s;
}

위 내용을 쓰고 저장합니다.
그리고 실행 권한을 줍니다.

chmod 755 filter.pl


Makefile  이름으로 화일을 만듭니다.

passwd_ftp: cleartext
touch $@
chmod 600 $@
./filter.pl $< >$@


이제 cleartext 라는 화일을 만듭니다.
이 화일이 가상 유저들 정보가 있는 화일입니다.

id:pass 형식으로 넣어주세요.

즉,

test:mypasswd
newuser:newpasdd

이렇게 하면 test와 newuser 라는 유저를 설정하는 것입니다.

저장후 나와서
make  라고 칩니다.

그러면 passwd_ftp 라는 화일이 만들어지고
그안에 유저 아이디와 인코딩된 패스워드가 있을것입니다.

자, 이젠 vsftpd 에서 이 passwd_ftp 를 참조해서 유저를 나누게 설정해야 합니다.

앗, 그전에 이 모든 가상 유저를 실 계정과 연결을 해야 합니다.
ftp만 쓰일 서버 계정을 만드세요.
만약 ftpfile 이라는 유저로 만든다면

adduser ftpfile


그후, vsftpd.conf 를 열어서 맨 마지막에
아랫줄을 넣습니다.

## For Virtual User Setting ##
guest_enable=YES
guest_username=ftpfile     (이것은 위에 생성한 계정 이름입니다.)
user_sub_token=$USER
chroot_local_user=YES
hide_ids=YES
local_root=/home/ftpfile/$USER  (여기에 각 가상 유저의 폴더를 입력합니다. $USER 는 ID 변수 입니다.)
user_config_dir=/etc/vsftpd/config
virtual_use_local_privs=YES


vsftpd 를 다시 시작한후

service/vsftpd restart

가상 유저로 접속해보세요.
접속되면 성공한것입니다.


여기에 한가지 더 나아가, 각 가상 유저별로도 권한을 설정할 수 있습니다.
즉, 어떤 유저는 읽기만, 어떤 유저는 쓰고, 읽고 모두 이렇게 설정할 수 있는것이죠.

위에 보면
user_config_dir=/etc/vsftpd/config
라는 줄이 있습니다.
각 유저별 개별 설정이 이 폴더 안에 있다고 말하는 것입니다.

/etc/vsftpd/config/ 폴더를 만듭니다.

그안에 유저이름으로 화일을 만들어 설정을 하면 각 유저만의 설정을 합니다.

예를 들어 여기서 설정한 test 유저를 newuser 폴더를 읽기만 하게 한다 하면

test 라는 화일을 config 폴더안에 만들고,

local_root=/home/ftpfile/newuser
write_enable=NO

이렇게 쓴 후 저장하면 됩니다.


이올린에 북마크하기(0) 이올린에 추천하기(0)

'Tech' 카테고리의 다른 글

꽃병 라우터  (0) 2008/12/05
Gmail 테마 기능 추가  (0) 2008/11/20
로딩 애니매이션 이미지 모음  (0) 2008/06/20
vsftpd 로 가상 유저 서비스 하기  (0) 2008/06/10
Proftpd와 mysql 연동한 사용자 관리  (0) 2007/03/02

Trackback Address :: http://jinsnet.com/trackback/13 관련글 쓰기

댓글을 달아 주세요

FTP를 사용하여 데이터 저장 서버를 만들려고 한다.
도전 과제는 다양한 사용자가 존재할 수 있고, 사용자 정보 즉, 추가 삭제가 빈번히 일어난다.
중앙에서 FTP서버에 접속하는 계정을 관리, 유지 하고 싶다.

기본적으로 FTP는 리눅스의 쉘 계정을 사용한다.
FTP유저를 추가하고 싶다면 쉘에 계정을 추가해야하는데..
이거 쫌 보안에 민감하지 않을 수 없다.

그래서 선택한것이 mysql 의 데이터베이스를 사용하여 가상 계정을 만들어 FTP사용을 제어 하는것이다.

찾아본 결과로는 아주 만족스럽게 모든것이 제어가 가능하다.
원하면 쿼터도 조절가능하나, 현재 나의 서비스에서는 필요가 없기때문에 기본적으로 proftp와 mysql 을 연결하여 조절하는 작업을 설명해보겠다.

찾아보면 기본적인 설정에 대한 문서는 어느정도 공개 되어있다.
proftp의 한글 사이트까지 있으나, 단순한 매뉴얼 번역일뿐.. 예제가 없어.. 처음 사용하는데에는 많은 시행착오가 필요할듯 한다.
그래서 여기에 하나의 예제를 만들고자 한다.

그럼 연동 작업 시작합니다.

기본적으로 proftp와 mysql 을 설치 해야한다. (당연하죠?)
이때 중요한 작업이 proftp를 설치할때 mysql을 사용하여 연동할것이라는것을 알려줘야한다.

./configure 할때
다음 옵션을 추가한다.
--with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/include/mysql

즉 ./configure --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/include/mysql 그밖의 자신의 옵션들...

또는

./configure --prefix=/usr/local/proftpd --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/include/mysql --with-libraries=/usr/lib --enable-autoshadow --enable-shadow

이렇게 설정하면 된다. 자세한 설치 작업에 대한것은 이곳에서 설명하지 않기로 하겠다.
mysql에서 특별히 할것이 없다. 그냥 기존에 설치 되어있으면 된다.


Step 1

이제 DB에 관리를 할 사용자와 그룹 테이블을 만들겠다.

create table users (
      userid   char(12) not null,
      uid      integer unsigned,
      gid      integer unsigned,
      passwd   char(63),
      shell    char(255),
      homedir  char(255),
      count    integer unsigned not null,
      access_time datetime NOT NULL,
      valid    integer unsigned,
      primary key (userid)
    );

create table groups (
     gname    char(12) not null,
     gid      integer unsigned,
     members  text,
     primary key(gname)
   );



proftp 매뉴얼에 있는 기본적인 테이블 스키마이다. 여기에 사용자의 최종 접속 시간을 체크하기 위해 access_time 이라는 필드를 추가했다.

Step 2

다음은 모든 가상 계정들을 대신하여 폴더 권한을 가질 계정의 실제 그룹과 유저를 생성하겠다.

> groupadd -g 3001 ftpuser
> useradd -u 3001 -s /sbin/nologin -d /bin/null -c "proftpd user" -g ftpuser ftpuser



이렇게 좀 떨어진 gid와 uid로 그룹과 유저를 생성한다. 관리의 편리를 위해서다.
중요점! 유저를 생성할때 이 유저는 실제로 사용할 유저가 아니기 때문에 홈디렉토리와 쉘이 없어야 한다.

Step 3


이제 proftp 설정화일을 수정하자.
설정화일을 각 설치 환경마다 다르겠지만, 기본적으로는 설치된 proftp 폴더아래에 etc 폴더아래에 있다.

화일의 맨 아랫부분에 다음 설정을 삽입한다.
각 설정은 설명을 할테니 자신이 원하는 환경에 맞게 수정하면 될것이다.

<Global>

# SQL Authentication
# SQL user
# Mysql 접속 정보이다. 형식은 DB이름@호스트:포트 사용자아이디 사용자패스워드 이다.
SQLConnectInfo test@localhost:3306 ftp ftppass

# 사용자 테이블에 저장될 패스워드의 형식을 결정한다.
# 많이 쓰는것이 mysql 의 PASSWORD() 함수를 사용하는것이다. 이를 위해서는
# 아래 Plaintext를 Backend 로 변경한다. Plaintext는 글자 그대로 텍스트로 저장한것이다.
SQLAuthTypes            Plaintext

# 사용자 테이블의 정보를 알려준다.
# 형식은: 테이블이름 아이디필드 패스워드필드 uid gid 홈폴더필드 쉘필드 이다.
# 자신이 만든 테이블의 필드명에 맞게 하나씩 써준다.
SQLUserInfo             users userid passwd uid gid homedir shell

# 그룹 테이블의 정보를 알려준다.
# 형식은: 테이블이름 그룹이름 gid 그룹속한사용자 이다.
# members 는 콤마로 각 그룹에 속할 실제 계정 유저를 넣어 주면 된다.
SQLGroupInfo            groups gname gid members

# 유저의 사용을 제어하는 쿼리를 만든다.
# 유저 테이블을 보면 valid라는 필드가 있는데 이것이 0인 유저는 로그인 못하고
# 1인 사용자만 로그인 할수 있게 쿼리를 날리기 위한 Where 절을 생성한다.
# 필요에 따라 쿼리를 쓰면 된다.
SQLUserWhereClause      "valid = 1"

# 만약 유저 테이블의 homedir 폴더가 없다면 기본적으로 사용한 폴더를 설정한다.
SQLDefaultHomedir       "/home/data2/storeftp"

# FTP사용자들은 모두 가상이기 때문에 실제 쉘 계정이 없다.
# 아래를 설정함으로써 쉘이 없어도 ftp에 접속 할수 있게 한다.
RequireValidShell       off

# 어떤 인증을 할지를 설정하는데
# 여기서는 유저와 그룹을 체크하는것으로 했다.
# 단순하 FTP에서는 단지 users 만 적어서 사용자 관리만 할 수 있다.
SQLAuthenticate         users* groups*

# 최소 GID와 UID로 사용할 번호이다.
# 기본적으로 999 이기 때문에 설정할 필요 없지만.. 보안적인 측면에서 설정하면 좋다.
SQLMinID        3000

# 만약에 유저의 homedir이 없으면 자동으로 생성해주는 설정이다.
# 필요없으면 주석 처리 하면 된다.
CreateHome on


# 이제 부터는 약간의 관리 로그를 작성하는 부분이다.

# 각 쿼리를 이름을 만들수 있다.
# 아래에 보면 getcount 뒤에 SELECT 가 쭉 붙는데.. 이 쿼리가 getcount 라는 이름으로 저장된것으로 보면 된다.
SQLNamedQuery           getcount SELECT "count from users where userid='%u'"
SQLNamedQuery           updatecount UPDATE "count=count+1, access_time=now() WHERE userid='%u'" users

# 로그인했을때 보여줄 메세지이다. %{getcount}이것은 위에 설정한 쿼리의 결과값을 출력한다.
# 여기서 PASS는 로그인했을때 하라는 부분이다.
SQLShowInfo             PASS "230" "%u님은 %{getcount} 번 로그인하셨네요~"
# 즉, PASS일때 위의 메세지를 보여주고 그리고 updatecount 쿼리를 한번 실행하라는것이다.
# updatecount는 위에 정의 했는데 각 유저 테이블의 로그인 횟수를 증가하고 최종 로그인 시간을 저정하는 부분이다.
SQLLog                  PASS updatecount

# 이부분은 추가적으로 각 사용자의 다운로드와 업로드 부분을 로그 기록하는 것인데,
# 테이블 스키마를 아래에 적어 주겠다.
SQLLog RETR receivefile
SQLNamedQuery receivefile INSERT "null, '%u', '%f', %b, now(), now()" file_download

SQLLog STOR sendfile
SQLNamedQuery sendfile INSERT "null, '%u', '%f', %b, now(), now()" file_upload

</Global>

# 이부분은 ftp사용의 로그를 저장할 화일을 설정하는 부분인데.. 자신의 환경에 맞게 설정하면 된다.
# 아마 기본적으로 TransferLog     /var/log/xferlog 이부분을 있을듯하다.
SQLLogFile      /var/log/ftpsql
SystemLog       /var/log/ftplog
TransferLog     /var/log/xferlog


 

------------------------- 참고--------------------
업로드, 다운로드 관리 테이블
CREATE TABLE `file_download` (
  `num` int(11) NOT NULL auto_increment,
  `user` varchar(30) NOT NULL,
  `file_name` varchar(100) NOT NULL,
  `file_size` int(11) NOT NULL,
  `file_date` date NOT NULL,
  `file_time` time NOT NULL,
  PRIMARY KEY  (`num`),
  KEY `user` (`user`,`file_date`)
) ;

CREATE TABLE `file_upload` (
  `num` int(11) NOT NULL auto_increment,
  `user` varchar(30) NOT NULL,
  `file_name` varchar(100) NOT NULL,
  `file_size` int(11) NOT NULL,
  `file_date` date NOT NULL,
  `file_time` time NOT NULL,
  PRIMARY KEY  (`num`),
  KEY `user` (`user`,`file_date`)
);



Step 4

실제 사용할 유저를 추가해보자~~
먼저 그룹정보를 추가한다.

INSERT INTO `groups` (`gname`, `gid`, `members`) VALUES ('ftpuser', 3001, 'ftpuser');

여기서 그룹 이름과 gid는 서버의 실제 정보를 입력해야한다.
memebers 에서 아까 step2 에서 생성한 실제 유저 정보를 입력한다.

이제는 가상 유저를 추가하자.

INSERT INTO `users` (`userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed_time`, `valid`) VALUES ('test', 'test', 3001, 3001, '/home/ftpuser/test', '/sbin/nologin', 0, '', '' '1');

이렇게 데이터를 추가하면 사용할 유저가 추가된다.
여기서 중요점은 이 가상 유저가 사용할 그룹 id 즉, gid를 위에서 설정한 그룹 정보와 맞춰야한다.
그래야 이 가상 유저가 로그인하면 실제 계정인 ftpuser 로 로기인 한것처럼 된것이기 때문이다.

이제 로그인 해보자. FTP 클라이언트 프로그램을 이용하여 설정한 서버로
유저 이름 test 비밀번호 test로 접속해보자.
접속 되면 잘된것이고 안되면.. 다시 설정을 잘 봐야 할것이다.

그리고 실제 서버의 폴더에 가면 /home/ftpuser/test 라는 폴더가 자동 생성되었을것이다.

이상으로 Proftp 와 mysql을 연결하여 계정 관리하는 방법을 설명하였다.
DB에서 계정을 관리하기 때문에 보안적인 측면에서 좋고,
관리도 더욱 쉬워지게 될것이라 생각한다.

참고 자료: http://www.howtoforge.com/proftpd_mysql_virtual_hosting (영문이지만 예제가 잘 나와있다.)
http://www.castaglia.org/proftpd/modules/mod_sql.html (그밖의 설정 화일에 대한 매뉴얼)
http://proftpd.oops.org/ (Proftpd 한글 사용자 모임

'Tech' 카테고리의 다른 글

꽃병 라우터  (0) 2008/12/05
Gmail 테마 기능 추가  (0) 2008/11/20
로딩 애니매이션 이미지 모음  (0) 2008/06/20
vsftpd 로 가상 유저 서비스 하기  (0) 2008/06/10
Proftpd와 mysql 연동한 사용자 관리  (0) 2007/03/02

Trackback Address :: http://jinsnet.com/trackback/12 관련글 쓰기

댓글을 달아 주세요