'Linux'에 해당되는 글 15건
- 2009.03.18 예쁜 쉘 프롬프트 1
- 2008.10.31 Linux에서 사용자 관리 명령어 사용시 변경되는 파일 1
- 2008.10.29 Linux 사용자 관리
- 2008.04.24 리눅스 IP 설정
- 2007.10.17 Ubuntu Server 네트워크 설정
예전에 쓰던 리눅스 쉘프롬프트를 다시 사용하고 싶어서 검색하던 도중 원하는 쉘 프롬프트에 대한 포스트를 예전에 같은 회사에서 일을 하셨던 훌륭한 강과장님의 블로그에서.. ^^; 발견할 수 있었다.
하기야.. 이분이 쓰던것을 따라 사용했었으니깐.. 당연한 것인가?
대략 이런 모습을 한 쉘 프롬프트이다. 예쁘당~
사용하려면 다음과 같이 설정을 해주면 된다.
.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"}
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
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 |
사용자 관리 명령어를 사용하면 변경되는 정보는 '/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
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 |
사용자 추가
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라는 이름을 갖는 사용자로 전환한다.
$
'Linux' 카테고리의 다른 글
Debian lenny - FlashPlayer 설치 (0) | 2009.11.30 |
---|---|
Linux에서 사용자 관리 명령어 사용시 변경되는 파일 (1) | 2008.10.31 |
Ubuntu Server 네트워크 설정 (0) | 2007.10.17 |
몇주전인가... 회사에 남는 기계에 리눅스를 설치 했다.
요즘 계속 Windows 기계에서만 작업을 해서 그런지.. 리눅스를 다시 만지고 싶어서 설치를 하긴 했지만.. 내부 아이피를 사용하는 입장이어서 뭐 별로 깔아놓구선 해본게 없다. -_-
여튼 남는 공인 아이피가 있다고 하여 IP세팅을 다시 해보았다.
집에서 할일 없을 때 가끔 접속 해서 이것 저것 해보고 싶은 마음에.. ^^;
참고로 현재 설치한 리눅스는 CentOS 5이고, 뭐 그렇다.
예전엔 계속 데비안 계열만 써봐서.. 이쪽은 잘 모른다면서.. 뭐 대충 비슷비슷 하겠지만.. ^^;
먼저 네트워크를 세팅한다.
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost
GATEWAY=xxx.xxx.xxx.xxx
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
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
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 |
ubuntu 콘솔에서 네트워크 설정을 바꾸는 방법이다.
고정 ip를 사용하게 될 경우..
/etc/network/interfaces 라는 파일을 수정함으로 바꿀 수 있다.
세팅이 완료되면 데몬을 재시작 함으로 적용시킬 수 있다.
적용된 세팅을 확인하기 위해서는 ifconfig 명령을 사용하면 확인할 수 있다.
고정 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
# 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:~$
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 |