728x90
반응형
728x90
반응형

22. 사용자의 추가

사용자(user)를 추가하는 방법에 대해 알아보겠습니다.

명령어는 크롬에서 검색하여 사용해도 되니 굳이 외우지 않아도 된다고 합니다.

 · sudo useradd -m tom : -m옵션은 홈 디렉토리를 만들어 주는 것이라 합니다.

 · cd /home : 홈 디렉토리로 이동합니다.

 · ls : duru라는 사용자가 추가 되었습니다.

 · sudo -duru : duru라는 사용자로 로그인합니다.

사용자 계정은 만들었지만 패스워드는 입력하지 않았기 때문에 에러 메시지가 뜹니다.

 · sudo passwd duru : 패스워드를 세팅해줍니다.

 · sudo pwd : duru는 슈퍼 권한이 없기 떄문에 에러가 뜹니다.

 · sudo usermod -a -G sudo duru : duru에게 sudo명령을 사용할 수 있도록 권한을 부여합니다.

    -a는 append 그룹의 사용자를 추가한다는 의미이고 -g를 같이 사용해야 합니다. 



man usermod : usermod에 대한 도움말이 나옵니다. q를 통해 빠져나올 수 있습니다.



23. 권한(Permission)

23.1 권한 기초

블로그나 게시판을 사용할 때 쓴 글의 공개여부를 할 수 있는 기능이 있습니다. 이를 권한이라고 합니다

유닉스 계열 시스템에서 권한의 대상은 file과 directory입니다.

사용자가 파일과 디렉토리에 대한 권한을 지정하는 것입니다.

즉 파일과 디렉토리에 대해 read(읽기) & 쓰기(write) & 실행(execute)의 기능을 추가,제거 하는 것이죠.

 · touch perm.txt : perm.txt라는 txt파일을 생성합니다.

 · ls -l perm.txt : perm.txt파일에 대한 상세보기 입니다.

 · echo '문자열' : 화면에 문자열을 표준 출력하는 명령어입니다.

 · echo 'hi' > perm.txt : hi라는 메시지가 perm.txt에 출력됩니다.

 · cat perm.txt : hi가 출력되는 것을 확인할 수 있습니다.

하지만 duru사용자가 echo 'hello' > perm.txt을 입력하면 permission denied 에러 메시지가 출력됩니다.

- | rw- | rw- | r-- | 1 | duru duru | 3 | Aug 30 10:50  | perm.txt 

- : type으로 기본적인 파일을 의미합니다. d는 디렉토리를 의미합니다.

rw- : User(사용자)의 권한으로 파일에 대해 읽기, 쓰기 권한이 있습니다.

rw- : Group(그룹)의 권한으로 파일에 대해 읽기, 쓰기 권한이 있습니다.

r-- :  Other(다른 사람)의 권한으로 파일에 대해 읽기 권한만 있습니다. 


23.2 권한을 변경하는 방법(chmod)

rw-rw-r--를 access mod라고 부릅니다.

권한을 변경할 수 있는데요. 만약 다른 사람에게 노출되어야 하는 정보가 아니라면 r을 없애야겠죠.

바로 chmod인데요 change mode의 약자로 권한을 변경합니다. 

 · chmod o-r perm.txt : other의 r권한을 빼는 명령어

 · chmod o+r perm.txt : other의 r권한을 추가하는 명령어

 · chmod o+w perm.txt : other의 w권한을 추가하는 명령어

 · chmod u-r perm.txt : user의 r권한을 빼는 명령어



23.3 실행의 개념과 권한 설정

실행은 X, execute의 약자로서 파일에 대해 실행 가능 여부를 설정하는 것입니다.

 · nano hi-machine.sh : hi-machine.sh파일 편집기로 이동합니다.

 · #!/bin/bash : bash파일을 통해 아래의 코드를 실행합니다.

 · echo 'hi hi hi hi' 

입력 후 ctrl+x -> y 저장 후 빠져나옵니다.

 · ls --l : hi-machine.sh 파일이 생성되었습니다.

 · /bin/bash hi-machine.sh : hi hi hi hi메시지가 뜨면서 실행되지만

. · /hi-machine.sh : 실행 권한이 없기에 permission denied 에러가 뜹니다.

 · chmod u+x hi-machine.sh; : 사용자의 권한을 추가합니다.

 · chmod o+x hi-machine.sh : 다른 사용자에게도 x권한을 추가합니다.



23.4 directory의 권한

파일은 읽기, 쓰기, 실행히 분명한 반면 디렉토리는 읽기, 쓰기 실행이 불분명합니다.

 · mkdir perm;cd perm;echo 'hi' > perm.txt : perm디렉토리 생성 후 접속하여 hi메시지를 perm.txt파일에 저장합니다.

 · cd .. : 상위 디렉토리로 이동

 · ls -l : perm 디렉토리가 생성되었습니다.

 · chmod o-r perm : perm디렉토리에 다른 사용자가 읽기를 제거하는 명령어입니다.

 · chmod o-w perm : 디렉토리 안에 w권한이 없으면 파일을 생성할 수 없습니다. 파일 이름도 변경이 불가하죠.


23.5 chmod사용법 정리

다음은 chmod의 편리한 사용법입니다.

사용법을 외우려 하지 말고 필요할 때 마다 검색하는 게 편리하다고 합니다.

 · chmod 111 perm.txt : user, group, other --x권한을 부여하는 명령어

 · chmod 222 perm.txt : user, group, other --w권한을 부여하는 명령어

 · chmod 444 perm.txt : user, group, other --r권한을 부여하는 명령어

 · chmod 333 perm.txt : user, group, other -wx권한을 부여하는 명령어

 · chmod 555 perm.txt : user, group, other r-x권한을 부여하는 명령어



 · chmod a+r perm.txt : a all 모든 사용자에게 r권한을 부여하는 명령어

 · chmod a+r perm.txt : a all 모든 사용자에게 w권한을 부여하는 명령어

 · chmod a-r perm.txt : a all 모든 사용자에게 w권한을 제거하는 명령어

 · chmod a=rwx perm.txt : a all 모든 사용자에게 rwx권한을 부여하는 명령어

 · chmod a=r perm.txt : a all 모든 사용자에게 r권한을 부여하는 명령어




24.그룹

24.1 그룹 Intro

User는 파일을 만든 사람, u rwx

Other는 유저가 아닌 모든 사람,o rwx

Group 그룹은 특정 사용자의 집단, g rwx

리눅스는 다중 사용자 시스템으로 user나 other필수로 알아야 하며 흐름의 구조상 그룹도 알아야 한다고 합니다.


24.2 groupadd

계정 : egoing : developer

cd /var

mkdir developer : 권한 에러

sudo mkdir developer : developer디렉토리를 생성합니다.

cd developer/ : developer그룹 디렉토리로 이동합니다.

echo ‘hi, killershin’ > killershin.txt : 그룹은 root로 되어있기에 권한 에러뜹니다.

add group in linux 검색으로 활용합니다.

sudo groupadd developer = sudo !! 직전 명령어 입력

nano /etc/group : 그룹에 대한 정보를 갖고 있는 파일 ctrl+x

egoing k8805 멤버로 추가해야합니다.

sudo usermod –a –G developer egoing

sudo usermod –a –G developer k8805 : 그룹에 add되었습니다.

exit

cd /var/developer/

man cdown

sudo chown root:devleoper :현재디렉토리 소유자는 root 그룹은 developer

ls –al : 그룹이 root에서 developer 변하였습니다.

sudo chmod g+w : 그룹에 w권한을을 부여합니다.

 

계정 : K8805 : developer

Cd developer/

Exit

cd /var/developer/

 

계정 : Leezche : designer

Cd developer/

exit

cd /var/developer/



생활코딩 리눅스 강의

728x90
반응형

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

리눅스 명령어 이해하기9!!  (0) 2017.09.01
리눅스 명령어 이해하기8!!  (2) 2017.08.31
리눅스 명령어 이해하기6!!  (0) 2017.08.29
리눅스 명령어 이해하기5!!  (0) 2017.08.28
리눅스 명령어 이해하기4!!  (2) 2017.08.27
728x90
반응형

11. 쉘과 커널

11.1 Intro

커널(KERNEL)은 알맹이, 핵심, 코어라는 의미를 갖고 쉘(SHELL)은 껍데기,주변 이라는 의미를 가집니다.

쉘은 껍데기처럼 커널을 감싸고 있다고 할 수 있는데요.

쉘에게 명령어를 입력하여 커널이 이해할 수 있는 방식으로 전달해주는 것입니다.

 쉘은 사용자가 입력한 명령을 해석하는 프로그램입니다.

 커널은 하드웨어를 감싸고 있습니다. 물리적인 기계를 직접적으로 제재하는 운영체제에서 가장 중심이 되는 코어입니다.

 하드웨어(ssd, 하드 디스크, cpu, 메모리를 뜻함)는 기계를 동작시켜 원하는 결과를 얻는 일을 합니다.

이렇게 쉘과 커널을 나눈 이유는 사용자의 편리성을 위해서 입니다.




11.2 bash vs zsh

bash와 zsh은 쉘을 대표하는 프로그램입니다.

 · echo [문자] : 문자를 화면에 출력해주는 명령어입니다.

 · echo $0 : 사용하고 있는 쉘을 보여줍니다. 현재는 bash를 사용하고 있습니다.

zsh은 따로 설치를 해야합니다. sudo apt-get install zsh : zsh(지쉘) 프로그램을 설치하는 명령어 입니다.

bash와 zsh은 부모가 같기에 유사한 특성을 가집니다.

하지만 bash와 zsh의 차이가 있는데요.

bash의 경우 

 · cd tab tab : 숨겨진 디렉토리까지 표시됩니다.

 · cd /home/killershin/why : why라는 디렉토리로 들어갑니다.

 · cd why dir1 : why라는 디렉토리 안에 dir1로 들어가고자 할 때 에러가 납니다.

zsh의 경우

 · cd tab : 숨겨진 디렉토리는 표시되지 않습니다.

 · cd /home/killershin/why : why라는 디렉토리로 들어갑니다.

 · cd why dir1 : 에러가 나지 않고 dir1디렉토리로 들어갑니다.

이처럼 사용자가 입력하는 명령어들의 편의성을 각각에 쉘마다 다릅니다.

커널과 쉘을 나눈 이유

-원하는 쉘을 다운 받아 설치하여 자신에게 최적화된 환경을 만들 수 있습니다.



12. 쉘 스크립트

12.1 Shell Script 소개

Script 대본이라는 뜻을 가집니다. 배우들이 움직임의 흐름을 알 수 있는 것이죠.

하나의 명령으로 일이 끝나는 것이 아닌 여러 개의 명령이 순차적으로 이루어 업무가 끝나야 할 때가 있습니다. 

이를 코드로 저장 시킨 것이 쉘 스크립트입니다. 쉘 스크립트를 사용하면 나중에 재사용이 가능하며 복잡한 코드를 필요할 때마다 타이핑 하는 것보다 어딘가에 저장해 불러와 실행시키면 훨씬 편리하겠죠.

쉘에서 실행되는 명령들을 어딘가에 저장하는 방법에 대해 알아보겠습니다.

예를 들어 디렉토리 안에 확장자가 log로 끝나는 파일들을 정기적으로 bak 디렉토리에 백업을 하고 싶은 경우입니다. 명령어 하나하나를 실행시켜 보겠습니다.

 · mkdir script : script 디렉토리를 생성합니다.

 · cd script/ : script 디렉토리로 들어갑니다.

 · touch a.log b.log c.log : 빈 파일들을 생성하는 명령어입니다.

 · ls -l : 로그 파일들이 생성되어 있는지 확인합니다.

 · mkdir bak : bak 디렉토리를 생성합니다.

 · cp *.log bak : 확장자가 log인 모든 파일을 bak디렉토리에 저장하는 명령어입니다.

이를 하나의 스크립트를 만들어 백업하고 싶을 때마다 사용하는 스크립트로 만들면 훨씬 편리할 것 같네요.



12.2 Shell Script 사례

ls /bin : bin 디렉토리에 있는 파일 목록입니다. 기본 프로그램들이 위치하는 곳이죠. 화면에 보이지는 않지만 bash라는 프로그램도 bin 디렉토리에도 

 · nano backup : backup이라는 이름의 파일을 만듭니다.

 · #!/bin/bash : 백업이라는 프로그램을 실행시켰을 때 운영체제는 #!기호를 봅니다.

밑에 작성되는 코드들은 bin디렉토리 밑에 bash라는 프로그램에 해석되어야 한다는 의미입니다.

bash프로그램이 사용하는 문법들을 사용해야겠죠.



쉘 스크립트를 작성해보겠습니다.

디렉토리 안에 확장자가 log로 끝나는 파일들을 정기적으로 bak디렉토리에 백업을 하고 싶은 경우인데요.

조건이 있습니다.

1) 만약 현재 디렉토리에 bak라는 디렉토리가 없다면 만들고 있다면 만들지 않을 것

2) 현재 모든 디렉토리에 있는 파일 중 .log라는 파일을 bak라는 디렉토리에 복사할 것

 · #!/bin/bash

 · if! [ -d bak ]; then : 현재 디렉토리에 bak디렉토리가 존재하지 않는다면

 ·     mkdir bak     :  bak디렉토리를 생성하라.

 · fi : 조건문 종료의 의미를 가집니다.

 · cp *.log bak : bak디렉토리에 확장자가 log인 모든 파일을 저장하라.

 · ctrl+x -> y ->  backup파일이 생성되었습니다



 · ./backup : backup파일을 실행하는 명령어입니다. Permission denied 권한이 없다는 메세지가 뜨네요.

 · chmod +x backup : 실행 가능한 프로그램이라는 것을 리눅스에게 알려주는 명령어입니다.

backup파일에 x를 추가시킨 것입니다.

 · ls -l : backup파일이 초록색으로 변했습니다. -rwxrwxr-x "x"가 생겼습니다. 실행 가능한 상태라는 의미입니다.

 · rm -rf : bak라는 디렉토리를 지우는 명령입니다.

 · ls -l : bak디렉토리가 삭제되었습니다.

 · ./backup : backup파일을 실행합니다

 · ls -l : bak디렉토리가 생성되었습니다.

 · ls -l bak : 3개의 로그 파일이 저장 되었습니다.


 · rm bak/c.log : bak디렉토리에 c.log파일을 삭제합니다.

 · ./backup : backup파일을 실행합니다.

 · ls- l bak : 삭제된 파일 c.log가 다시 저장된 것을 확인할 수 있습니다.




13. 디렉토리의 구조

디렉토리는 실행할 수 있는 프로그램을 정리 정돈하는 수단입니다.

유닉스 계열에서는 실행 프로그램의 성격에 따라 정해져 있는 규칙이 있는데요

/ : 최상위 디렉토리입니다. 루트 디렉토리라고 부릅니다.

/bin : User Binaries, 사용자가 사용하는 명령어들이 위치합니다.

/sbin : System Binaries, 컴퓨터를 끄거나 재부팅하는 명령어들이 위치합니다.

/etc : Configuration Files 설정 파일로, 프로그램이 동작하는 방법을 바꾸고 싶을 때 사용합니다.

/var : Variable Files, 파일의 내용이 증가하거나 어떻게 바뀔지 모르는 파일들이 위치합니다.

/tmp : Temporary Files 일시적인 파일로, 영구적으로 저장하는 파일들을 저장하면 안됩니다.

/home : Home Directories, 자신의 홈 디렉토리에서 작업하기에 홈으로 가야하는 경우 사용됩니다.

/lib : Sytem Libraries

/opt : Optional add-on Applications, 파일 위치를 자동으로 지정합니다.

/user :  사용자의 데이터가 존재하지 않는 공간입니다.


cd ~ : 현재 사용자 디렉토리로 이동하는 명령어입니다. = cd /home/killershin





생활코딩 리눅스 강의



728x90
반응형

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

리눅스 명령어 이해하기6!!  (0) 2017.08.29
리눅스 명령어 이해하기5!!  (0) 2017.08.28
리눅스 명령어 이해하기3!!  (0) 2017.08.26
리눅스 명령어 이해하기2!!  (4) 2017.08.25
리눅스 명령어 이해하기!!  (2) 2017.08.24
728x90
반응형

+ Recent posts