반응형

nohup 

- 행업 시그널이 와도 무시하며 실행을 계속하는 명령어. 터미널이 끊겨도 계속 수행됨


&(백그라운드 프로세스) 

- 새로운 프로세스를 생성하여 작업을 수행시켜서 새로운 작업을 현재 세션에서 가능하도록 해주는 것.

- 언젠가 bash에서 "터미널 연결이 끊어져도 실행이 계속되는" 옵션이 디폴트가 되었음

반응형

'Programming > Linux' 카테고리의 다른 글

Linux - SSH  (0) 2015.07.13
Linux - Yum  (0) 2015.06.23
Linux - 심볼릭 링크, symbolic link  (0) 2015.03.19
Linux - scp 명령어  (0) 2015.02.27
alias 명령어  (0) 2015.02.26
반응형

SSH Key란?

서버에 접속 할 때 비밀번호 대신 key를 제출하는 방식이다. 

SSH Key는 언제 사용하는가?

  • 비밀번호 보다 높은 수준의 보안을 필요로 할 때
  • 로그인 없이 자동으로 서버에 접속 할 때

SSH Key가 동작하는 방식

SSH Key는 공개키(public key)와 비공개 키(private key)로 이루어지는데 이 두개의 관계를 이해하는 것이 SSH Key를 이해하는데 핵심이다. 키를 생성하면 공개키와 비공개키가 만들어진다. 이 중에 비공개키는 로컬 머신에 위치해야 하고, 공개키는 리모트 머신에 위치해야 한다. (로컬 머신은 SSH Client, 원격 머신은 SSH Server가 설치된 컴퓨터를 의미한다.)

SSH 접속을 시도하면 SSH Client가 로컬 머신의 비공개키와 원격 머신의 비공개키를 비교해서 둘이 일치하는지를 확인한다. 

SSH Key 만들기

SSH Key를 통해서 서버에 접속 할 때 Unix 계열(리눅스, 맥)에서는 ssh-keygen이라는 프로그램을 이용하면 된다. 윈도우 머신에서는 SSH Client 프로그램이 자체적으로 제공하는 키 생성 프로그램을 이용하면 된다. 각 프로그램의 메뉴얼을 참조하자. 이번 수업에서는 Unix 계열에서 key를 생성하는 방법을 알아본다. 

ssh-keygen 사용하기

아래와 같이 입력한다. -t  rsa는 rsa라는 암호화 방식으로 키를 생성한다는 의미다. 

1
2
[axl@asterisk1 axl]$ ssh-keygen -t rsa
Generating public/private rsa key pair.

SSH 키를 저장할 위치를 지정한다. 엔터를 누르면 기본 경로에 저장된다. 기본 경로는 로그인 한 사용자의 홈디렉토리 아래에 .ssh이다. ($HOME/.ssh) SSH Client는 기본적으로 이 디렉토리에 있는 키를 이용해서 인증을 시도한다. 

1
Enter file in which to save the key (/home/axl/.ssh/id_rsa): <return>

passphrase 를 입력한다. passphrase는 일종의 비밀번호로 비공개키를 입력한 값으로 암호화한다. 권장 값은 10~30 문자이고 생략 가능하다. 생략하면 이 부분이 보안 홀이 될 수 있기 때문에 주의한다. 자동 로그인을 원한다면 생략해야 한다. 

1
Enter passphrase (empty for no passphrase): <Type the passphrase>

비밀번호를 확인한다. 같은 값을 입력하면 된다. 아래와 같이 출력된다면 키가 생성된 것이다.

1
2
3
4
5
Enter same passphrase again: <Type the passphrase>
Your identification has been saved in /home/axl/.ssh/id_rsa.
Your public key has been saved in /home/axl/.ssh/id_rsa.pub.
The key fingerprint is:
0b:fa:3c:b8:73:71:bf:58:57:eb:2a:2b:8c:2f:4e:37 axl@myLocalHost

키를 확인한다. 

1
[axl@asterisk1 axl] ls -al ~/.ssh/

아래와 같이 출력되면 성공한 것이다. 

drwx------  2 egoing egoing 4096 Feb 18 18:54 .
drwxr-xr-x 16 egoing egoing 4096 Mar  1 06:02 ..
-rw-rw-r--  1 egoing egoing  790 Feb 19 06:04 authorized_keys
-rw-------  1 egoing egoing 1675 Feb 18 18:51 id_rsa
-rw-r--r--  1 egoing egoing  395 Feb 18 18:51 id_rsa.pub
-rw-r--r--  1 egoing egoing 2216 Feb 19 18:34 known_hosts

authorized_keys 파일은 없을수도 있다. 

각 파일에 대한 설명은 아래와 같다. 

id_rsaprivate key, 절대로 타인에게 노출되면 안된다.
id_rsa.pubpublic key, 접속하려는 리모트 머신의 authorized_keys에 입력한다.
authorized_keys리모트 머신의 .ssh 디렉토리 아래에 위치하면서 id_rsa.pub 키의 값을 저장한다. 자세한 내용은 다음 단락을 참조

.ssh 디렉토리는 매우 중요한 보안 정보가 담긴 디렉토리다. 따라서 퍼미션 설정을 꼭해야 하는데 아래와 같은 설정을 권장한다. 아래의 명령을 순차적으로 실행한다. 퍼미션에 대한 자세한 정보는 생활코딩 리눅스 수업을 참조한다. (리눅스 수업 바로가기)

1
2
3
4
5
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts

이제 id_rsa.pub 파일을 리모트 서버의 $HOME/.ssh/authorized_keys 파일에 추가해줘야 한다. 아래의 그림을 보자. 

SSH Server의 authorized_keys 의 내용이 SSH Client의 id_rsa.pub 파일과 같아야 한다. 그래서 ssh 접속을 할 때 id_rsa 파일과 authorized_keys 파일의 내용을 비교 할 수 있다. 일반적으로 SCP를 사용한다. SCP는 파일을 전송하는 프로그램인데, 아래와 같은 형식을 갖는다.

scp $HOME/.ssh/id_rsa 리모트 머신의 아이디@리모트 머신의 호스트 주소:저장할 파일

위의 형식에 따라서 로컬 머신의 id_rsa.pub 파일을 리모트 머신의 홈디렉토리로 전송해보자. 아래는 SSH Client가 설치된 로컬 머신에서 실행하는 명령이다.

1
scp $HOME/.ssh/id_rsa.pub egoing@egoing.net:id_rsa.pub

아래와 같은 메시지가 뜬다면 전송에 성공한 것이다. 

id_rsa.pub                                                                                       100%  395     0.4KB/s   00:00 

이제 원격 머신에서 전송한 id_rsa.pub 파일을 authorized_keys 파일에 추가해보자. 아래의 명령에서 cat는 뒤에 따라오는 파일의 내용을 화면에 출력하는 것이고, >> 는 cat이 출력한 내용을 authorized_keys 파일에 추가하는 것이다. 내용을 교체하는 것이 아니라 추가하는 것이라는 점에 주의하자. 만약 리모트 머신으로 접속하는 여러개의 로컬 머신이 있다면 각각의 로컬 머신의 id_ras.pub 파일을 authorized_keys에 추가해주면 된다. 

1
cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys

SSH를 이용해서 접속하기

접속을 시도한다. egoing.net에 접속을 한다고 하면 아래와 같다. 접속 방법은 SSH 클라이언트를 참고한다. (Mac리눅스)

1
ssh egoing.net

비밀번호 없이 접속 되었다면 성공적으로 설정한 것이다. 

만약 id_rsa 파일을 $HOME/.ssh/id_rsa에 만들지 않고 다른 디렉토리에 만들었다면 -i 옵션을 사용한다. 

홈디렉토리에 auth라는 이름의 파일에 id_rsa의 내용이 담겨 있다면 아래와 같이 한다. 

1
ssh -i $HOME/auth egoing.net

접속하는 과정에서 많은 오류 상황이 있을 수 있다. 이럴 때는 ssh의 옵션 중에 -v를 이용하면 어디에서 문제가 발생했는지 추적하는데 도움이 된다. 더 자세한 정보는 -vv, -vvv를 통해서 열람 할 수 있다. 

1
ssh -v egoing.net


출처 : https://opentutorials.org/module/432/3742

반응형

'Programming > Linux' 카테고리의 다른 글

Linux - nohup & 차이  (0) 2015.08.20
Linux - Yum  (0) 2015.06.23
Linux - 심볼릭 링크, symbolic link  (0) 2015.03.19
Linux - scp 명령어  (0) 2015.02.27
alias 명령어  (0) 2015.02.26
반응형

Yum은 Yellow dog Update라고도 하고 Duke University에서 RPM 설치를 개선하기 위해 개발한 패키지 관리자입니다.


Yum은 패키지 저장소를 수요되는 패키지를 검색하고 다운로드 하여 설치까지 처리하면서 패키지들의 의존성을 고려하여 설치할때 패키지 의존성에 대한 error를 줄일 수 있습니다. Red Hat Enterprise Linux 5에서는 Yum으로 패키지를 설치합니다.


Yum은 /etc/yum.conf라는 설정파일을 사용합니다. 자세한 내용은 yum(8) man page를 참조해주시길 바랍니다.


패키지 repository를 설정하는 여러가지 방법이 있습니다.

• 이미존재한 repository를 추가하여 패키지를 얻는 방법

• 새로운 repository를 설정하여 ISO에서 패키지를 얻는 방법

• RHN에 등록하여 패키지를 얻는 방법

새로운 repository를 설정하는 방법은 아래의 문서를 참조해주시길 바랍니다.

How can I add a new yum repository as a source to install software?(https://access.redhat.com/knowledge/node/9954)


Repository를 설정하여 DVD ISO에서 패키지를 얻는 방법은 아래의 문서를 참조해주시길 바랍니다.

How do I setup a yum or up2date repository to use a locally mounted DVD with Red Hat Enterprise Linux 4 and 5?(https://access.redhat.com/knowledge/node/9743)


System을 RHN에 register하는 방법은 아래의 문서를 참조해주시길 바랍니다.

How do I access Red Hat Network (RHN) to download software, updates, and security errata?(https://access.redhat.com/knowledge/node/5023)


Red Hat Network (RHN)의 repository를 접근하려면 반드시 RHN에 등록하여야 합니다. 자세한 부분은 RHN FAQ list(https://access.redhat.com/knowledge/node/15979)를 참조해주시길 바랍니다.


사용법

아래는 몇 가지 유용한 명령어입니다.


1) 패키지 설치:

yum install package

Example:

yum install httpd


2) 패키지 삭제:

yum remove package

Example:

yum remove httpd


3) 패키지 업데이트:

yum update package

Example:

yum update httpd


4) 패키지 검색:

yum search package

Example:

yum search httpd


5) 패키지 정보:

yum info package

Example:

yum info httpd


6) 특정단어가 포함 된 패키지 리스트:

yum list term

Example:

yum list httpd


7) 특정 파일을 제공한 패키지 검색:

yum whatprovides filename

Example:

yum whatprovides httpd.conf


8) 커널 패키지에 설치된 모든 패키지를 업데이트:

yum -y update

Example:

yum -y update


출처 : https://access.redhat.com/ko/node/82093 레드햇 공식 웹사이트

반응형

'Programming > Linux' 카테고리의 다른 글

Linux - nohup & 차이  (0) 2015.08.20
Linux - SSH  (0) 2015.07.13
Linux - 심볼릭 링크, symbolic link  (0) 2015.03.19
Linux - scp 명령어  (0) 2015.02.27
alias 명령어  (0) 2015.02.26
반응형

POSIX 호환 운영 체제에서 심볼릭 링크는 symlink 시스템 호출을 사용하여 만든다. ln이라는 셸 명령은 보통 하드 링크를 만들어내는 link라는 시스템 호출을 사용한다. ln -s 플래그가 지정되면 symlink() 시스템 호출이 대신 사용되면서 심볼릭 링크를 만들어낸다. 심링크는 U.C. 버클리의 4.2BSD 유닉스에 도입되었다.

다음의 명령은 명령 줄 인터페이스 (셸)에서 심볼릭 링크를 만들어낸다:

ln -s [대상 경로] [링크 경로]

대상 경로는 심볼릭 링크가 가리키는 상대 경로나 절대 경로이다. 일반적으로 대상은 존재하지만 심볼릭 링크는 존재하지 않는 대상을 가리키는데 사용할 수도 있다. 링크 경로는 심볼릭 링크의 경로이다.

심볼릭 링크를 만들면 이 링크는 대상에 대한 별명(alias)으로 취급되는 것이 보통이다. cp, rm 따위의 시스템 관리 명령들은 심볼릭 링크에 사용할 수 있다. 읽고 쓰는 명령을 사용하면 대상 파일의 내용에 접근하게 된다. 그러나 파일을 지우는 rm 명령은 대상 파일이 아닌 링크 그 자신을 제거한다.

긴 디렉터리 보기 옵션 (-l)과 함께 POSIX의 디렉터리를 나열하는 프로그램 ls을 사용하면 심볼릭 링크가 이름 뒤의 화살표를 통해 가리키고 있음을 볼 수 있다. (아래의 예제 참고) 디렉터리를 가리키는 심볼릭 링크의 디렉터리 나열을 요청하면 링크 그 자체만 표시된다. 링크된 디레터리를 나열하려면 경로 뒤에 / 구분 문자를 추가하여야 한다.

 $ mkdir -p /tmp/one/two
 $ echo "test_a" >/tmp/one/two/a
 $ echo "test_b" >/tmp/one/two/b
 $ cd /tmp/one/two
 $ ls -l
 -rw-r--r-- 1 user group 7 Jan 01 10:01 a
 -rw-r--r-- 1 user group 7 Jan 01 10:01 b
 
 $ cd /tmp
 $ ln -s /tmp/one/two three
 $ ls -l /tmp/three
 lrwxrwxrwx 1 user group 12 Jul 22 10:02 /tmp/three -> /tmp/one/two
 $ ls -l /tmp/three/
 -rw-r--r-- 1 user group 7 Jan 01 10:01 a
 -rw-r--r-- 1 user group 7 Jan 01 10:01 b
 
 $ cd three
 $ ls -l
 -rw-r--r-- 1 user group 7 Jan 01 10:01 a
 -rw-r--r-- 1 user group 7 Jan 01 10:01 b
 $ cat a
 test_a
 $ cat /tmp/one/two/a
 test_a
 $ echo "test_c" >/tmp/one/two/a
 $ cat /tmp/one/two/a
 test_c
 $ cat /tmp/three/a
 test_c



출처 : wikipeda

반응형

'Programming > Linux' 카테고리의 다른 글

Linux - SSH  (0) 2015.07.13
Linux - Yum  (0) 2015.06.23
Linux - scp 명령어  (0) 2015.02.27
alias 명령어  (0) 2015.02.26
Homebrew  (0) 2015.01.29
반응형

scp는 보안, 암호화된 네트워크 연결로 파일을 복사한다.


scp는 secure copy의 약자이다. cp라 매우 유사해서 이해하기 쉽다.


다음과 같이 사용하면 된다.


scp /home/stacy/images/image*.jpg stacy@myhost.com:/home/stacy/archive


서버 myhost로 stacy 유저로 로그인하여  /home/stacy/archive 디렉토리에 이미지 파일을 복사한다는 의미이다.


그리고 반대로 카피를 해온다면 다음과 같이 표현할 수 있다.


scp stacy@myhost.com:/home/stacy/archive/image*.jpg /home/stacy/downloads


옵션은 매뉴얼을 참조하도록 하자.

반응형

'Programming > Linux' 카테고리의 다른 글

Linux - Yum  (0) 2015.06.23
Linux - 심볼릭 링크, symbolic link  (0) 2015.03.19
alias 명령어  (0) 2015.02.26
Homebrew  (0) 2015.01.29
sudo 명령어  (0) 2014.12.31
반응형

bash의 별칭(alias)은 본래, 긴 명령어들을 치지 않기 위한 키보드 단축키나 약어일 뿐입니다. 예를 들어, ~/.bashrc 파일 alias lm="ls -l | more"라고 적어주면 명령어줄에서 lm이라고 칠 때마다 자동으로 ls -l | more로 바뀝니다. 이렇게 하면 명령어 행에서 엄청난 타이핑을 줄일 수 있고 아주 복잡한 명령어나 옵션의 조합들을 일일이 다 기억하고 있지 않아도 됩니다. alias rm="rm -i"(지울 때 물어보기 모드)라고 세팅해 놓으면 중요한 파일을 실수로 지워버리지 않게 하기 때문에 큰 사고를 막아 줍니다.

스크립트에서는 별칭(alias)이 제한된 쓰임새를 갖습니다. 별칭에 매크로 확장같은 C 전처리기(preprocessor)기 같은 기능이 있었다면 아주 좋았을텐데, 불행하게도 Bash는 별칭에 속한 인자들을 확장하지 않습니다. [1] 게다가, if/then문, 루프, 함수같은 "복합문"(compound construct)안에서는 별칭 자체의 확장이 되질 않습니다. 아마 거의 항상 그럴테지만, 별칭으로 무엇을 하려던 간에 함수에서 구현하는 것이 더 효과적일 것입니다.


예 24-1. 스크립트에서 쓰이는 별칭(alias)

#!/bin/bash
# 오래된 시스템에서는 #!/bin/bash2 라고 해야 됩니다.

shopt -s expand_aliases
# 이 옵션을 꼭 써야 별칭을 확장시킬 수 있습니다.


# 먼저 재미로 하나 해보죠.
alias Jesse_James='echo "\"Alias Jesse James\" was a 1959 comedy starring Bob Hope."'
Jesse_James

echo; echo; echo;

alias ll="ls -l"
# 별칭을 정의하려면 작은따옴표(')나 큰따옴표(") 중 하나를 써야 됩니다.

echo "별칭인 \"ll\" 해보기:"
ll /usr/X11R6/bin/mk*   #* 잘 됩니다.

echo

directory=/usr/X11R6/bin/
prefix=mk*  # 와일드 카드가 문제를 일으키는지 한 번 봅시다.
echo "Variables \"directory\" + \"prefix\" = $directory$prefix"
echo

alias lll="ls -l $directory$prefix"

echo "별칭인 \"lll\" 해보기:"
lll         # /usr/X11R6/bin 에서 mk 로 시작하는 모든 파일들의 모든(long) 정보를 보여줍니다.
# 별칭은 와일드 카드를 포함한 변수의 연결을 잘 처리합니다.




TRUE=1

echo

if [ TRUE ]
then
  alias rr="ls -l"
  echo "별칭 \"rr\" 을 if/then 문 안에서 해보기:"
  rr /usr/X11R6/bin/mk*   #* 에러 메세지가 나옵니다!
  # 별칭은 복합문 안에서 확장되지 않습니다.
  echo "하지만, 이미 확장된 별칭은 인식합니다:"
  ll /usr/X11R6/bin/mk*
fi  

echo

count=0
while [ $count -lt 3 ]
do
  alias rrr="ls -l"
  echo "별칭 \"rrr\" 을 \"while\" 루프안에서 해보기:"
  rrr /usr/X11R6/bin/mk*   #* 역시 확장되지 않습니다.
  let count+=1
done 

echo; echo

alias xyz="cat $1"   # 별칭에서 위치 매개변수 시도.
xyz                  # Bash 문서는 이런 시도를 하지 말라고 제안하고 있습니다만,
# 이 스크립트에 파일명을 줘서 돌리면 제대로 되는것처럼 보입니다.

exit 0


예 24-2. unalias: 별칭을 설정, 해제하기

#!/bin/bash

shopt -s expand_aliases  # 별칭 확장을 킴.

alias llm='ls -al | more'
llm

echo

unalias llm              # 별칭을 해제.
llm
# 'llm'이 더 이상 인식되지 않기 때문에 에러 메세지가 나옵니다.

exit 0
bash$ ./unalias.sh
total 6
drwxrwxr-x    2 bozo     bozo         3072 Feb  6 14:04 .
drwxr-xr-x   40 bozo     bozo         2048 Feb  6 14:04 ..
-rwxr-xr-x    1 bozo     bozo          199 Feb  6 14:04 unalias.sh

./unalias.sh: llm: command not found


출처 : KLDP

반응형

'Programming > Linux' 카테고리의 다른 글

Linux - Yum  (0) 2015.06.23
Linux - 심볼릭 링크, symbolic link  (0) 2015.03.19
Linux - scp 명령어  (0) 2015.02.27
Homebrew  (0) 2015.01.29
sudo 명령어  (0) 2014.12.31
반응형

설치하기 


터미널에서 아래와 같은 명령을 수행하자. 자동으로 설치된다.


ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"



소프트웨어 패키지 설치하기


brew install <package명>



소프트웨어 패키지 제거하기


brew uninstall <packagae명>



반응형

'Programming > Linux' 카테고리의 다른 글

Linux - Yum  (0) 2015.06.23
Linux - 심볼릭 링크, symbolic link  (0) 2015.03.19
Linux - scp 명령어  (0) 2015.02.27
alias 명령어  (0) 2015.02.26
sudo 명령어  (0) 2014.12.31
반응형

sudo 명령어는 유닉스 및 유닉스 계열 운영 체제에서 다른 사용자의 보안권한과 관련된 프로그램을 구동할 수 있게 해주는 프로그램이다. 이것은 substitute user do (다른 사용자의 권한으로 명령을 이행하라, 는 뜻이다.) 의 줄임말이다. 기본적으로 Sudo는 사용자 비밀번호를 요구하지만 루트 비밀번호(root password)가 필요할 수 도 있고, 한 터미널에 한번만 입력하고 그 다음부터는 비밀번호가 필요 없다.[2]Sudo는 각 명령줄에 사용할 수 있으며 일부 상황에서는 관리자 권한을 위한 슈퍼유저 로그인(superuser login)을 완벽히 대신하며, 주로 우분투 리눅스와 애플의 맥 오에스 텐 에서 볼 수 있다.[3][4]

이 프로그램을 처음 쓴 사람은 Bob Coggeshall 과 Cliff Spencer 이며, 그들은 이 프로그램을 뉴욕의 버팔로 대학의 컴퓨터과학부에서 "1980년 근처에" 썼다. 현재 버전은 활발히 개발중이며 OpenBSD의 개발자 Todd C Miller가 유지하고 있고 BSD 라이선스로 배포되고 있다. [5]

2009년에 난감하게도 MS가 sudo 명령어를 특허로 등록했다는 것이 밝혀져 큰 파장을 일으켰으나 [6], 그 청구항들은 sudo의 개념이라기보다는 특정한 GUI에 대해 좁게 고안된 것이었다 [7].


sudo 명령어를 실행하기 전에, 사용자들은 비밀번호를 입력한다. 한 번 승인되고 만약 /etc/sudoers 설정 파일이 그 유저를 승인한다면, 명령은 실행된다. kdesukdesudogksugksudo[8]와 같이 GUI환경에서 사용할 수 있는 몇몇 명령어 들이 있다.[9] 다음은 접근이 거부된 예이다.

 snorri@rimu:~$ sudo emacs /etc/resolv.conf 
 We assume you have received the usual lecture from the local System
 Administrator. It usually boils down to these three things:
 
 #1) Respect the privacy of others.
 #2) Think before you type.
 #3) With great power comes great responsibility.
 
 Password:
 snorri is not in the sudoers file. This incident will be reported.


아래의 로그는 실패한 시도와, snorri를 /ect/sudoers: 에 추가한 뒤에 성공한 시도이다.

 snorri@rimu:~$ sudo tail /var/log/auth.log
 Aug 5 06:00:28 localhost sudo: snorri : user NOT in sudoers ; TTY=pts/1 ; PWD =/home/snorri ; USER=root ; COMMAND=/usr/bin/emacs/etc/resolv.conf
 Aug 5 06:01:15 localhost su[15573](pam_unix) session opened for user root by snorri(uid=1000)
 Aug 5 06:02:09 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/emacs /etc/resolv.conf
 Aug 5 06:02:49 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log


출처 : wikipedia

반응형

'Programming > Linux' 카테고리의 다른 글

Linux - Yum  (0) 2015.06.23
Linux - 심볼릭 링크, symbolic link  (0) 2015.03.19
Linux - scp 명령어  (0) 2015.02.27
alias 명령어  (0) 2015.02.26
Homebrew  (0) 2015.01.29

+ Recent posts