'Linux'에 해당되는 글 15건

  1. 2009.03.18 예쁜 쉘 프롬프트 1
  2. 2008.10.31 Linux에서 사용자 관리 명령어 사용시 변경되는 파일 1
  3. 2008.10.29 Linux 사용자 관리
  4. 2008.04.24 리눅스 IP 설정
  5. 2007.10.17 Ubuntu Server 네트워크 설정
2009. 3. 18. 10:03

예쁜 쉘 프롬프트



예전에 쓰던 리눅스 쉘프롬프트를 다시 사용하고 싶어서 검색하던 도중 원하는 쉘 프롬프트에 대한 포스트를 예전에 같은 회사에서 일을 하셨던 훌륭한 강과장님의 블로그에서.. ^^; 발견할 수 있었다.
하기야.. 이분이 쓰던것을 따라 사용했었으니깐.. 당연한 것인가?

대략 이런 모습을 한 쉘 프롬프트이다. 예쁘당~


사용하려면 다음과 같이 설정을 해주면 된다.

.prompt 라는 녀석을 하나 만들어 준다. 뭐 다른 이름이라도 상관은 없지.. -_-
$ vi .prompt
## color variables
         RED="\[\033[0;31m\]"
       GREEN="\[\033[0;32m\]"
        BLUE="\[\033[0;34m\]"
        CYAN="\[\033[0;36m\]"
     MAGENTA="\[\033[0;35m\]"
      YELLOW="\[\033[0;33m\]"
       BLACK="\[\033[0;30m\]"
        GRAY="\[\033[0;37m\]"
       WHITE="\[\033[0;38m\]"
   LIGHT_RED="\[\033[1;31m\]"
  LIGHT_GREEN="\[\033[1;32m\]"
  LIGHT_BLUE="\[\033[1;34m\]"
  LIGHT_CYAN="\[\033[1;36m\]"
LIGHT_MAGENTA="\[\033[1;35m\]"
LIGHT_YELLOW="\[\033[1;33m\]"
  LIGHT_WHITE="\[\033[1;37m\]"
    NO_COLOR="\[\033[0m\]"

HOSTNAME_SHORT=${HOSTNAME%%.*}
TTY=$(tty); TTY=${TTY#/dev/}

## set shell prompt
shopt -s checkwinsize
PROMPT_UPDATE() {
   case "$PWD" in
       $HOME*) PWD_SHORT="${PWD/$HOME/~}" ;;
       *)      PWD_SHORT="$PWD" ;;
   esac
   PS1="($LOGNAME@$TTY@$HOSTNAME_SHORT)-($PWD_SHORT)"
   if [ ! -n "$COLUMNS" ]; then
       local fillsize=0
   else
       local fillsize=$((${COLUMNS}-${#PS1}))
   fi
   local fill=""
   if [ $fillsize -gt 0 ]; then
       while [ $((${#PROMPT_FILL})) -lt ${COLUMNS} ]; do
           PROMPT_FILL="$PROMPT_FILL-"
       done
       fill="${PROMPT_FILL:0:${fillsize}}"
   elif [ $fillsize -lt 0 ]; then
       fill=""
       local prefix=${PWD_SHORT:0:5}
       local PWD_SHORT="$prefix..${PWD_SHORT:$((2+${#prefix}-${fillsize}))}"
   fi
   PS1="\
$NO_COLOR($RED$LOGNAME$NO_COLOR@$GREEN$TTY$NO_COLOR@$BLUE$HOSTNAME_SHORT$NO_COLOR)$CYAN-$fill$NO_COLOR($MAGENTA$PWD_SHORT$NO_COLOR)$NO_COLOR\r\n($YELLOW\#$NO_COLOR)\\$ "
}

## set PROMPT_COMMAND
PROMPT_COMMAND=PROMPT_UPDATE
PS2="> "
PS4="+ "

## append a xterm's dynamic title command for some terminal types
case $TERM in
   xterm* | cygwin* | screen* | vt*)
   ## Xterm Title
   XTERM_TITLE() {
       echo -ne "\033]0;"
       [ "$LOGNAME" != "netj" ] && echo -n $LOGNAME@
       echo -n $HOSTNAME_SHORT: $PWD_SHORT
       echo -ne "\007"
   }
   # change Xterm title
   export PROMPT_COMMAND="$PROMPT_COMMAND; XTERM_TITLE"
   ;;
esac

# set PROMPT_DATE if not set
# from 2.05b, bash supports custom date formats with \D{...}
PROMPT_DATE=${PROMPT_DATE:-"`date '+%Y-%m-%d %a %T'`"}
PROMPT_DATEFMT=${PROMPT_DATEFMT:-"\D{$CYAN%Y-%m-%d $MAGENTA%a} $NO_COLOR\t"}

바로 확인해 보려면...
$ . .prompt
해주면 바뀐 프롬프트를 확인할 수 있을 것이다.

추가로 쉘에 로그인 시 자동으로 예쁜 프롬프트를 보고 싶다면.. .bashrc의 마지막 부분에 아래의 내용을 추가해면 된다.
$ vi .bashrc
...
if [ -f $HOME/.prompt ]; then
       . $HOME/.prompt
fi

그냥 보고만 있어도 흐뭇하다 ㅋㅋㅋ

추가로 쉘 프롬프트에 관련된 내용은 http://www.haansoftlinux.com/magazine/magazineView.php?no=1006&page=0&catalog=1 에서 참고할 수 있다.


'Linux > Tip' 카테고리의 다른 글

우분투 / 데비안 계열 고정 ip 설정  (4) 2010.01.06
diff and patch in linux  (0) 2009.12.12
vi 문자열 치환  (2) 2009.08.31
Ubuntu 한국 업데이트(kr.archive.ubuntu.com) 미러 접속문제..  (1) 2009.08.25
리눅스 IP 설정  (0) 2008.04.24
2008. 10. 31. 18:42

Linux에서 사용자 관리 명령어 사용시 변경되는 파일


사용자 관리 명령어를 사용하면 변경되는 정보는 '/etc/passwd', '/etc/group', '/etc/shadow' 파일에 적용된다. 
사용자가 시스템에 로그인을 하게 되면 시스템에서는 이 파일에 있는 정보와 암호를 가지고 사용자를 구분하고 로그인을 할 수 있게 해준다.


/etc/passwd 파일 필드 구성은 다음과 같다.
사용자명 : 패스워드 : UID : GID : Comment : 홈 디렉토리 : 로그인 쉘

사용자명 
  - 시스템에서 사용되는 사용자의 이름
패스워드
  - 사용자의 패스워드가 설정됨을 알림
UID
  - 사용자의 UID를 저장, 시스템에서 사용자를 구분하는 용도로 사용
GID
  - 사용자가 속한 기본 그룹의 GID를 저정
Comment
  - 사용자의 Comment를 저장한다. 특별한 의미는 없고 내용중에 ':' 가 있으면 안된다.
홈디렉토리
  - 사용자가 시스템에 로그인 할 때 위치하는 홈 디렉토리의 절대 경로
로그인 쉘
  - 로그인 쉘의 절대경로. 리눅스에서 지원하는 로그인쉘을 지정해서 사용한다.

desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin
user:x:500:500:user:/home/user:/bin/bash



/etc/shadow 파일의 필드 구성은 다음과 같다.
사용자명 : 암호화 된 패스워드 : 최종 변경 일수 : 최소값 변경일수 : 최대 값 변경일수 : 경고 일수 : 최대값 비활성 일수 : 만기날짜 :

사용자명
  - 사용자의 이름을 저장하는 용도
암호화 된 패스워드
  - 암호화된 패스워드가 들어간다. 이 필드는 NP로 지정되어 있으면 패스워드를 가지지 못하는 사용자이다. 최초 사용자가 만들어 지고 패스워드가 지정되지 않으면 '!!'가 필드 값으로 들어간다.
최종 변경 일수
  - 마지막으로 패스워드를 변경한 날짜가 저장된다.
최소값 변경 일수
  - 패스워드의 변경 제한 일수를 저장한다.
최대값 변경 일수
  - 현재 지정된 패스워드를 사용할 수 있는 최대 일수를 저장한다. 이 기간을 넘어선 후 로그인을 할 경우 강제로 passwd 명령어가 실행된다.
경고 일수
  - 최대값 변경 일수가 되어간다는 경고 메시지를 로그인시에 보여주기 위한 날짜를 지정한다.
최대값 비활성 일수
  - 시스템에 로그인을 하지 않고 사용자의 계정이 유지될 수 있는 최대 일수를 저장한다.
만기 날짜
  - 사용자 계정이 유지되는 만기 날짜를 저장한다.

desktop:!!:14181:0:99999:7:::
user:!!:13212:0:99999:7:::



/etc/group 파일 필드 구성
그룹명 : 암호화 된 그룹 패스워드 : GID : 사용자 목록

그룹명 
  - 시스템에 정의된 그룹의 이름을 저장한다.
암호화 된 그룹 패스워드
  - 암호화 된 그룹 패스워드를 저장한다. 과거에 사용하던 필드로써 현재는 사용하지 않는다. 호환성을 위해 남겨둔 필드.
GID 
  - 그룹의 GID 를 저장한다. 시스템에서 그룹을 구분하기 위해서 사용하는 값이다.
사용자 목록
  - 그룹에 속해 있는 사용자들의 목록을 저장한다. 여러명의 사용자를 동시에 기입할 수 있으며, 구분은 ','로 한다.

desktop:x:80:
user:x:500:


'Linux' 카테고리의 다른 글

Debian lenny - FlashPlayer 설치  (0) 2009.11.30
Linux 사용자 관리  (0) 2008.10.29
Ubuntu Server 네트워크 설정  (0) 2007.10.17
2008. 10. 29. 19:43

Linux 사용자 관리


사용자 추가

useradd
: 시스템에 새로운 사용자를 추가하기 위한 명령이다. adduser 명령어와 동일한 명령어이며, root 사용자만 실행이 가능하다.

useradd [옵션] 유저이름

옵션
-d : 홈디렉토리를 지정
-g : 그룹을 지정(지정할 그룹이 미리 생성되어 있어야 함)
-p : 초기 암호를 지정
-u : 사용자 ID를 지정
-c : 사용자 추가시 사용자에 대한 설명을 설정
-s : 사용자 추가시 사용자가 사용할 쉘을 설정
-G : 기본그룹 이외 추가 지정 그룹에 속하게 할 경우 사용
-D : 현재 default로 설정되어 있는 값들을 보여준다. /etc/default/useradd 에 정의되어 있다.

# ls /home
user
# useradd user1
# ls /home
user        user1
#


사용자 비밀번호 설정

passwd : 사용자의 패스워드를 변경하거나 새로 만들어져 아직 패스워드가 존재하지 않는 사용자의 패스워드를 지정할 때 사용. 일반 사용자의 경우 자신의 패스워드만 변경 가능하며, root 사용자는 모든 사용자의 패스워드를 변경하거나 생성 할 수 있다.

passwd 유저이름

# passwd user
Changing password for user user.
New UNIX password:
Retype new UNIX password
passwd: all authentication tokens updated successfully.

 
사용자 삭제

userdel : 현재 시스템에 등록되어 있는 사용자를 삭제한다.

userdel [옵션] 유저이름

옵션
-r : 사용자의 홈디렉토리를 제거

# ls /home
user        user1
# userdel -r user1
# ls /home
user
#


그룹 추가

groupadd : 새로운 그룹을 추가하는 명령어. 사용자가 직접 /etc/group 파일을 수정해서 그룹을 추가할 수 있다.

groupadd [옵션] 그룹명

옵션
-g GID : 특정 GID 번호(중복되지 않는 500번 이상의 번호)로 설정
-r : 0~500 번대 사이로 GID 설정


그룹 삭제

groupdel : 그룹을 삭제한다. /etc/group 파일을 수정해서 그룹을 삭제할 수 있다. 그룹에 속한 사용자가 있다면 삭제되지 않는다.

groupdel 그룹명


유저 정보

id : 사용자의 uid, gid, group을 보여준다.

id [옵션] [사용자명]

옵션
-g : 기본 그룹의 gid를 출력한다.
-G : 사용자가 속한 모든 그룹의 gid를 출력한다.
-u : 사용자의 uid를 출력한다.
-n : 위의 옵션과 함께 사용하여 숫자 대신 이름을 출력한다.

# id
uid=0(root) gid=0(root) groups=0(root), 1(bin), 2(daemon), 3(sys), 4(adm), 6(disk), 10(wheel)
#
#id -g root
0
#

groups : 사용자가 속한 그룹을 보여준다.

groups 사용자명

# groups root
root : root bin daemon sys adm disk wheel
#


사용자 정보 수정

usermod : 사용자의 정보를 수정하는 명령어이다.

usermod [옵션] 사용자명

옵션
-c : 사용자의 설명을 수정한다.
-d : 홈디렉토리를 변경한다.
-m : 홈디렉토리 변경시 파일을 옮긴다.
-e : 계정의 종료일을 변경한다.
-s : 기본 쉘을 변경한다.
-u : uid를 변경한다.
-g : 기본 그룹을 변경한다.
-G : 추가 그룹을 변경한다.
-I  : 사용자명을 변경한다.
-L : 사용자의 패스워드에 LOCK을 걸어 로그인을 막는다.
-U : 사용자의 패스워드에 걸린 LOCK을 푼다.


사용자 전환

su : 다른 사용자 권한으로 shell을 실행한다. 

su [옵션] 사용자명

옵션
-  : 사용자의 환경변수를 읽는다.

$ su -               : root 로 전환한다.                                     
#
# su - user        : user라는 이름을 갖는 사용자로 전환한다.
$


2008. 4. 24. 15:32

리눅스 IP 설정



몇주전인가... 회사에 남는 기계에 리눅스를 설치 했다.
요즘 계속 Windows 기계에서만 작업을 해서 그런지.. 리눅스를 다시 만지고 싶어서 설치를 하긴 했지만.. 내부 아이피를 사용하는 입장이어서 뭐 별로 깔아놓구선 해본게 없다. -_-

여튼 남는 공인 아이피가 있다고 하여 IP세팅을 다시 해보았다.
집에서 할일 없을 때 가끔 접속 해서 이것 저것 해보고 싶은 마음에.. ^^;

참고로 현재 설치한 리눅스는 CentOS 5이고, 뭐 그렇다.
예전엔 계속 데비안 계열만 써봐서.. 이쪽은 잘 모른다면서.. 뭐 대충 비슷비슷 하겠지만.. ^^;

먼저 네트워크를 세팅한다.
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost
GATEWAY=xxx.xxx.xxx.xxx

다음은 이더넷 관련 세팅...

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROACAST=xxx.xxx.xxx.255
HWADDR=xx:xx:xx:xx:xx:xx
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.255.xxx
NETWORK=xxx.xxx.xxx.0
ONBOOT=yes

마지막으로 네임서버 세팅이다.

# vi /etc/resolv.conf
nameserver xxx.xxx.xxx.xxx

이제 IP세팅은 끝이 난 것이고, network를 재시작해서 정상적으로 사용할 수 있다.

# /etc/init.d/network restart

'ifconfig' 명령으로 확인해 보면 현재 사용하는 기계의 네트워크 정보를 볼 수 있다.


'Linux > Tip' 카테고리의 다른 글

우분투 / 데비안 계열 고정 ip 설정  (4) 2010.01.06
diff and patch in linux  (0) 2009.12.12
vi 문자열 치환  (2) 2009.08.31
Ubuntu 한국 업데이트(kr.archive.ubuntu.com) 미러 접속문제..  (1) 2009.08.25
예쁜 쉘 프롬프트  (1) 2009.03.18
2007. 10. 17. 19:57

Ubuntu Server 네트워크 설정


ubuntu 콘솔에서 네트워크 설정을 바꾸는 방법이다.

고정 ip를 사용하게 될 경우..
/etc/network/interfaces 라는 파일을 수정함으로 바꿀 수 있다.

neo@green:~$ sudo vi /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
# iface eth1 inet dhcp         # dhcp로 세팅 시 사용
iface eth1 inet static           # 고정 ip로 세팅할 시 사용
          address xxx.xxx.xxx.xxx
          netmask 255.255.255.xxx
          network  xxx.xxx.xxx.xxx
          broadcast xxx.xxx.xxx.xxx
          gateway  xxx.xxx.xxx.xxx

세팅이 완료되면 데몬을 재시작 함으로 적용시킬 수 있다.
neo@green:~$ sudo /etc/init.d/networking restart

적용된 세팅을 확인하기 위해서는 ifconfig 명령을 사용하면 확인할 수 있다.
neo@green:~$ ifconfig eth1
eth1      Link encap:Ethernet   HWaddr   xx:xx:xx:xx:xx:xx
            inet    addr:xxx.xxx.xxx.xxx    Bcast:xxx.xxx.xxx.xxx    Mask:255.255.255.xxx
            inet6 addr:xxxx::xxxx:xxxx:xxxx:xxxx/xx    Scope:Link
            UP BROADCAST RUNNING MULTICAST    MTU:1540    Metric:1
            RX    packets:62092    errors:0    dropped:0    overruns:0    frame:0
            TX    packets:39519    errors:0    dropped:0    overruns:0    carrier:0
            collisions:0    txqueuelen:1000
            RX bytes:8652169 (8.2 MiB)    TX bytes:44541558 (42.4 MiB)

neo@green:~$
                           

'Linux' 카테고리의 다른 글

Debian lenny - FlashPlayer 설치  (0) 2009.11.30
Linux에서 사용자 관리 명령어 사용시 변경되는 파일  (1) 2008.10.31
Linux 사용자 관리  (0) 2008.10.29