Researcher to Developer

Shell 명령어 - 다중 사용자 지원 본문

코딩/Basic

Shell 명령어 - 다중 사용자 지원

Probe29 2020. 12. 25. 23:03

#Shell

사용자와 운영 체제간 인터페이스

사용자의 명령을 해석해서, 커널에 명령을 요청해주는 역할을 한다.

관련된 시스템 콜을 사용해서 프로그래밍이 작성되어 있다.

 

터미널을 사용하는 CLI 환경이 있고

마우스를 사용하는 GUI 환경이 있음

 

윈도우의 경우 Putty 프로그램을 통해 AWS환경으로 들어올 수 있음

 

 

 

#Shell 종류

1. Bourne-Again Shell(Bash)

GNU 프로젝트의 일환으로 개발됨, 리눅스의 디폴트

ksh을 무료로 소스 오픈해서 만든 Shell

 

2. Bourne Shell (sh)

 

3. C Shell (csh)

 

4. Korn Shell (ksh)

유닉스에서 가장 많이 사용됨

 

* 각각의 쉘 마다 명령어가 약간의 차이가 있습니다.

* UNIX는 다중 사용자를 Defalut로 지원하는 시스템

 

 

 

#Bash 기본 명령어 - 다중 사용자 관련 명령어(리눅스 환경)

 

whoami

로그인한 사용자의 ID를 알려준다.

 

 

passwd
로그인한 사용자 ID의 암호 변경
passwd를 치면 현재 passwd를 입력하라고 나오고
새로운 passwd를 2번 입력하라고 나옴

여기서 이전에 사용하던 패스워드를 치면 패스워드가 업데이트 되었다고 나오지않고 계속 문구가 나온다.

 

내용은 다음과 같다.

 

Enter new UNIX password :
Retype new UNIX password :
passwd : password updated successfully

 

 

useradd, adduser

useradd는 사용자 기본 설정을 자동으로 수행하지 않는다.

홈 디렉토리에 자기 디렉토리 해당 사용자에 대한 디렉토리가 만들어지지 않는다.

 

adduser는 사용자 기본 설정을 자동으로 수행한다.

홈 디렉토리를 기본적으로 만들어준다.

 

adduser 아이디를 입력하면(소문자 사용할 것)

adduser : Only root may add a user or group to the system. 이라고 나온다.

이는 일반 사용자가 아이디를 만드는데 시스템에 새로운 사용자를 만들지 못하는데,

adduser를 사용하는 권한이 있다고 보면된다.

이 때 다중 사용자 시스템에서 가장 높은 권한을 가진 아이디가 정해져 있는데, 그것이 바로 root 이다.

 

 

sudo

root 권한으로 실행하기

root 계정으로 로그인하지 않은 상태에서 root 권한이 필요한 명령을 임시로 실행 할 수 있도록 한다.

 

sudo adduser 아이디를 입력하면(소문자 사용할 것) 생성된 것을 확인할 수 있다.

 

그러나 관리자가 해당 일반 계정에 sudo 사용 권한을 주지 않는 경우 사용할 수 가 없다. 

즉, 이 sudo를 사용하려면 해당 아이디가 sudo를 사용할 수 있도록 미리 설정되어 있어야 한다.

 

/etc/sudoers

이라는 설정 파일에 지정된 사용자만 sudo 명령을 사용할 수 있다. 

(visudo 프로그램이 설치되어 있다면, 해당 명령을 통해 설정 파일이 오픈되어 바로 수정이 가능하다.)

 

먼저 cd /etc/ 로 이동해서 

vi sudoers 입력하면 하단에

Permission Denied 라고 나오는데 

파일 자체가 root 권한이 없으면 읽을 수 없게 되어있음. 
이 권한은 OS가 관리한다.

 

결론적으로

/etc/sudoers에 위치하고 있는 sudoers 파일에 sudo 명령어를 사용해서 

작업하고 싶은 계정을 추가 해주어야 한다.

 

sudo vi sudoers 라고
root 권한으로 입력해주면

파일 중간 쯤에 root  ALL=(ALL:ALL) ALL 이라고 써져있는데
root에 커서를 대고 shift + v 를 누르고 y 하면 카피가 되고 p를 누르면 바로 밑에 카피가 됨
이건 user 권한 설정이라고 나와있는 것
그리고 밑에 카피한 root  ALL=(ALL:ALL) ALL에서 x를 네번 눌러서 root를 지워준다음
ubuntu (혹은 계정명)라고 입력 후 
esc를 입력하고 :w! 라고 누르면 강제저장이 되고
:q  를 입력하면 바깥으로 나오게 된다.

 

 

 

su 1

Super User의 약자, 즉 root를 말함

관리자권한으로 로그인

 

su 라고 입력하면 주소 앞에 계정명, 아이디가 root로 변경된 것을 확인할 수 있다.

우분투를 처음 설치하고 su를 치면 나는 root 관련 패스워드를 설정한 적이 없는데 

비밀번호를 입력하라고 나온다.

root 비번을 정한 적도 없는데 왜 비번란이 뜨지??


초기에는 sudo passwd 명령어를 통해서 root 비번을 설정할 수 있습니다.

su의 비밀번호 설정하기 위해 사진처럼 sudo passwd를 치고 비밀번호를 설정
그 다음 
su를 입력하고 설정한 비밀번호를 입력하면
root@ip ~ :/home/ubuntu# 이렇게 나온다.

 

* 참고로 su를 이용해 다른 사용자로 전환한 후에 원래 사용자로 돌아가려면 exit를 입력하면 된다.

 

 

su 2

사용자 변경

 

보통 su - 와 함께 사용

su root : 현재 사용자의 환경설정 기반으로 root로 변경, 아이디만 바뀜

이렇게 옵션없이 하면 환경변수 등은 기존 사용자의 환경으로 적용되고 root로 권한자만 바뀌는것이고

 

su - root : 변경되는 사용자의 환경설정을 기반으로 root로 전환, 해당 사용자의 설정을 재설정한다.

똑같이 root 사용자로 전환하는건데 실제 root로 로그인한 것처럼 권한, 환경 변수등 모든 환경이

root 상태가 된다.

 

 

ls -al 
숨은 파일까지 보여주는 명령어

 

. 이 붙으면 숨긴 파일이라는 뜻
.bashrc, .profile
이 2개가 환경설정에 중점적으로 사용되는 파일


pwd
현재 디렉토리를 보는 명령어

리눅스는 전역 파일 시스템임
아이디를 만들면 해당 아이디의 home 디렉토리가 만들어짐
이 밖에 설정들을 아이디 마다 할 수 있음