Post

오토에버 클라우드 2기 14일차

오토에버 클라우드 2기 14일차

umask(User file creation mode mask)

리눅스 및 유닉스 시스템에서 새 파일이나 디렉토리가 생성될 때 기본적으로 설정되는 권한을 제한하는 명령어로 파일이나 디렉토리가 생성될 때 적용되는 기본 권한 값에서 특정 비트를 제거하는 역할

기본 동작 원리

  • 파일: 666 (rw-rw-rw-) → 기본적으로 모든 사용자에게 읽기/쓰기 권한이 부여됨 (실행 권한 없음)
  • 디렉토리: 777 (rwxrwxrwx) → 기본적으로 모든 사용자에게 읽기/쓰기/실행 권한 부여됨 하지만 umask 값에 따라 기본 권한에서 특정 비트가 제거되어 실제 적용되는 권한이 달라진다

umask 값 계산 방법 umask 값은 8진수(octal) 형식으로 표현되며, 기본 권한에서 해당 값을 빼서 최종 권한을 결정

예를 들어:

  • umask 022 (8진수)
    • 기본 파일 권한: 666
    • umask 값: 022
    • 최종 적용 권한: 644 → rw-r–r– (소유자에게만 쓰기 가능, 그룹과 다른 사용자에게는 읽기만 가능)
  • umask 007
    • 기본 디렉토리 권한: 777
    • umask 값: 007
    • 최종 적용 권한: 770 → rwxrwx— (소유자와 그룹은 모든 권한 부여, 다른 사용자는 접근 불가)
1
2
3
4
5
#현재 사용하는 시스템의 기본 umask 출력
umask
# umask변경하기
umask 027
# 이후 생성되는 폴더,파일에 적용된다

 

특수 접근 권한 설정

리눅스에서는 일반적인 파일 권한 외에도 특정한 추가 접근 권한을 설정할 수 있다

SUID (Set User ID)

실행 파일이 실행될 때 소유자의 권한으로 실행되도록 설정하는 특수 권한

1
chmod u+s 파일명

예시로 passwd 명령어는 root 권한으로 실행되도록 설정되어 있음

실행할때 일시적으로 root사용자가 되어서 자신의 비밀번호를 바꿀 수 있게 함

 

SGID (Set Group ID)

그룹 권한을 유지하면서 실행되도록 하는 설정

1
chmod g+s 디렉토리명

SGID 디렉토리에서는 새로운 파일이 생성될 때 해당 디렉토리의 그룹을 자동으로 상속받음

 

Sticky Bit

디렉토리에서 파일을 생성한 사용자만 삭제할 수 있도록 하는 설정

1
chmod +t 디렉토리명

 

프로세스

프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 프로그램 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다

데몬 프로세스

데몬 프로세스는 백그라운드에서 실행되는 프로세스로, 사용자가 직접 실행하지 않아도 시스템이 자동으로 실행하고 관리하는 프로세스 일반적으로 시스템 서비스(예: 웹 서버, 데이터베이스 서버, 로깅 서비스 등)

특징

  • 백그라운드 실행: 사용자와 직접 인터랙션하지 않고 계속 실행됨
  • 부모 프로세스가 init(1) 프로세스로 변경됨: 일반적으로 데몬 프로세스는 fork()를 통해 자식 프로세스를 생성한 후 부모 프로세스를 종료함으로써 init이 부모 프로세스로 설정됨
  • 독립적인 실행: 터미널에 의존하지 않고 시스템이 종료될 때까지 지속적으로 실행됨

 

고아(Orphan) 프로세스

고아 프로세스는 부모 프로세스가 먼저 종료되고, 자식 프로세스가 살아남은 상태의 프로세스

특징

  • 부모 프로세스가 예상치 못하게 종료되면 자식 프로세스는 자동으로 init 프로세스가 새로운 부모 프로세스로 설정됨
  • 고아 프로세스는 정상적으로 작동하며, 시스템에 큰 영향을 미치지 않음

 

좀비(Zombie) 프로세스

좀비 프로세스는 프로세스가 종료되었지만, 부모 프로세스가 아직 종료 상태를 수집하지 않아 시스템에 남아 있는 프로세스

특징

  • 프로세스는 종료되었지만 시스템의 프로세스 테이블에 남아 있음.
  • 부모 프로세스가 wait()를 호출하여 종료 상태를 확인하면 좀비 프로세스는 완전히 사라짐.
  • ps auxgrep Z 명령어를 실행하면 좀비 프로세스를 확인할 수 있음.
프로세스 종류정의특징
데몬백그라운드에서 실행되는 프로세스init 프로세스가 부모 프로세스 역할, 지속적 실행
고아부모가 종료된 상태의 프로세스init 프로세스가 부모 역할 수행
좀비종료되었지만 부모가 종료 상태를 수집하지 않은 프로세스시스템의 프로세스 테이블에 남아 있음

 

포그라운드와 백그라운드의 차이

  • 포그라운드 프로세스: 실행되는 동안 사용자 입력을 기다리며 터미널을 차지하는 프로세스
  • 백그라운드 프로세스: 사용자 입력 없이 독립적으로 실행되며 터미널을 차지하지 않는 프로세스

 

포그라운드 실행 명령어

1
2
ping google.com
#일반적으로 실행하면 포그라운드로 실행된다

이렇게 실행하면 Ctrl + C를 눌러야 종료

 

백그라운드 실행 명령어

명령어 끝에 &를 추가하면 백그라운드에서 실행

1
ping google.com &

백그라운드 프로세스를 확인하려면 jobs 명령어를 사용

백그라운드 프로세스를 다시 포그라운드로 가져오려면 fg 명령어를 사용

1
fg %1  # 첫 번째 백그라운드 프로세스를 포그라운드로 전환

다른 명령어로 백그라운드에서 실행하려면 nohup을 사용

1
nohup ping google.com &
기능&nohup
터미널 닫아도 계속 실행?❌ (종료될 가능성 있음)✅ (계속 실행됨)
로그 파일 자동 저장?✅ (nohup.out에 저장됨)
실행 방식단순 백그라운드 실행백그라운드 + 터미널 종료 후에도 유지

 

crontab

crontab은 리눅스에서 정기적으로 특정 작업을 자동 실행할 수 있도록 도와주는 스케줄링 시스템 주기적인 백업, 로그 정리, 자동 업데이트 등의 작업을 설정할 때 유용하다

crontab 기본 개념

  • Cron 데몬(crond): 백그라운드에서 실행되며, 예약된 작업을 지정된 시간에 실행
  • crontab 파일: 특정 사용자별 작업 예약을 저장하는 설정 파일
  • 스케줄 형식: 분 시간 일 월 요일 명령어 형태로 구성됨

 

crontab 명령어 사용법

  • 사용자 계정의 crontab 설정을 확인
1
crontab -l
  • crontab 수정하기
1
crontab -e
  • crontab 삭제
1
crontab -r

crontab 스케줄 형식

분 시간 일 월 요일 명령어

필드의미허용 범위
실행할 분0-59
시간실행할 시간0-23
실행할 날짜1-31
실행할 월1-12
요일실행할 요일 (일요일=0)0-6
명령어실행할 명령실행할 명령어

예제

  • 매일 새벽 3시에 백업 스크립트 실행
1
0 3 * * * /home/user/backup.sh
  • 매주 월요일 오전 10시 정리 작업 실행 (일요일 0)
1
0 10 * * 1 /home/user/cleanup.sh
  • 5분마다 특정 로그 저장
1
*/5 * * * * echo "Log saved at $(date)" >> /home/user/log.txt

 

This post is licensed under CC BY 4.0 by the author.