리눅스에서 사용자 계정을 관리하는 명령들은 사용법이 어렵지는 않으나 평소에 쓸

일이 거의 없기 때문에 기억하기가 쉽지 않다. 필수적인 명령어 몇 개와 옵션만 알고

있다면 사용자 관리만큼 단순한 작업도 없다. 단, 사용자 계정과 연결된 홈 디렉토리에

영향을 미치는 작업이나 사용자 암호와 관련된 작업을 할 때는 조심 조심^^


1 [사용자 계정 만들기]

사용자 계정을 새로 만들 때는 useradd 명령을 사용한다. '-m' 옵션을 사용하면

사용자 홈 디렉토리도 함께 만들어진다.

$ sudo useradd -m webtob


2 [사용자 계정 확인하기]

사용자 계정 정보를 확인 할 때는 '/etc/passwd' 파일을 살펴보면 된다. cat 명령으

로 이 파일의 내용을 출력해 보면 새로운 사용자가 추가된 것을 알 수 있다.

출력된 사용자 계정 정보에 대한 설명은 순서대로 다음과 같다.


계정이름, 암호(표시안함),UID(사용자ID),GID(그룹ID),설명(생략가능),홈디렉토리,

로그인쉘(생략가능)


3 [사용자 암호 설정]

새로 추가된 사용자 계정에는 암호가 없는 상태이다. passwd 명령으로 암호를 설

정한다.


4 [사용자 계정 삭제]

사용자 계정을 삭제할 때는 userdel 명령을 사용한다. '-r' 옵션을 추가하면 사용자

의 홈 디렉토리도 함께 삭제할 수 있다.


사용자 비밀번호(암호)를 관리하는 파일은 '/etc/shadow' 로, 이 파일에는 비밀번호가

암호화된 상태로 표시되어 있고 비밀번호의 유효 기간 등 부가 정보도 저장되어 있다.

이 파일에 대한 read/write 권한은 오직 root 권한으로만 가능하다.


    * 쉘 스크립트(Shell Script)란 ?

쉘 스크립트를 이해하려면 먼저 스크립트(Script)가 무엇인지 이해해야 한다.
스크립트란 일반적으로 인터프리트(interpret) 방식으로 동작하는 컴파일되지 않은 프로그램이라고 이해하면 된다. 즉 "프로그램의 한 라인을 읽어
해석하고 실행하는 과정을 반복하도록 만들어진 프로그래밍 언어로 작성된 컴파일되지 않은 파일에 저장된 프로그램"이라는 의미다.

==> 텍스트 형식으로 저장되는 프로그램으로서 한줄씩 순차적으로 읽어 실행되도록 작성된 프로그램이다.

스크립트라는 단어 앞에 여러가지 수식어가 붙는다. 이 수식어는 바로 스크립트를 읽어 실행해주는 인터프리트 엔진을 말한다고 보면 된다.
즉 쉘스크립트는 운영체제의 쉘 즉 bash, ksh, csh 등이 읽어 실행해주는 스크립트 언어이고 펄 스크립트는 perl 이라고하는 인터프리트 엔진이 읽어
실행해주는 스크립트 언어이다. 자바 스크립트는 웹브라우저가 실행해 준다.


C 언어와 쉘스크립트는 어떻게 다를까?

    - C 언어로 작성된 프로그램은 컴파일하여 기계어로 변환된 목적파일로 만들어준 뒤 링크 과정을 거치고 실행퍼미션을 주어야만
      실행이 가능하지만 쉘스크립트로 작성된 파일은 이러한 과정이 필요없고 실행퍼미션만 주면 된다.
     
    - C 언어로 작성된 프로그램은 실행을 위해 컴파일되면 vi, cat 과 같은 명령으로 내용을 확인할 수 없는 바이너리 구조로 변형되지만
      쉘 스크립트는 파일의 변환 과정이 없다.
   
    - C 언어로 작성된 프로그램은 기계어로 변환되었기 때문에 커널에 의해 실행되지만 쉘 스크립트는 쉘(bash, sh, ksh)이 한줄씩 읽어 실행한다.
   
    - C 언어로 작성된 프로그램은 정식 프로세스로 생성되지만 쉘 스크립트로 작성된 프로그램은 이름은 보이지만 정식 프로세스는 아니다.

    * 쉘의 정의

쉘(Shell)은 운영체제에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램이다.
쉘은 Unix 나 리눅스에만 있는것은 아니며, Windows 운영체제나 다른 운영체제에도 Shell 은 필수 요소.

운영체제는 로그인한 사용자가 없다면 하나의 쉘도 실행되지 않은 상태이다.
사용자가 로그인을 시도하면 운영체제는 ID와 패스워드를 받아들이는 로그인 프로그램을 실행하게 되고, 사용자가
입력한 ID와 패스워드를 검증한 뒤 정상적인 사용자라면 쉘을 실행하여 사용자 세션을 쉘에게 넘겨준다.


    * 역활

-. 사용자가 입력한 명령을 해석하여 대신 실행해주는 것.
    쉘 내부 명령어 : 스스로 실행하고 결과를 화면에 표시.
    쉘 외부 명령어 : PATH 환경변수에 지정된 경로에서 입력 받은 명령과 같은 파일을 찾아 exec() 시스템콜을 호출하여
                     실행한 뒤 키보드와 마우스 등의 입력장치와 모니터에 해당하는 표준 출력장치의 제어권을 해당 프로그램에게 넘겨준 뒤
                     프로그램이 끝날 때 까지 대기.


    * 쉘의 종류

-. Unix/Linux : ps 명령을 실행하면 보이는 프로세스 중에서 bash, sh, ksh, csh 등
-. Windows : 작업관리자에서 볼수 있는 explorer.exe, cmd.exe 등


    * 쉘의 환경변수

쉘은 사용자가 임의로 변경이 가능한 여러가지 환경변수를 사용한다. 하지만, 미리정의된 환경변수의 이름을 변경하면 안된다.(할수도 없다)
환경변수는 쉘의 종류에 따라 설정/확인하는 방법이 다르다. (bash-env, csh-set)

사용자와 운영체제 사이에서 사용자가 입력한 명령어를 신속하게 찾고 운영체제와 사용자 그리고 사용자가 실행한 다른 프로그램과의 소통을 위해 사용하는 것이 환경변수이다.
환경변수들은 사용자가 읽을 수만 있는 것과 변경이 가능한 것이 있는데, 대표적인 환경변수는 PATH 가 있다.
환경변수 PATH는 사용자가 입력한 명령이 내부 명령어인지 확인하고 아닐 경우 해당 명령은 외부명령어(실행파일)인 것으로 간주.


    * 쉘 환경변수의 설정

쉘 환경변수는 로그인 할 때 설정된다. 사용자 환경은 프로파일에서 설정되는데 프로파일은 글로벌 프로파일과 계정 프로파일 두가지가 있으며,
이 프로파일의 파일 위치와 이름은 운영체제와 쉘의 종류에 따라 조금씩 다르다.

sh, ksh : /etc/profile , 사용자 홈디렉토리의 .profile
bash : /etc/profile , /etc/bashrc 두 개의 파일과 사용자 홈디렉토리의 .bashrc가 환경 변수가 설정될 수 있는 파일.
csh 은 /etc/csh.login ( Unix 종류와 버전에 따라 다르나 일반적으로 login 이라고 붙음 )과 사용자 홈디렉토리의 .cshrc

 

+ Recent posts