리눅스

사용자생성과 소유권, 실행권한

코딩만만세 2024. 7. 4. 17:18

사용자생성

  • window에는 계정 로그인 로그아웃이 있습니다.
  • 리눅스도 사용자 계정을 만들 수 있고 사용할 수 있습니다.

사용자생성

계정생성 (관리자 권한 필요)

useradd 사용자명

비밀번호변경

passwd 사용자명

계정변경

usermod 옵션 사용자명

계정삭제

userdel 사용자명

 

EC2생성 ubuntu계정은 비밀번호가 설정이 되어있지 않음.

# 우분투계정의 비밀번호 설정

passwd ubuntu

 

사용자의 확인은 etc폴더에서 확인할 수 있습니다.

cat /etc/passwd 로 확인가능 (시스템식별번호:그룹번호)
cat /etc/group 로 그룹번호 확인가능
cat /etc/sudoers 로 sudo권한 확인가능(추가가능)

 

 

유저정보확인

cat /etc/passwd

  • 첫번째, ubuntu는 사용자 이름이다.
  • 두번째, x는 비밀번호이다. 보안을 위해 다른 파일에서 관리되기 때문에 x로 표시된다.
  • 세번째, 1000은 해당 사용자가 부여받은 고유 ID이다.
  • 네번째, 1000은 해당 사용자가 소속된 그룹의 고유 ID이다. 참고로 리눅스 사용자는 반드시 특정 그룹에 소속되어 있어야 한다.
  • 다섯번째, ubuntu는 전체 이름이다. 전체 이름은 따로 설정하지 않으면 기본 사용자 이름으로 사용된다.
  • 여섯번째, /home/ubuntu는 해당 사용자의 홈 디렉터리다. (사용자가 쓰는 폴더)
  • 일곱번째, /bin/bash는 해당 사용자가 사용하는 기본 쉘이다. (bash 쉘 이라고한다)

사진에서 ubuntu씨는 bash쉘을 사용하고 있다.

사진에서 yopy0817씨는 본쉘을 사용하고 있다.

 

유저그룹확인

cat /etc/group

그룹이름 : 비밀번호 : 그룹ID : 그룹에 속한 사용자 이름

ubuntu씨는 1000번 그룹이라는 것을 알 수 있다.

yopy0817씨는 1001번 그룹이라는 것을 알 수 있다.

 

폴더의 소유자 변경하기 chown

 

AWS환경 실습인 경우 ubuntu계정과 root계정에는 에는 비밀번호가 없습니다.

먼저 passwd명령으로 비밀번호를 지정합니다.

sudo passwd root
sudo passwd ubuntu

 

su 계정명

윈도우의 C:\사용자 경로로 들어가게 되면 계정명 폴더가 있지요?

리눅스에서도 계정을 생성하게 되면, home아래에 계정명 폴더가 생성되어야 합니다.

폴더에는 소유자 개념이 있습니다.

폴더의 주인만 해당 폴더를 사용 할 수 있는 권한을 가지게 됩니다.

시나리오

  1. 원본 계정(ubuntu) 으로 접속한다. (주의 - 다른계정은 sudo를 동작시킬 권한이 없습니다)
  2. home은 root의 권한이므로 sudo의 권한을 빌려 디렉토리를 생성한다.

sudo /home/계정명

3.생성된 계정으로 접속을 해본다

su 계정명

4./home/계정명 디렉토리를 만들게 되면 해당 폴더에 사용자가 파일을 생성할 수 있는 권한이 없습니다.

 

 

폴더의 소유권은 소유자:소유그룹 으로 나타납니다.

여기에서 yopy0817의 폴더의 소유권을 보면 ubuntu:ubuntu 입니다.

ubuntu폴더의 소유자와 소유그룹에 소속된 계정만 폴더와 파일을 생성 할 수 있는 권한이 있습니다.

즉 yopy0817은 본인폴더에 폴더,파일 생성을 못한다는 의미입니다.

명령문

  • 폴더나 파일의 소유권을 바꾸는 명령입니다
  • 소유권 변경은 sudo권한이 필요합니다.

주요 옵션

-R: 하위폴더의 모든소유권을 리컬시브로 하게 변경

sudo chown  옵션 소유자:소유그룹 디렉토리경로

 

예시

sudo chown yopy0817:yopy0817 /home/yopy0817
sudo chown -R yopy0817:yopy0817 /home/yopy0817
sudo chown (유저소유번호)1001:(유저소유그룹)1001 /home/yopy0817

이제 yopy0817은 본인 폴더에 파일과 폴더를 생성 할 수 있습니다.

 

실행파일과 실행권한 chmod

 

  • 유저를 생성하고, 비밀번호입력, 폴더를 생성하고, 권한을 주려는 작업은 반드시 순서대로 일어나면 되겠네요.
  • 명령문으로 한땀한땀 작성해도 되지만, 순차적인 명령문을 실행시키는 대표적인 파일로 쉘 스크립트가 있겠습니다.
  • 쉘스크립트를 통해 실행 파일을 만들고 순차적으로 실행해 줄 수 있습니다..

쉘 스크립트는 사용할 수 있는 명령어들의 조합을 모아서 만든 배치(batch)파일 입니다.

운영체제의 Shell을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 기반 프로그램 실행파일 입니다.

쉘 파일은 변수, 제어문도 사용할 수 있습니다.

 

시나리오

  1. 우분투 계정으로 접속한다.

su ubuntu

  1. /home/계정명 폴더로 이동한다.

cd /home/계정명

  1. vi를 이용해서 파일을 하나 만든다. 확장자는 sh를 붙인다.

vi createUser.sh

  1. 파일 내용

#!/bin/sh
sudo useradd user01
sudo passwd user01
sudo mkdir /home/user01
sudo chown user01:user01 /home/user01
echo "create user : user01"
tail -n5 /etc/passwd

:wq 이용해서 저장한다

 

5.실행시키기

sudo ./createUser.sh

./ 은 뭔가요? 실행파일은 리눅스 환경변수 경로에 등록되어 있다면 먼저 실행되기 때문에 보통 실행파일 앞에 상대 경로를 표현해준다.

그런데 말입니다.

이 파일은 실행파일이 아니기 때문에 동작이 되지 않습니다.

 

파일의 실행권한이란

앞쪽 부분을 잘보세요

 

d + rwx + rwx + rwx 로 만들어 집니다.

맨앞에 d가 없죠? 파일이라는 뜻입니다.

맨앞에 d가 있죠? 디렉토리라는 뜻입니다.

 

RWX의 의미

rwx = 읽기쓰기실행

입니다.

스위치 처럼 켰다 껐다로 동작합니다.

켜져있으면 1 꺼져있으면 0

으로 표현됩니다.

예시

rwx = 111 (십진수 변환 7)
rw- = 110 (십진수 변환 6)
r— = 100 (십진수 변환 4)

이진수 값은 십진수로 변경되어 하나의 권한이 됩니다.

 

  • RWXRWXRWX의미

rwxrwxrwx = 소유권자:소유그룹권한:다른사람들에대한권한

rwx rw- r-- 는 7 6 4

 

실행권한 명령문

chmod 권한이진수합 파일명

예시

chmod 764 ./createUser.sh

이후 파일의 주인은 x권한(실행권한)이 생기고 녹색으로 변경되며, 실행 가능해진다.

./createUser.sh

사실 쉘 파일은 권한이 없어도 실행하는 명령문이 있습니다.

(sh 을 붙이면 x권한 없어도 사실 됨 )

sudo sh ./createUser.sh

 

실행파일에서 매개변수 사용하기

 

이전 시간에 쉘 스크립트 파일을 작성했습니다.

user01로만 생성되도록 밖에 할 수 없었죠.

쉘 스크립트 파일은 매개변수를 전달할 수도 있고 변수, 제어문, 반복문 등이 사용 가능합니다.

실행파일에 매개변수 넘기기

  • 실행파일 안에서 매개변수의 개수를 $1, $2, $3... 으로 표현한다
  • 실행시킬 때 ./실행파일명 매개변수1, 매개변수2, 매개변수3 으로 실행한다.

시나리오

  1. 코드를 수정해 주세요.

vi createUser.sh

  1. 수정내용

#!/bin/sh
sudo useradd $1
sudo passwd $1
sudo mkdir /home/$1
sudo chown $1:$1 /home/$1
echo "create user : $1"
tail -n5 /etc/passwd

  1. 실행

sh ./createUser 유저명

이제 유저를 생성하고 폴더를 만들고 권한을 부여하는 작업을 한번에 할 수 있습니다!

사실 쉘 스크립트 파일은 제어문 반복문도 많이 쓰는데요. 나중에 작성할 일이 있다면 공부해서 사용하세요.

향상된 유저 생성방법

  • 리눅스에는 조금 더 편하게 유저를 생성하는 방법을 제공합니다.
  • home디렉토리 user폴더도 생성하고 소유권도 부여해줍니다.

sudo adduser 유저명

sudo deluser 유저명