사용자생성
- 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아래에 계정명 폴더가 생성되어야 합니다.
폴더에는 소유자 개념이 있습니다.
폴더의 주인만 해당 폴더를 사용 할 수 있는 권한을 가지게 됩니다.
시나리오
- 원본 계정(ubuntu) 으로 접속한다. (주의 - 다른계정은 sudo를 동작시킬 권한이 없습니다)
- 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을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 기반 프로그램 실행파일 입니다.
쉘 파일은 변수, 제어문도 사용할 수 있습니다.
시나리오
- 우분투 계정으로 접속한다.
su ubuntu
- /home/계정명 폴더로 이동한다.
cd /home/계정명
- vi를 이용해서 파일을 하나 만든다. 확장자는 sh를 붙인다.
vi createUser.sh
- 파일 내용
#!/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 으로 실행한다.
시나리오
- 코드를 수정해 주세요.
vi createUser.sh
- 수정내용
#!/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
- 실행
sh ./createUser 유저명
이제 유저를 생성하고 폴더를 만들고 권한을 부여하는 작업을 한번에 할 수 있습니다!
사실 쉘 스크립트 파일은 제어문 반복문도 많이 쓰는데요. 나중에 작성할 일이 있다면 공부해서 사용하세요.
향상된 유저 생성방법
- 리눅스에는 조금 더 편하게 유저를 생성하는 방법을 제공합니다.
- home디렉토리 user폴더도 생성하고 소유권도 부여해줍니다.
sudo adduser 유저명
sudo deluser 유저명
'리눅스' 카테고리의 다른 글
apt로 외부 파일 설치 (웹서버구현) (0) | 2024.07.10 |
---|---|
리눅스의 파일구조, 기초명령문 (0) | 2024.07.04 |
리눅스 접속을 위한 SSH서버 설치 (0) | 2024.07.04 |
개발자가 알아야 하는 리눅스명령문 (0) | 2024.07.04 |