Gom3rye

Linux 본문

현대 오토에버 클라우드 스쿨

Linux

Gom3rye 2025. 5. 20. 11:58

파일 시스템

기본 접근 권한 설정

  • 현재 기본 접근 권한 확인
    • han.txt 파일을 빈 파일로 생성
    • **touch han.txt**
    • han.txt 파일의 접근 권한을 확인
      • 스크립트를 만들고 실행 할 수 있도록 실행 권한을 줘야 한다.
    • **ls -l han.txt # -rw-rw-r-- 1 kyla kyla 0 May 20 00:05 han.txt (실행 권한이 없음)**
    • temp 라는 디렉토리를 생성
    • **mkdir temp**
    • temp 디렉토리의 접근 권한을 확인
    • **ls -l # drwxrwxr-x 2 kyla kyla 4096 May 20 00:11 temp**

umask [옵션] [마스크값]

기본 접근 권한 확인 및 변경

  • 파일을 생성하고 확인하면 보안 상의 문제로 실행 권한은 부여되지 않는다.

특수 접근 권한 설정

umask 명령으로 확인한 숫자 중 첫 번째 숫자에 대한 부분

  • 맨 앞자리가 0이면 일반적인 접근 권한 설정
  • 1이면 스티키 비트
  • 2이면 SetGID
  • 4이면 SetUID
    • SetUID: 해당 파일을 실행하면 파일을 실행한 사용자의 권한이 아니라 파일 소유자의 권한이 적용된다.

실습

**touch set.exe
chmod 755 set.exe
ls-l # -rwxr-xr-x 1 kyla kyla     0 May 20 00:47 set.exe**

파일에 SetUID 설정

**chmod 4755 set.exe
ls-l # -rwsr-xr-x 1 kyla kyla     0 May 20 00:47 set.exe**
  • 실행 권한이 x → s로 바뀜

프로세스 관리 도구

top

현재 실행 중인 프로세스의 정보를 주기적으로 출력하는데 프로세스의 자세한 요약 정보를 상단에 출력하고 각 프로세스의 정보를 하단에 출력

출력 정보

  • PID
  • USER
  • PR: 우선 순위 값
  • NI: Nice 값
  • VIRT: 가상 메모리 크기
  • RES: 메모리 크기
  • SHR: 공유 메모리 크기
  • %CPU
  • %MEM
  • Time+: CPU 누적 이용 시간
  • COMMAND: 명령어

top의 내부 명령

  • Enter, Spacebar: 다시 출력
  • h, ?: 도움말
  • k: 프로세스를 종료하는데 종료할 PID를 묻는 대화 상자를 출력
  • n: 출력하는 프로세스의 개수를 변경
  • u: 사용자에 따라 정렬해서 출력
  • M: 메모리 크기에 따라 정렬
  • p: cpu 사용량에 따라 정렬
  • q: top 명령을 종료

특정 프로세스의 CPU 사용량만 보고 싶을 때 : top -p <PID>

**top -p 1234**

포그라운드 및 백그라운드 프로세스와 작업 제어

포그라운드와 백그라운드

  • 사용자가 터미널에서 작업할 때 보통의 경우 한 번에 하나의 프로세스만 실행 가능

→ 어떤 명령을 실행하면 명령이 끝날 때까지 기다려야 다시 터미널을 사용할 수 있다.

어떤 프로세스를 실행하는 도중에 다른 프로세스를 실행해야 하는 경우가 발생할 수 있는데 작업 제어 도구는 이렇게 하나의 터미널에서 여러 프로세스를 실행하고 관리하기 위해 개발

  • 포그라운드 작업
    • 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 동작하는 프로세스
    • 실행 도중에는 프롬프트가 보이지 않기 때문에 다른 명령을 수행시킬 수 없다.
    • ex. sleep 100 : 100초 동안 대기해야 한다. (→ ctrl + c로 멈춤)

작업 제어

작업 전환, 작업 일시 정지, 작업 종료 등

  • 작업 전환 : 포그라운드 → 백그라운드 작업 or 백그라운드 → 포그라운드 작업으로 변환하는 것

jobs [%작업번호]

현재 실행 중인 백그라운드 작업 목록 보기

  • %번호 : 작업 번호에 해당하는 작업을 조회
  • %+, %% : 작업 순서가 +인 작업 정보를 출력
  • %- : 작업 순서가 -인 작업 정보를 출력

jobs 결과 확인

  • 앞에 나온 숫자 : 작업 번호로 일련번호 형식
  • +: 가장 최근에 접근한 작업
  • -: + 전에 접근한 작업
  • 공백: 그 이외의 작업
  • Running: 현재 실행 중
  • Done: 작업이 정상적으로 종료
  • Exit: 작업이 비정상적으로 종료
  • Stopped: 작업이 잠시 중단, 사용자가 Ctrl+z를 눌렀거나 신호를 받아 일시정지 됨

연습 문제

sleep 1000 명령 2개를 백그라운드로 실행

sleep 1000 &
sleep 1000 &

현재 실행 중인 백그라운드 작업과 정지된 작업을 조회

jobs

백그라운드로 실행 중인 1번 작업을 종료

kill %1

남아있는 백그라운드 작업을 포그라운드로 전환

fg %2

포그라운드 작업을 종료

Ctrl+c

작업 예약

주기적으로 반복하거나 특정 시간에 한 번 수행해야 하는 작업을 예약할 수 있다.

ex. 정해진 시간에 한 번만 실행

at [옵션] [시간]

  • 옵션
    • I: 현재 실행 대기 중인 명령의 전체 목록을 출력
    • r 작업 번호: 현재 실행 대기 중인 명령 중 작업 번호에 해당하는 작업을 삭제
    • m: 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려준다. (메일 서버 기능이 있어야 함)
    • f 파일경로: 표준 입력 대신 실행할 명령을 파일로 지정

at 명령이 없는 경우 - 설치해야 한다.

sudo apt install at

시간 설정

at 시간(HH:MMm HHMM)

today, tomorrow, hours, days, weeks 가능

  • at 4pm + 3 days: 3일 후 오후 4시
  • at 10am Jul 31: 7월 31일 오전 10시에 작업을 수행
  • at 1am tomorrow: 내일 새벽 1시
  • at 10:00am today: 오늘 아침 10시

at 명령 사용 후 종료ctrl+d

모든 명령은 절대 경로로 작성해야 한다.

ex. 아침 6:50분에 사용자 kyla의 홈 디렉토리를 long format(-l 옵션)으로 나열하고, 그 결과를 kyla의 홈 디렉토리에 있는 at.out 파일로 출력

at 06:50 #치고 엔터 누르면
/usr/bin/ls -l ~kyla > ~kyla/at.out #명령어 칠 수 있다.

at 명령 사용 제한

시스템 관리자는 일반 사용자들의 at 명령 사용을 허용하거나 사용하지 못하도록 금지할 수 있다.

  • /etc/at.allow 와 /etc/at.deny 파일을 이용
  • at.allow 파일에 사용 가능한 사용자 아이디를 작성하고 at.deny에 사용을 금지하는 사용자 아이디를 한 줄에 하나씩 작성하면 된다.
  • at.allow 파일이 있으면 이 파일의 사용자만 at 명령이 가능하고 at.deny는 무시한다.
  • at.allow 파일이 없고 at.deny 파일이 있으면 at.deny에 작성된 유저를 제외한 모든 유저가 at 명령 사용 가능
  • 2개의 파일이 모두 없으면 root만 at명령을 사용할 수 있다.
  • 사용자가 모두에 기록되어 있다면 사용 가능하다.
  • at.deny 파일이 존재하고 아무런 내용도 없다면 모든 사용자가 at명령을 사용할 수 있다. → 초기 설정

crontab [-u 사용자ID] [옵션] [파일경로]

정해진 시간에 반복 실행하는 명령어

  • 옵션
    • e: 사용자의 crontab을 편집
    • I: crontab 파일의 목록을 출력
    • r: crontab 파일을 삭제
  • crontab 파일은 사용자별로 1개만 생성된다.
  • 시간 설정
    • (0-59) 시간 (0-23) (1-31) (1-12) 요일 (0-6) 작업내용
    • 요일은 일요일이 0
    • 각 항목은 공백으로 구분
    • 항목의 값이 *****이면 해당 항목의 모든 값을 의미
    • 연산자를 이용하면 값의 범위를 지정할 수 있다. ex. 요일 필드에서 1-5 : 월요일부터 금요일까지
    • , 연산자를 이용하면 반복에 대한 값 목록을 정의할 수 있는데 시간 필드에 1,3,5를 설정하면 1시 3시 5시를 의미한다.
    • / 연산자를 사용하면 단계 값을 지정할 수 있다. ex. 분 필드에 1-10/2 → 1, 3, 5, 7, 9분에 수행 (2분 마다 수행)
    • ex.
      • */20 → 20분 마다 수행
      • ex. 30 23 1 * * /usr/bin/ls -l ~kyla > ~kyla/cron.out ⇒ 매월 1일 23시 30분에 수행된다.
      • 45 22 * * * → 매일 22시 45분에 수행
      • 0 17 * * 1 → 매주 월요일 17시에 수행
      • 59 23 * * 1-5 → 월요일부터 금요일까지 23시 59분에 수행
      • */10 * * * * → 10분 간격으로 수행

crontab 편집 : crontab -e

10 * * * * /usr/bin/ls > ~kyla/cron.out

ctrl+o(저장) 누르고 enter치고 ctrl+x(나가기)

crontab 확인 : crontab -l

crontab 삭제: crontab -r

연습

  • 현재 날짜와 시간을 확인
date
  • 현재 날짜 및 시간을 5분 단위로 홈 디렉토리의 crontab.out 이라는 파일로 출력하도록 작성
*/5 * * * * date > ~kyla/crontab.out
  • crontab 명령으로 설정한 내용을 확인
crontab -l

두 번 이상 실행 되는지 확인하고

  • crontab 삭제
crontab -r

crontab 사용 제한

/etc/cron.allow와 /etc/cron.deny 파일을 가지고 사용을 제한한다.

728x90
반응형

'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글

리눅스를 활용한 패키지 관리  (2) 2025.05.22
리눅스를 활용한 시스템 관리  (1) 2025.05.21
Linux  (0) 2025.05.20
Linux  (0) 2025.05.20
Linux  (0) 2025.05.20