■ Linux에서 ip 주소를 알아내는 방법

1,2의 경우 동일 주소 결과값이 나올 수도 있지만 대부분의 경우 다른 ip 주소를 return 받는다. 

 

1.   $ ip addr                             // inet 쪽을 보자.

- 사설(private) ip라고 보면된다.  

2.   $ curl ipinfo.io/ip                   // 쉘에서 curl 명령어를 사용하여 http 프로토콜을 사용하여 결과를 요청 

-  ipinfo로 접속한 실제 ip의 결과값을 알려준다. 


$ curl http://www.google.com                 // 쉘상에서 google.com에 접속한 결과를 표시한다.



■ 정의

  : 리눅스에서 curl 이라는 http 메시지를 쉘상에서 요청하여 결과를 확인하는 명령어


■ 개요 

  :  curl 명령어는 http를 이용하여 경로의 데이터를 가져온다. 


■ 사용법 

  : $ curl [ 옵션 ] [ URL ]


■ POST / GET 

1. POST 메소드 사용

  $ curl -d "id=count" "http://192.168.0.100/samba/checkList.jsp"

 

2. GET 메소드 사용

  $ curl "http://192.168.0.100/samba/checkList.jsp?id=count"


■ 내용 

: 문서 or 파일을 서버에서 가져온다.

: 지원 프로토콜은 http, https, ftl, file, imap.. 등이 있다.


■ 기타 옵션 

-i 

: -i 는 결과에서 header와 body만 표시 

: -I 는 결과에서 header만 표시


-s

:  --silent 옵션을 이용하여 부가 정보 없이 조회가 가능 

$ curl -s www.google.com

$ curl --silent www.google.com


I. Linux add user to group 

■ Linux 에서 특정 사용자계정을 그룹(Group)으로 지정해주기 (두 가지 방법)

1. $ sudo usermod -a G  [ group 명 ] [ user ]

2. # usermod -a G  [ group 명 ] [ user ]


ex) sudo 명령어를 사용할 수 있도록 chpark 계정을 sudo Group으로 부여해보자.

1. $ sudo usermod -a -G sudo chpark

2. # usermod -a G sudo chpark


■ 현재 perm 이라는 디렉토리가 있는데 그 밑에 있는 모든 directory 에 대하여 access  mode를 변경하고 싶다면 ? 

> perm

> test1

> this

> that 

> test2 

> test3


perm 하위로 존재하는 모든 디렉토리의 access mode를 변경하기 위해서 옵션 값에 R을 줘야한다.

※ R : recursive(재귀의) 의 약자 


$ chmod -R o+w perm       // perm 디렉토리 하위에 존재하는 디렉토리들도 동일하게 (디렉토리)권한을 변경 

※ other : user(owner)도 아니고, group도 아닌 계정


■ 디렉토리의 권한 

r : 해당 디렉토리의 파일들을 열람 가능한지의 여부

w : 파일을 제어 할 수 있는지의 여부 (생성, 삭제, 변경)

x : 해당 디렉토리에 cd 명령어를 통해 들어갈 수 있는지의 여부



■ 8진수를 사용하여 파일에 권한부여하기 

1. 비교 ) chmod a+r flower.txt   ( a: all의 약자,  o: other 의 약자,  u: user의 약자,  g: group의 약자 )

2. 8진수 사용 

$ chmod [8진수] [8진수] [8진수] flower.txt


0: none                               ---    

1: execute only                     --x

2: write only                        -w-

3: write & execute                 -wx

4: read only                         r--

5: read & execute                 r-x

6: read & write                    rw-

7: read & write & execute      rwx

■ 실행의 개념과 권한 설정

< 실행파일 만들기 >

$ touch test87.sh

< 내용 Start >

#!/bin/bash             // #! 뒤의 /bin/bash를 구동시켜 echo 가 가능하게 한것이다.

$ echo 'hello world'  

< 내용 End > 


./ : 현재 디렉토리를 의미 

#! : bin 밑에 bash라는 shell을 사용하여 해석되어야한다를 의미 


$ ls -l 

$ ./test87.sh                  // 현재 디렉토리의 test87.sh 를 실행하자.

permission denied          // permission을 거부한다.


Q. 어떻게 해야할까?

A. 해당 파일의 소유자라고 할지라도 x : excutable 실행가능한 권한을 부여해줘야한다.

$ chmod u+x test87.sh

$ ./test87.sh                 // 현재 디렉토리의 test87.sh 를 실행하자.

hello world                  // 더 이상 permission denied 가 발생하지 않는다.



■ 디렉토리의 권한

r : 해당 디렉토리의 파일들을 열람 가능한지의 여부

w : 파일을 제어 할 수 있는지의 여부 (생성, 삭제, 변경)

x : 해당 디렉토리에 cd 명령어를 통해 들어갈 수 있는지의 여부



UNIX

 1. Permission

 2. File & Directory

 3. Read & Write & Excute


■ access mode 

r : read

w : write

x : execute


◆ touch : 파일생성 

◆ cat : 파일내용 확인

※ cat 명령어는 텍스트로 된 파일일 경우 그 내용을 정상적으로 출력하지만 바이너리 파일일 경우에는 출력은 하지만 알아볼 수 없다.

그리고 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다.


ex) chPark 계정으로 접속하였다고 가정 

$ touch perm.txt                       // 파일 생성

$ echo 'hello world' > perm.txt    // 'hello world' standard output 를 perm.txt 로 redirection   

$ cat perm.text                         // perm.txt 내용 확인 (당연히 가능)

 ( ※ > 은 1> 과 같다. 1이 생략 되어있음.  2>: 은 standard error redirection 을 의미한다.  )  


ex) mgLee 계정으로 접속하였다고 가정

$ echo 'hello world' > perm.txt

permission denied                     // redirection 거절 당함


파일정보 확인 

- rw-rw-r-- 1 chPark success 0 May 6 19:23 perm.txt

      1) 맨앞 - : type ( d: directory , -: file )

2)  rw- : user(owner) 권한  read, write

3)  rw- : group 권한  read, write

      4)  r-- : other 권한   read         (other: 소유자도, 그룹도 아닌 불특정 계정의 권한을 말한다.)

5)  chPark : owner 

6)  success : Group

7)  perm.txt : file 명 


권한 변경하기 (modify access mode)

     ex1) other 에게 read 권한을 부여하고 싶다면?

perm.txt 파일 소유자로 로그인  

      $ chmod o+r perm.txt       ( a: all의 약자,  o: other 의 약자,  u: user의 약자,  g: group의 약자 )


     ex2) user 에게 read 권한을 없애고 싶다면?

perm.txt 파일 소유자로 로그인  

      $ chmod u-r perm.txt        ( + : add , - : subtract )


■ ~ (물결) 

- 현재 접속한 계정의 home directory를 알려준다. 

- root 계정의 경우 일반 사용자와 달리 최상위 디렉토리밑에 곧바로 root 디렉토리가 홈디렉토리이다.

ex 1 ) root 계정 home : /root  ( 최상위 디렉토리 밑에 root 가 홈디렉토리이다. )

ex 2) (chPark)일반 계정 home : /home/chPark   (일반사용자의 경우에는 root 디렉토리에 접근 불가하다.)


■ (unix add user) 유닉스 시스템에서 사용자를 추가하는 방법

1) # useradd -m chPark

2) # passwd chPark 


■ (unix user sudo) user에게 super user와 같은 권한을 부여하는 방법 (즉, sudo명령어를 사용할 수있게 하는 권한 부여)

# usermod -a -G sudo chPark           ( G: group 을 의미 )

 여러명이 하나의 시스템(ex. 리눅스)을 이용할 때 권한, 복잡성, 위험성 등의 문제가 있다. 


■ id , who 

1) id 입력: 내가 접속한 계정 정보를 알 수 있다. 

2) who 입력:  현재 이 시스템에 접속한 user들을 알 수 있다. 


■ super user (수퍼유저)  vs  user (일반사용자)

1) super user 

- 기본적으로 root 가 super user이다. 

- 필요에 따라서 사용자에게 super user의 권한을 부여할 수 있다. 

- super user의 경우에는 root@ubuntu : ~#  '샾' 표시로 시작한다.

2) user 

      - 일반사용자의 경우에는 sudo를사용할 수 없다. 

- 일반사용자의 경우에는 people01@ubuntu : ~$ '달러'표시로 시작한다. 


■ su 명령어 (user 변경)

- su 명령어를 사용하여 user를 변경할 수 있다.

- su [option] [username]

ex) su - root   : root계정으로 접속계정을 변경한 것. ( - 기호는 관습적으로 써주자.)

- 접속계정을 변경한 후 exit을 누를경우에는 원래의 계정으로 되돌아간다. root >> chPark

■ sudo 명령어

- super user 권한을 받은 사용자의 경우에는 sudo 명령어를 사용하여 관리자의 권한으로 특정 프로그램을 실행하거나

명령어를 사용할 수 있다.

■ ; 과 &와 && 의 차이 를 알아보자.

1) ;     - 앞의 명령어가 실패해도 다음 명령어가 실행된다.

2) && - 앞의 명령어가 성공했을 때 다음 명령어가 실행

3) &   - 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 실행 


■ { } 를 사용하여 명령을 그룹핑 할 수 있다.


- mkdir test3 && { cd test3; touch abc; echo 'success87' }  || echo 'fail : can't make directory' ;


1) mkdir test3가 

2) 성공했을 때 cd test 3; touch abc 를 실행하고 success87 을 출력한다. 

3) 실패했을 경우엔 fail : can't make directory 를 출력한다.


※  현재 접속한 계정의 홈 디렉토리로 이동하기 위해서는 ~ 를 입력해주면된다. 


■ Cron : 특정프로그램을 정기적으로 실행하는 목적을 달성할 수 있다. 

 ex) 정기적으로 데이터 백업 

 - crontab -e 를 입력하여 정기적으로 수행될 작업에 대해 설정해줄 수 있다.

 - 아래와 같은 값을 줄 수 있다.


실습 : date 를 입력하면 현재시각이 출력된다.  이 출력되는 시각을 1분마다 date.log 파일에 append 해주고, append 된 정보를 화면에 출력해보자.

그리고 해당 프로그램이 에러가발생할 수 있으며 그 에러내용 또한 date.log 에 넣어보자. 


 1.  contab -e 

 2.  */1 * * * * date >> date.log               // 1분에 한 번씩 출력되는 현재시각을 date.log 에 append 한다. 

 3.  tail -f  date.log                                //  tail -f  : 새로된 추가된 내용들에 대하여 자동으로 화면에 refresh 해준다. 

 4. */1 * * * *  date >> date.log  2> &1      // Standard out error에 대하여 표준 출력을 하는 파일에 Redirection 해준다.

// 이 때 반드시 1앞에 &를 붙여줘야한다. 안그러면 1이라는 파일에 Standard out error를 Redirection하는 것이다.


+ Recent posts