bxm's IT Story

Linux 이론#5 - Shell, 기타 명령어 본문

서버/Linux

Linux 이론#5 - Shell, 기타 명령어

bxmsta9ram 2021. 6. 23. 15:33

 


[쉘_Shell]

 

 

1. 로그인 쉘

   : 로그인 쉘은 일반적으로 사용자가 로그인을 하면서 가지는 쉘이라고 할 수 있다.

     사용자가 리눅스에 로그인을 하게 되면 자동적으로 실행되는 것이다.

     각 사용자가 사용할 기본적인 쉘은 /etc/passwd의 마지막 부분에 명시되어 있다.

     ex) tail -1 /etc/passwd

 

 

2. 서브 쉘

   : 사용자의 목적에 따라 별도로 실행시켜 사용하는 방법도 있다.

     실행시간이 오래 걸리는 작업을 진행 중일 때, 새로운 쉘을 실행하여 다른 작업을 실행할 있다. 이처럼 사용자의 

     필요에 따라 추가적으로 쉘을 실행시키는 것을 서브 쉘이라고 한다.

 

 

  • echo $SHELL

현재 사용하는 SHELL이 나옴.

 

   ## 사용자인 bxmsta가 사용하는 SHELL인 Bash SHELL이 뜸.

 

  • chsh -l (check shell) - sh

sh(쉘), tcsh(tc쉘)로 드나드는 것을 확인할 수 있다!

## 로그인 쉘을 바꾸려면

chsh -s /bin/sh

tail -1 /etc/passwd

## 아직 바뀌지 않음. 그래서 한번 나가볼 것임.

바뀌지 않음.

## exit 연타후 재접속하니, root의 쉘이 바뀌어져 있는 것을 확인할 수 있다.

less /etc/passwd


chsh -s /bin/bash

 

## 다시 원상복구!!

bash로 재변경 되었다!



  • FREE 

1.5GB로 설정해 놨더니,

       - Shared : 공유 메모리

       - buff : 현재 캐시된 메모리

       - available : 사용 가능한 메모리


  • TOP : 시스템 사용률을 볼 수 있다.

          :q 하면 나와짐.

 

 

 


  • RDATE

rdate -p time.bora.net : time 서버의 현재 시간을 알려줌.

 

## time 서버의 시간과 리눅스 서버 시스템 시간을 동기화 시켜주려면

## rdate -~s time.bora.net


  • FIND  -->  find [경로][옵션][찾을 파일/디렉토리 명]

      : 이름, 소유자, 타입 등과 같은 다양한 옵션으로 수 많은 파일 중에서 원하는 파일과 디렉토리를 찾아준다. 

        <옵션>

        - name 옵션 : 사용자, 파일, 디렉토리 이름을 기준으로 파일을 찾는다.

           ex1) find / -name test : 지정한 이름을 가진 파일/디렉토리를 찾는다.

           ex2) find / -name test -type d : 지정한 이름의 디렉토리를 검색

           ex3) find / -name test -type f : 지정한 이름의 파일을 검색

 

        - size 옵션 : +(초과), -(이하), n(정확한 값), c(바이트), k(킬로바이트)

           ex) find -size -80c : 80바이트 이하의 파일을 검색한다.

            

        - user 옵션

           ex) find -user root : 

 

   

find / -name /etc/*.conf     ## 앞에 이름이 뭐였든간에, root 디렉토리부터 하위 디렉토리까지 확장명이 .conf인 모든                                            파일을 찾는 명령어임.

 

find /etc -name *.conf | more   ## 위에가 너무 많아서 줄였음.


  • GREP(Global / Regular Expression / Print)

      :  유닉스의 텍스트 편집기에서 쓰이는 연속적인 지시어이다. grep 명령어는 파일이나 표준 입력을 검색하며 주어진

         정규 표현식과 맞는 줄을 찾아 프로그램의 표준 출력으로 출력한다.

         ex) grep -i apple fruitlist.txt : 'fruitlist.txt' 파일에서 대소문자 구분 않고, 특정 문구 ' *apple* ' 을 포함한 문자열을

                                                                                                                                              찾는다.

 grep -i root /etc/passwd : root라는 문자를 /etc/passwd에서 찾고 싶다.


  • WHO

      :  현재 리눅스 시스템에 접속해 있는 사용자들을 확인한다. 즉, 현재 접속해 있는 사용자의 계정명, 터미널 정보,

         접속시간, 접속한 서버 정보 등을 확인하는 명령이다. root 관리자뿐 아니라 일반 계정 사용자도 사용이 가능하다.

         root 관리자뿐 아니라, 일반 계정 사용자도 사용이 가능하다.

         옵션을 사용하지 않으면 현재 서버에 접속한 사용자 정보를 확인하라는 의미이다.

가상 터미널(pts_슈도 터미널)의 사용자와, 콘솔 단자의의 사용자를 보여준다.

    'whoami' 와 'who am i' 의 차이점

whoami 항상 유효한 사용자명이 나타난다. 예컨대, 'root' 계정으로 로그인한 사람이 'test'라는 사용자로 전환한
경우, 전환된 'test'라는 사용자명의 결과가 출력된다.
who am i 초기 로그인한 'root' 계정이 출력된다.

나갔다가 다시 해보겠다!

 

                                                현재 bxmsta 로 들어갔다가 root 로 갔다.

whoami : root (최종 사용자) // who am i : bxmsta (최초 사용자)

 

    - who -q : 현재 로그인한 사용자가 몇 명인지 나옴.

 

    - w (Who is logged on and What they are loging)

       : 현재 서버에 접속한 사용자의 접속정보 및 작업정보가 확인되면 서버 관리자에 의해 주로 사용되는 명령이다.

 

   - users : 현재 서버에 접속해 있는 사용자들의 계정만을 확인하는 명령어이다. 

              만약, 특정 파일을 지정한 경우에는 그 파일을 참조하여 결과를 출력한다. 시스템을 사용하는 사용자의 이름

              목록을 빈칸으로 구분하여 한 줄에 출력하며 한 사용자가 여러번 로그인했다면, 그 수 만큼 출력한다.

bxmsta가 2번 로그인 했다.


wall : 현재 시스템에 접속한 모든 사용자들에게 원하는 메시지를 보낸다.

       ex) wall "Good Luck"

 

 

echo

## 특정 사용자에게만 보내고 싶다면?

ex) echo "Hi nice to meet you ^.^" > /dev/pts/0 : pts/0에 접속해있는 Sunny한테 보내고 싶다면


사용자 계정

tail /etc/passwd

          bxmsta : 사용자 명

                  x : 패스워드

             1000 : User ID

             1000 : Group ID

          bxmsta : Comment (주석)

/home/bxmsta : 사용자의 home 디렉토리

      /bin/bash : 쉘(명령어 해석기)의 경로, [사용자 계정 정보가 이 곳에 저장되어 있음.]

cat /etc/shadow  (passwd와 똑같이 계정 정보이지만, shadow는 암호화 되어있음.)

  shadow : 안전하게 저장되어 있어야 할 정보들

## 비밀번호가 저장이 안 되어 있으면 [!!_느낌표 2개]로 나오고, bxmsta 처럼 비밀번호가 저장되어 있는 것은

    '난수' 형태로 나온다.  

##     !! : 암호

  18800 : 암호 생성 일자 (bxmsta 같은 경우에는 18800이 없고 빈칸이다.) 1970년 1월 1일부터 시행 된다.

             18800일 = 51년 ㅇㅇ일이 지났다는 뜻임.

 

18800 : 암호 생성 일자

      0 : 암호 변경에 걸리는 뭐 어쩌구였음.

99999 : 암호 변경 없이 사용할 수 있는 유효기간

      7 : 만료일 지났을 시 '만료일 경고 일 수' 


## 사용자 생성

useradd [옵션][인자값][사용자명]

             -u : 사용자의 uid 정보를 임의로 변경

             -g :             주 그룹 지정시 사용

             -G :            보조그룹 지정시 사용

             -d :             홈 디렉토리 지정

             -s :              로그인 쉘 변경

             -c : 사용자 계정에 대한 코멘트

            ex1) useradd user1

            ex2) useradd -c "Lucky guys" user2

            ex3) useradd -u 1100 -g mygroup user3

            ex4) useradd -d /home/myhome user4

 

 

 

useradd -c "Lucky guys" user1

## 일반 사용자는 1,000번부터 사용하게 되는데 bxmsta가 이미 1,000번을 사용하고 있기 때문에, 1,001번을 할당 받음.

## 그리고 Lucky guys 라는 Comments도 붙었다.

 

 

useradd -d /temp user2

tail -2 /etc/passwd

## -d 로 하니까 temp로 설정이 되었음.

 

 

그렇다면 존재하지 않는 디렉토리로 설정하면 어떻게 될까?

useradd -d /kedu/user3               ## 선생님은 안되서 아래의 명령어로 하셨는데, 나는 된다 ...?

useradd -md /kedu/user3 user3

 

useradd -md /kedu/user4 user4

 

mkdir -p /kedu/user5

useradd -d /kedu/user5 user5


id user4

 

groupadd g6

useradd -g g6 user6

id user6


## 사용자 제거

userdel 

         ex1) userdel user1

         ex2) userdel user2

         ex3) userdel user3

         ex4) userdel user4

         ex5) userdel user5

 


 

과제 : user1 사용자 생성시 홈 디렉토리를 /home/myuser1 으로 하고, 기본 그룹을 mygroup으로 지정하세요.

## 디렉토리랑 그룹 만들어야함.

groupadd mygroup

mkdir -p /home/myuser1

useradd -d /home/myuser1 -g mygroup user1

그룹이 mygroup으로 되어 있다.

 

 

useradd -D

이 조건으로 만들어진다?

 

리눅스 기본 명령어.txt
0.00MB