2008년 07월 26일
네트워크 구성/관리 기초 #5. 시스템 명령어 기초.
SSH 서버 설치 및 설정에 대해 언급하기 전 사용자 계정 관리에 대한 명령어들과 이들을 사용하는 방법에 대해서 몇 가지 기술하도록 하겠다.
0. 기본적으로 리눅스 시스템에 로그온 하게 되면 만나는 쉘 프롬프트이다.
0.1. 쉘(shell)이란 무엇인가?
많이 접해본 대로 ‘명령어’ 해석기 이다. 커널과 사용자간에 존재 하는 녀석으로써 과거에 도스를 사용하던 시절
에 많이 본 c:\> 이 녀석을 출력해주던 놈이 쉘이다. 쉽게 설명하자 하면 컴퓨터는 on/off로 구분된 이진수로
구성된 명령어만을 이해 할 수 있도록 만들어져 있는데 사람은 이를 잘 모르기 때문에 인간의 언어로 구성된 명
령어를 타이핑 하면 이것을 컴퓨터가 아는 언어(엄밀히 말하자면 인스트럭션 셑에 근접한)로 바꿔주는 녀석이라고
생각하면 된다.
당연히 쉘의 종류엔 여러 가지가 있으며 우리가 유닉스, 리눅스를 접할 때 기본적으로 만나는 녀석은 대개 배쉬
(bash) 쉘이다.
0.1.1. #은 root. 즉 Super-User. 다시 말해 Administrator. 한국말로 ‘시스템 관리자’를 의미한다. 시스템 내에서
Super-User는 모든 권한을 가진다. 삭제 할 수 없는 파일은 없으며(물론 현재 메모리에 로드된 프로세스와 관
련된 파일이나 스왑 데이터들은 삭제 할 수 없다. 그렇다고 절대 불가능한 것은 ‘아니다.’)볼 수 없는 내용도 없
다. 하지만 당신이 시스템을 구축한 사람이 아니라면 애석하게도 root의 프롬프트 대신 다음의 프롬프트를 접하
게 될 것이다.
0.1.2. $는 일반 유저를 의미한다. Super-User가 허락한 권한만을 가지고 시스템을 운영 할 수 있다. 하지만 권한
에 따라서 꼭 위 두가지 문자만 사용해야만 하는 것은 아니다. 사용자의 마음대로 바꿔서 사용할 수도 있다.
0.2. 유닉스 시스템에서 사용하는 명령어는 무엇이 있는가? 유닉스 시스템에서는 Microsoft사의 시스템처럼 확장자
(file.exe .뒤의 문자세개)로 구분하지 않는다. 대개의 명령어들은 /bin 디렉토리 아래에 존재하며, 시스템 설정
과 관련된 명령어들은 /sbin 디렉토리, 그 외 다른 디렉토리에 존재하기도한다. 하지만!! 자주 사용하는 명령어
들은 위의 두 개 디렉토리에 거의 들어가 있으며, 그 외의 명령어들은 사용자가 설치하면서 어디에 설치되는지를
알기 때문에 어디있는지 고민해야 할 필요는 없다.
0.2.1 현재 내가 있는 디렉토리 상의 위치는?
0.2.1.1 먼저 유닉스 시스템의 범용 디렉토리 위치에 대해 ‘간략하게’ 보도록 하자.
/ : 최상위 디렉토리이다.
/bin : 앞서 언급한 대다수의 일반 명령어들이 존재한다.
/dev : 시스템에 연결된 디바이스 목록이 존재한다.
/export/home : 솔라리스 8의 경우는 사용자 디렉토리가 존재하며, 리눅스 시스템의 경우는 /home이다.
/etc : 윈도우 시스템의 제어판이라고 생각하면 쉽다. 시스템 관련 설정 파일들이 존재한다.
/lib: 시스템 라이브러리등이 존재한다.
/mnt : 일반적으로 분리 가능한 디바이스를 마운트 할 디렉토리를 생성하기 위해 사용한다.
/opt : optional 디렉토리로 추가적 프로그램 등을 설치하기 위함이지만 사용빈도는 낮은 편이다.
/proc: process관련 가상 디렉토리로서 생성된 프로세스들의 PID가 존재한다.
/sbin : 시스템 설정과 관련된 명령어 파일들이 존재한다.
/usr : 추가 설치된 프로그램들이 설치되는 장소이다.
/var : variable 디렉토리. 수시로 변하는 파일들이 존재한다.
/var/log : 각종 로그들이 존재하는 디렉토리이다.
※한 가지 유의할 점은 이 디렉토리 명들과 사용 용도가 절대적인 것은 아니며, 유닉스 시스템은 대소문자를 구분
한다는 사실이다.
0.2.1.2. 현재 내가 위치하고 있는 디렉토리를 확인하고 싶다면 다음과 같은 명령어를 입력하면 된다.
0.2.2. 내가 알고 있는 명령어는 어디에 존재하는지 궁금하다!
위의 명령어를 입력하면 현재 디렉토리 내에 존재하는 파일들이 나열된다.
0.2.2.2. 현재 디렉토리에는 내가 찾고자 하는 파일이 없다. 파일 시스템 전체에서 특정 문자열을 포함하는 파일을
찾고 싶다면?
앞서 솔라리스 시스템의 네트워크 설정 편에서 간략히 언급한 적이 있다. 루트 이하의 모든 파일을 find하되 이
결과를 파이프를 이용해 grep라는 명령어로 보낸다. grep명령어는 파이프를 통해 받은 문자열이 포함된 내용을
잡아낸다고 이해하도록 하자.
※두개 이상의 명령어를 사용하면서 | <- 파이프 문자를 사용하는 경우는 상당히 많다. 그리고 기본 파이프를 사
용하는 방법은 대개 같으므로 꼭 익혀두도록 하자. 대표적인 예로 ls | more 등을 들수 있다.
0.2.3.1. 현재 나는 / 디렉토리에 위치한다. /var/log 디렉토리로 이동하고 싶다!!
cd라는 명령어를 이용한다. cd는 Change Directory 의 머리글자이다.
절대 경로를 이용하는 방법이다. /var/log 라는 경로는 해당 시스템 내에선 언제 어디서도 변하지 않는다. 따라서
현재 내가 위치한 디렉토리가 어디가 됐건 위의 명령어를 입력하면 /var/log 디렉토리로 이동하게 될 것이다.
이경우는 절대경로를 이용하는 방법과는 달리 결과 값이 변할 수 있다. 현재 내가 있는 디렉토리가 /home디렉토
리인데 그 하위에 var디렉토리가 있고 또 그 하위에 log 디렉토리가 있다면 최종 결과값은 /home/var/log 에 위
치한 자신을 발견하는 것이다.
0.2.3.2 하위의 디렉토리로 이용하는 방법은 알았다. 그러면 상위로 이동하려면 어떻게 할것인가?
간단하다. 0.2.3.1.의 명령어를 입력하면 현재 위치와 상관 없으니 상위디렉토리의 절대 경로명만 적어주면 된다.
아~ 타이핑하기 너무 길다고?
(dot 문자 X2. ‘점’이다. ‘점’) 점 두 개가 무어냐고? ls -l 이라고 타이핑 해봐라. 출력 결과중에 ‘.’ 과 ‘..’ 이 보일
것이다. ‘.’은 현재 디렉토리의 심볼릭 링크이고, ‘..’은 부모(상위) 디렉토리의 심볼릭 링크이다. 심볼릭 링크가 뭐
냐고? 그냥 간단하게 ‘바로가기’정도로 생각하자. 지금 이 장의 내용이 유닉스 전체를 다루는 것은 아니지 않은
가? 차후 다루게 될 장에서 자세히 설명토록 하겠다.
0.2.4.1. 사용자의 계정을 추가하는 방법
-m : skell디렉토리를 사용하겠다는 의미이다. skell의 사전적 의미는 ‘부랑자’라는 뜻으로써 최초 사용자가 생성
될 경우 초기 값으로 사용하게 될 사용자 환경 설정 파일을 담는 디렉토리를 의미한다.
필수 사항은 아니지만 일일이 사용자 환경 설정 파일을 입력하기는 귀찮으니 지정해두는게 편하다.
-k : -m으로 사용하겠다고 했으니 그 위치를 지정해줘야 한다.
-d : 사용자 홈 디렉토리를 설정하는 부분이다.
-g : 사용자가 속할 그룹을 지정하는 부분이다.
HAEDONG : 사용할 계정 이름을 입력한다.
0.2.4.2. 삭제를 원한다면
0.2.4.3. 사용자 정보를 수정하기를 원한다면?
-c : 사용자 코멘트를 넣는다. 아이디만으로 구분이 안될 경우를 위해 사용하는 이름이라고 생각하자.
나머지 옵션은 useradd와 같다.
0.2.4.4. 사용자 암호 설정
로그온 한 사용자 프롬프트에서 passwd만 입력해도 똑같은 결과를 얻을 수 있다.
명령어를 입력하면 2번째행이 출력되므로 패스워드 입력, 재입력, 성공 메시지.
0.3. 소프트웨어를 추가하는 방법.
유닉스와 리눅스는 소스가 공개 되어있다. source.c 의 형태로 우리가 자주 보는 c혹은 c++등으로 만들어진 코
드파일이 공개되어있다는 말이다. 이들을 구해서 직접 컴파일 해서 사용하는 것과 별도로 배포되는 배포 패키지
를 구해서 설치하는 방법, 즉 패키지 매니저를 사용하는 방법 두가지가 있다.
0.3.1. 레드햇 계열의 배포본은 RPM (Redhat Package Manager) 데비안 계열은 .deb로 배포된다. 업데이트 및 설
치 매니저로는 YUM(Yellowdog Update Manager : 레드햇 계열용)과 apt-get과 synaptic(GUI)의 데비안 계열
용 등이 있다.
0.3.2. 솔라리스의 경우 설치된 패키지를 확인하기 위한 명령어로는 아래와 같은 것을 사용한다.
아마도 미처 다 읽어보기도 전에 엄청난 내용이 지나갔을 것이다. 파이프를 사용하자. 0.3.3. ssh 데몬을 설치하기 위해 openssh-5.0p1-sol8-sparc-local 패키지를 얻었다. 이것을 설치하는 명령어는
다음과 같다.
0.3.4. 필요없는 패키지의 삭제를 위한 명령어이다.
0. 기본적으로 리눅스 시스템에 로그온 하게 되면 만나는 쉘 프롬프트이다.
0.1. 쉘(shell)이란 무엇인가?
많이 접해본 대로 ‘명령어’ 해석기 이다. 커널과 사용자간에 존재 하는 녀석으로써 과거에 도스를 사용하던 시절
에 많이 본 c:\> 이 녀석을 출력해주던 놈이 쉘이다. 쉽게 설명하자 하면 컴퓨터는 on/off로 구분된 이진수로
구성된 명령어만을 이해 할 수 있도록 만들어져 있는데 사람은 이를 잘 모르기 때문에 인간의 언어로 구성된 명
령어를 타이핑 하면 이것을 컴퓨터가 아는 언어(엄밀히 말하자면 인스트럭션 셑에 근접한)로 바꿔주는 녀석이라고
생각하면 된다.
당연히 쉘의 종류엔 여러 가지가 있으며 우리가 유닉스, 리눅스를 접할 때 기본적으로 만나는 녀석은 대개 배쉬
(bash) 쉘이다.
0.1.1. #은 root. 즉 Super-User. 다시 말해 Administrator. 한국말로 ‘시스템 관리자’를 의미한다. 시스템 내에서
Super-User는 모든 권한을 가진다. 삭제 할 수 없는 파일은 없으며(물론 현재 메모리에 로드된 프로세스와 관
련된 파일이나 스왑 데이터들은 삭제 할 수 없다. 그렇다고 절대 불가능한 것은 ‘아니다.’)볼 수 없는 내용도 없
다. 하지만 당신이 시스템을 구축한 사람이 아니라면 애석하게도 root의 프롬프트 대신 다음의 프롬프트를 접하
게 될 것이다.
0.1.2. $는 일반 유저를 의미한다. Super-User가 허락한 권한만을 가지고 시스템을 운영 할 수 있다. 하지만 권한
에 따라서 꼭 위 두가지 문자만 사용해야만 하는 것은 아니다. 사용자의 마음대로 바꿔서 사용할 수도 있다.
0.2. 유닉스 시스템에서 사용하는 명령어는 무엇이 있는가? 유닉스 시스템에서는 Microsoft사의 시스템처럼 확장자
(file.exe .뒤의 문자세개)로 구분하지 않는다. 대개의 명령어들은 /bin 디렉토리 아래에 존재하며, 시스템 설정
과 관련된 명령어들은 /sbin 디렉토리, 그 외 다른 디렉토리에 존재하기도한다. 하지만!! 자주 사용하는 명령어
들은 위의 두 개 디렉토리에 거의 들어가 있으며, 그 외의 명령어들은 사용자가 설치하면서 어디에 설치되는지를
알기 때문에 어디있는지 고민해야 할 필요는 없다.
0.2.1 현재 내가 있는 디렉토리 상의 위치는?
0.2.1.1 먼저 유닉스 시스템의 범용 디렉토리 위치에 대해 ‘간략하게’ 보도록 하자.
/ : 최상위 디렉토리이다.
/bin : 앞서 언급한 대다수의 일반 명령어들이 존재한다.
/dev : 시스템에 연결된 디바이스 목록이 존재한다.
/export/home : 솔라리스 8의 경우는 사용자 디렉토리가 존재하며, 리눅스 시스템의 경우는 /home이다.
/etc : 윈도우 시스템의 제어판이라고 생각하면 쉽다. 시스템 관련 설정 파일들이 존재한다.
/lib: 시스템 라이브러리등이 존재한다.
/mnt : 일반적으로 분리 가능한 디바이스를 마운트 할 디렉토리를 생성하기 위해 사용한다.
/opt : optional 디렉토리로 추가적 프로그램 등을 설치하기 위함이지만 사용빈도는 낮은 편이다.
/proc: process관련 가상 디렉토리로서 생성된 프로세스들의 PID가 존재한다.
/sbin : 시스템 설정과 관련된 명령어 파일들이 존재한다.
/usr : 추가 설치된 프로그램들이 설치되는 장소이다.
/var : variable 디렉토리. 수시로 변하는 파일들이 존재한다.
/var/log : 각종 로그들이 존재하는 디렉토리이다.
※한 가지 유의할 점은 이 디렉토리 명들과 사용 용도가 절대적인 것은 아니며, 유닉스 시스템은 대소문자를 구분
한다는 사실이다.
0.2.1.2. 현재 내가 위치하고 있는 디렉토리를 확인하고 싶다면 다음과 같은 명령어를 입력하면 된다.
0.2.2. 내가 알고 있는 명령어는 어디에 존재하는지 궁금하다!
위의 명령어를 입력하면 현재 디렉토리 내에 존재하는 파일들이 나열된다.
0.2.2.2. 현재 디렉토리에는 내가 찾고자 하는 파일이 없다. 파일 시스템 전체에서 특정 문자열을 포함하는 파일을
찾고 싶다면?
앞서 솔라리스 시스템의 네트워크 설정 편에서 간략히 언급한 적이 있다. 루트 이하의 모든 파일을 find하되 이
결과를 파이프를 이용해 grep라는 명령어로 보낸다. grep명령어는 파이프를 통해 받은 문자열이 포함된 내용을
잡아낸다고 이해하도록 하자.
※두개 이상의 명령어를 사용하면서 | <- 파이프 문자를 사용하는 경우는 상당히 많다. 그리고 기본 파이프를 사
용하는 방법은 대개 같으므로 꼭 익혀두도록 하자. 대표적인 예로 ls | more 등을 들수 있다.
0.2.3.1. 현재 나는 / 디렉토리에 위치한다. /var/log 디렉토리로 이동하고 싶다!!
cd라는 명령어를 이용한다. cd는 Change Directory 의 머리글자이다.
절대 경로를 이용하는 방법이다. /var/log 라는 경로는 해당 시스템 내에선 언제 어디서도 변하지 않는다. 따라서
현재 내가 위치한 디렉토리가 어디가 됐건 위의 명령어를 입력하면 /var/log 디렉토리로 이동하게 될 것이다.
이경우는 절대경로를 이용하는 방법과는 달리 결과 값이 변할 수 있다. 현재 내가 있는 디렉토리가 /home디렉토
리인데 그 하위에 var디렉토리가 있고 또 그 하위에 log 디렉토리가 있다면 최종 결과값은 /home/var/log 에 위
치한 자신을 발견하는 것이다.
0.2.3.2 하위의 디렉토리로 이용하는 방법은 알았다. 그러면 상위로 이동하려면 어떻게 할것인가?
간단하다. 0.2.3.1.의 명령어를 입력하면 현재 위치와 상관 없으니 상위디렉토리의 절대 경로명만 적어주면 된다.
아~ 타이핑하기 너무 길다고?
(dot 문자 X2. ‘점’이다. ‘점’) 점 두 개가 무어냐고? ls -l 이라고 타이핑 해봐라. 출력 결과중에 ‘.’ 과 ‘..’ 이 보일
것이다. ‘.’은 현재 디렉토리의 심볼릭 링크이고, ‘..’은 부모(상위) 디렉토리의 심볼릭 링크이다. 심볼릭 링크가 뭐
냐고? 그냥 간단하게 ‘바로가기’정도로 생각하자. 지금 이 장의 내용이 유닉스 전체를 다루는 것은 아니지 않은
가? 차후 다루게 될 장에서 자세히 설명토록 하겠다.
0.2.4.1. 사용자의 계정을 추가하는 방법
-m : skell디렉토리를 사용하겠다는 의미이다. skell의 사전적 의미는 ‘부랑자’라는 뜻으로써 최초 사용자가 생성
될 경우 초기 값으로 사용하게 될 사용자 환경 설정 파일을 담는 디렉토리를 의미한다.
필수 사항은 아니지만 일일이 사용자 환경 설정 파일을 입력하기는 귀찮으니 지정해두는게 편하다.
-k : -m으로 사용하겠다고 했으니 그 위치를 지정해줘야 한다.
-d : 사용자 홈 디렉토리를 설정하는 부분이다.
-g : 사용자가 속할 그룹을 지정하는 부분이다.
HAEDONG : 사용할 계정 이름을 입력한다.
0.2.4.2. 삭제를 원한다면
0.2.4.3. 사용자 정보를 수정하기를 원한다면?
-c : 사용자 코멘트를 넣는다. 아이디만으로 구분이 안될 경우를 위해 사용하는 이름이라고 생각하자.
나머지 옵션은 useradd와 같다.
0.2.4.4. 사용자 암호 설정
로그온 한 사용자 프롬프트에서 passwd만 입력해도 똑같은 결과를 얻을 수 있다.
명령어를 입력하면 2번째행이 출력되므로 패스워드 입력, 재입력, 성공 메시지.
0.3. 소프트웨어를 추가하는 방법.
유닉스와 리눅스는 소스가 공개 되어있다. source.c 의 형태로 우리가 자주 보는 c혹은 c++등으로 만들어진 코
드파일이 공개되어있다는 말이다. 이들을 구해서 직접 컴파일 해서 사용하는 것과 별도로 배포되는 배포 패키지
를 구해서 설치하는 방법, 즉 패키지 매니저를 사용하는 방법 두가지가 있다.
0.3.1. 레드햇 계열의 배포본은 RPM (Redhat Package Manager) 데비안 계열은 .deb로 배포된다. 업데이트 및 설
치 매니저로는 YUM(Yellowdog Update Manager : 레드햇 계열용)과 apt-get과 synaptic(GUI)의 데비안 계열
용 등이 있다.
0.3.2. 솔라리스의 경우 설치된 패키지를 확인하기 위한 명령어로는 아래와 같은 것을 사용한다.
아마도 미처 다 읽어보기도 전에 엄청난 내용이 지나갔을 것이다. 파이프를 사용하자. 0.3.3. ssh 데몬을 설치하기 위해 openssh-5.0p1-sol8-sparc-local 패키지를 얻었다. 이것을 설치하는 명령어는
다음과 같다.
0.3.4. 필요없는 패키지의 삭제를 위한 명령어이다.
# by | 2008/07/26 02:47 | 지식-컴퓨터일반 | 트랙백 | 덧글(0)






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]