Linux?
Linux는 컴퓨터 운영체제(OS)의 한 종류로,
무료로 사용할 수 있는 오픈 소스 소프트웨어이며 안정적인 장점을 통해 서버 구축에 자주 사용된다.
또한, 널리 사용되므로 오픈 소스 생태계가 잘 되어 있고, 커뮤니티 지원이 좋다는 장점이 있다.
📌 Linux의 구조
1. 애플리케이션
일반적으로 사용하는 바이너리, 명령어, 빌드된 파일들을 통틀어서 애플리케이션이라고 함
사용자가 직접 상호작용하는 단계이고 다양한 프로그램 언어로 빌드된 앱들을 포함
- 사용자 인터페이스 제공: 사용자가 쉽게 상호작용할 수 있는 인터페이스를 제공
- 시스템 리소스 사용
2. 쉘
애플리케이션이 커널에서 사용하는 명령어 등을 가려주고 쉘 자체를 사용해 스크립트를 만들 수도 있음
- 명령어 해석: 사용자가 입력한 명령어를 해석하고 실행하기 위해 시스템 콜을 사용
- 스크립트 실행: 쉘 스크립트를 통해 여러 명령어 조합이나 여러 라인의 명령어를 일괄 실행할 수 있음
- 환경 관리: 쉘 내에서 환경 변수를 설정하고 관리할 수 있음
3. 커널
운영체제의 핵심 부분으로 하드웨어와 직접 상호작용하는 단계
시스템자원(CPU, Memory 등)을 관리하고 애플리케이션/쉘 ↔ 하드웨어 간의 통신을 중재
- 프로세스 관리: 프로세스 생성, 스케쥴링, 종료 등을 관리
- 메모리 관리: 가상 메모리, 페이징, 스왑 메모리등을 통해 효율적으로 메모리를 관리함
- 가상 메모리: 보조기억장치를 이용해 실제 사용 가능한 메모리보다 더 많은 메모미를 사용가능하게 하는 기법
- 페이징: 메모리를 좀 더 효율적으로 사용하기 위해 고안된 기법, 메모리를 일정 크기만큼 잘라서 사용하는 기법
- 스왑 메모리: 실제로 사용하지 않는 나머지 부분(페이지)을 보조기억장치의 특정 영역(스왑 영역)으로 옮겨서 공간을 확보하는 기법
- 파일 시스템 관리: 파일의 저장, 접근, 조작을 지원하는 파일 시스템을 관리
- 장치 관리: 하드웨어 장치와의 상호작용을 관리하고, 장치 드라이버를 통해 이를 추상화
- 보안 및 접근 제어: 사용자와 시스템 자원 간의 보안 정책을 관리하고 적용
🔎 Linux 종류
Ubuntu
- Debian 계열 중에 가장 유명한 배포판
- 초보자도 쉽게 쓰도록 설계하고 직관적인 GUI를 제공
- 방대한 커뮤니티 덕분에 래퍼런스가 많아 문제해결에 용이
- 2년단위의 버전 출시 및 각 버전당 5년간의 유지보수 → 보안성, 안전성
CentOS
- RHEL(RedHot Enterprise Linux)계열로 안정성과 보안이 뛰어나 주로 기업에서 많이 사용
- Ubuntu와 마찬가지로 커뮤니티가 방대, 래퍼런스가 많음
- CentOS 7까지는 무료, 8부터는 유료
Arch Linux
- 경량화와 커스터마이징에 특화된 OS
- 경량화가 핵심이라 용량이 매우 작음
위의 세가지 외에도 많은 종류가 있음..
🔑 Linux에서의 권한 및 소유자
Linux에서는 모든 파일과 디렉토리는 사용자(user)과 그룹(Group)에 의해 소유됨
- 사용자(User): 파일을 생성한 주체로써 생성된 파일은 기본적으로 사용자에 의해 소유됨
- 그룹(Group): 여러 사용자가 속해있는 그룹으로 기본적으로 그룹 내의 같은 사용자들은 권한을 공유할 수 있음
소유자가 Yong:SKZ = Yong이라는 사람과 SKZ라는 그룹에 의해 소유됨
직접 해보기
sudo passwd
su root
사용자 계정의 비밀번호를 생성 후, root로 사용자를 전환함
전환할 때 비밀번호 확인 필요
adduser yongbok
yongbok이라는 유저를 추가해줌
비밀번호만 설정해주고, 나머지는 엔터키로 생략 가능
cat /etc/group
현재 있는 리스트 확인
groupadd skz
skz라는 그룹 생성
usermod -aG skz yongbok
skz라는 그룹에 yongbok유저 넣어주기
그룹 먼저, 유저 나중에 나와야함
cat /etc/group
🔓 파일의 권한
- R(Read): 읽기 권한, cat으로 파일 내용 확인 가능
- W(Write): 쓰기 권한, vim / echo / sed로 파일 수정 가능
- X(eXecute): 실행 권한, sh / bash에 의해 실행 가능
직접 해보기
cd /tmp
echo 'echo Hello World!' > hello.sh
cat hello.sh
tmp폴더 위치에서 'echo Hello World!'라는 내용의 hello.sh파일 생성
cat함수를 통해 읽기
./hello.sh
실행해보기
ls -al hello.sh
hello.sh의 상태를 확인해보기
각 요소가 의미하는 것은?
- 첫 번째 문자 (-): 파일의 유형을 나타냅니다.
- -: 일반 파일
- d: 디렉토리
- l: 심볼릭 링크
- c: 문자 장치 파일
- b: 블록 장치 파일
- 다음 세 문자 (rw-): 파일 소유자(즉, 파일을 만든 사용자)의 권한을 나타냅니다.
- r: 읽기 권한 (read)
- w: 쓰기 권한 (write)
- x: 실행 권한 (execute)
- -: 해당 권한 없음
- 그다음 세 문자 (r--): 파일 그룹의 권한을 나타냅니다.
- r: 읽기 권한
- w: 쓰기 권한
- x: 실행 권한
- -: 해당 권한 없음
- 마지막 세 문자 (r--): 기타 사용자(즉, 소유자와 그룹에 속하지 않는 모든 사용자)의 권한을 나타냅니다.
- r: 읽기 권한
- w: 쓰기 권한
- x: 실행 권한
- -: 해당 권한 없음
여기서는 파일을 소유한 사람도 rw권한 밖에 없기때문에 실행인 x를 하지 못함
그래서 x를 추가해줘야 함
chmod +x hello.sh
ls -al hello.sh
그럼 이제 실행이 되는지 확인
./hello.sh
반대로 권한을 삭제하려면
chmod -r hello.sh
'Server' 카테고리의 다른 글
[Linux] 쉘과 쉘 스크립트 (0) | 2024.08.23 |
---|---|
[Server] MAC환경에서 UTM을 사용해서 Ubuntu사용해보기 (0) | 2024.07.19 |
[Server] 간단한 react 프로젝트 생성 후, EC2를 이용해 배포해보기 (0) | 2024.07.04 |
[Server] Elastic IP 만들고 붙이기 (0) | 2024.07.04 |
[Server] EC2에서 인스턴스 만들기 (1) | 2024.07.04 |