728x90

1. crontab 파일 권한 부여

[LINUX] '/etc/cron.allow' OR '/etc/cron.d/cron.allow'

[AIX] '/var/adm/cron/cron.allow'

[HP-UX] '/usr/lib/cron/cron.allow'

[Solaris] '/etc/cron.d/cron.allow'


# root계정으로 cron.allow 수정하여 해당계정 추가(한 라인에 사용자 이름 하나씩)

  crontab 생성, 편집, 표시, 제거 가능 crontab 생성, 편집, 표시, 제거 불가능
cron.allow (O) cron.allow에 나열된 사용자만 나머지
cron.allow (X)
cron.deny (O)
cron.deny에 나열된 사용자를 제외한 모든 사용자 cron.deny에 나열된 사용자
cron.allow (X)
cron.deny (X)
슈퍼유저 권한 필요(ex. root) 슈퍼유저 제외 나머지 모두

 

 

2. crontab 파일 권한 여부 확인 방법

#해당 사용자계정으로 로그인

#crontab -l

crontab: can't open your crontab file

-> 1) crontab 파일 존재하는지 확인 필요 2) crontab 파일 권한 확인 필요

crontab: you are not authorized to use cron. Sorry.

-> 1) cron.allow 파일에 사용자 이름 등록 필요

 

 

3. crontab 파일 존재 여부 확인 방법

#cat /var/spool/cron 하위에 계정명으로 파일이 존재

#root 계정의 crontab 파일은 '/etc/crontab' 파일을 참조함.

#cd /var/spool/cron
#ll
-rw------- 1 sysman sysman 7 Jan 2 09:00 sysman
-rw------- 1 test1 testgrp 8 Jan 10 09:00 test1

 


4. crontab 파일 설정 방법

1) crontab 목록 확인 방법

#crontab -l

#crontab -l
0 2 * * * su - root /home/work/rdate.sh
0 1 * * * su - root /root/IM/bin/scripts/backup.sh
5,35 * * * * su - root /root/IM/bin/scripts/import.sh start
12-15 * * * * su - root /root/IM/bin/scripts/export.sh start

## 매일 2시 rdate.sh 실행
## 매일 1시 backup.sh 실행
## 매시 5분, 35분마다 import.sh 실행
## 매시 12분, 13분, 14분, 15분마다 export.sh 실행

2) crontab 설정 방법

#crontab -e

2-1) 다른 사용자 계정 crontab 설정 방법

#crontab -e 사용자계정명

필드번호 의미 비고
첫번째 필드 "분(minute)" 0~59분 설정가능
두번째 필드 "시(hour)" 0~23시 설정가능
세번째 필드 "일(day)" 1~31일 설정가능
네번째 필드 "월(month)" 1~12월 설정가능
다섯번째 필드 "요일(weekday)" 0~7 설정가능(0/7: 일요일, 1:월요일 ..)
여섯번째 필드 "실행권한 및 실행될 내용"  

 

3) crontab 삭제 방법(해당 사용자에 설정된 모든 crontab 작업 삭제)

#crontab -r

 

 

5. crontab 로그 확인 방법

# cat /var/log/cron 확인

728x90
728x90

어플리케이션에서 파일 open한 상태에서 파일 삭제가 이뤄질 때 문제가 발생 가능합니다.

-> OS 레벨에서는 해당 프로세스를 종료하면 해결됩니다.

ex) cron에 주기적으로 오래된 로그파일을 삭제하는 로직이 도는 경우에 저런 현상이 발생하기도 한다.

 


#df -h

명령어에서 볼 때는 사용량이 많은데

 

#du -sh *

명령어에서 볼 때는 사용량이 적다.

 

->

#lsof /postgres | grep -i delete

를 통해 나오는 프로세스에 해당하는 어플리케이션을 재시작

<OR> 프로세스 Kill

<OR> 시스템 재기동

 

등을 통해 조치가 가능합니다.

 

 

 

The df and du commands provide different system information and I can not write to a partition that df says is 100% full. Which is correct and why does the system not allow any data writes to this partition? - Red Hat Customer Portal

 

The df and du commands provide different system information and I can not write to a partition that df says is 100% full. Which

Unable to find which files are consuming disk space. Why is there a mismatch between df and du outputs? The df and du commands provide different information and I can not write to a partition that df says is 100% full. Which is correct and why does the sys

access.redhat.com

 

728x90
728x90

EOL : End Of Life
- 서비스 혹은 판매에 대한 모든 상태가 종료된 상태
- 더 이상 유지보수 자체가 되지 않음

EUS : End Update Support

EOS : End Of Service
- 서비스 혹은 판매가 중단 된 상태
- 더 이상 서비스 혹은 판매를 할 수 없는 상태
- 다만, H/W의 경우 간혹 부속품에 대해서 교체는 가능하며, S/W의 경우 간혹 업데이트가 일어 날 수 있음

EoSPS : End of Service Pack Support


✅ REDHAT 5, 6, 7 EOL

[RHEL 5]
Release date : 2007년 03월 14일
EOL : 2017년 03월 31일
EOL 연장 : 2020년 11월 30일

[RHEL 6]
Release date : 2010년 10월
EOL : 2020년 11월 30일

[RHEL 7]
Release date : 2014년 06월 10일
EOL : 2024년 06월 30일

REDHAT(RHEL) 7
RHEL 7.1 (ended March 31, 2017)
RHEL 7.2 (ended November 30, 2017)
RHEL 7.3 (ended November 30, 2018)
RHEL 7.4 (ends August 31, 2019)
RHEL 7.5 (ends April 30, 2020)
RHEL 7.6 (ends May 31, 2021)
RHEL 7.7 (ends August 30, 2021; Final RHEL 7 EUS Release)

참고 URL : Red Hat Enterprise Linux Life Cycle - Red Hat Customer Portal

Red Hat Enterprise Linux Life Cycle - Red Hat Customer Portal

The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

access.redhat.com


✅ CentOS 5, 6, 7 EOL

[CentOS 5]
Release date : 2007년 04월 12일
EOL : 2017년 03월 31일

[CentOS 6]
Release date : 2011년 07월 10일
EOL : 2020년 11월 30일

[CentOS 7]
Release date : 2014년 07월 07일
EOL : 2024년 06월 30일

[CentOS 8]
Release date : 2019년 09월 24일
EOL : 2021년 12월 31일

  • CentOS 8은 2021년 12월 31일에 지원 중단
  • CentOS는 향후 CentOS Stream 으로 전환
  • CentOS Stream는 RHEL 업스트림 (개발) 배포판

✅ AIX 6, 7 EOL

[AIX 6.1]
(AIX 6.1 TL9)
Release Date : 2013년 11월
EoSPS : 2017년 04월 30일 (EOS)

[AIX 7.1]
(AIX 7.1 TL5)
Release Date : 2017년 10월
EoSPS : 2022년 04월 30일 (EOS)

(AIX 7.1 TL4)
Release Date : 2015년 12월
EoSPS : 2019년 12월 31일(추정)

(AIX 7.1 TL3)
Release Date : : 2013년 11월
EoSPS : 2017년 11월 30일

[AIX 7.2]
(AIX 7.2 TL5)
Release Date : : 2020년 11월
EoSPS : 2023년 11월 30일(추정)

(AIX 7.2 TL4)
Release Date : : 2019년 11월
EoSPS : 2022년 11월 30일(추정)

(AIX 7.2 TL3)
Release Date : : 2018년 09월
EoSPS : 2021년 09월 30일

(AIX 7.2 TL2)
Release Date : : 2017년 10월
EoSPS : 2020년 10월 31일

(AIX 7.2 TL1)
Release Date : : 2016년 11월
EoSPS : 2020년 11월 30일

(AIX 7.2 TL0)
Release Date : : 2017년 10월
EoSPS : 2020년 12월 31일

AIX support lifecycle information (ibm.com)


✅ Windows Server 2008, 2012, 2016 EOL

[Windows Server 2008]
시작날짜 : 2008년 05월 06일
일반 종료 날짜 : 2015년 01월 13일
연장된 종료 날짜 : 2020년 01월 14일

[Windows Server 2012 R2]
시작날짜 : 2013년 11월 25일
일반 종료 날짜 : 2018년 10월 09일
연장된 종료 날짜 : 2023년 10월 10일

[Windows Server 2016]
시작날짜 : 2016년 10월 15일
일반 종료 날짜 : 2022년 01월 11일
연장된 종료 날짜 : 2027년 01월 12일

제품 및 서비스 수명 주기 정보 검색 | Microsoft Docs

제품 및 서비스 수명 주기 정보 검색

참고 수명 주기 내보내기 페이지에서 수명 주기 정보를 내보냅니다. Microsoft 수명 주기는 제품 수명 동안 일관되고 예측 가능한 지원 지침을 제공하여 고객이 IT 투자 및 환경을 관리하는 동시에

docs.microsoft.com

728x90
728x90

** 디스크 증설 작업 후 pv, vg, lv 생성시에 unknown partition table 메시지 발생

-> 해당 디바이스에 파티션 구성이 되어 있지 않아서 create 명령어 수행시마다 뜨는 메시지

(LVM 환경에서 파티션 구성시는 안해도 관계 없음)

# parted /dev/sdb
(parted) print
(parted) mklabel msdos
(parted) quit

 

방안2) /dev/sdb1을 생성을 통한 조치 방법

✅2TB 이상의 스토리지를 사용할 때는 MBR 방식(msdos) 대신 GPT 방식을 사용해야함

*기본적으로 linux partition은 MBR(Master boot Record) 방식이다. 그런데 이 MBR의 파티션당 최대 크기는 2TB이다.

 따라서 18EB(엑사바이트)까지 파티션 크기를 잡을 수 있는 GPT(GUID partition Table) 방식을 써야한다.

[조치결과]

[root@hostname ~]# lsblk
NAME           MAJ:MIN RM     SIZE   RO TYPE MOUNTPOINT
sda                   8:0       0   557.8G   0   disk
⊢sda1               8:1       0         1G   0   part  /boot
⨽sda2               8:2       0       16G   0   part  [SWAP]
⨽sda3               8:3       0   540.8G   0    part
  ⊢rootvg-rootlv 253:0     0      50G    0    lvm  /
...
sdb                  8:16      0     12.2T   0    disk
⨽sdb1              8:17      0      12.2T   0    part

[조치방안]

parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model : FTS PRAID EP420i (scsi)
Disk /dev/sdb: 13.4TB
Sector size (logical/physical): 512B/4096B
Partition Table : gpt
Disk Flags:

Number   Start   End     Size   File system   Name   Flags

(parted) mklabel gpt
(parted) print
(parted) mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance
Ignore/Cancel? Ignore
(parted) print
Model : FTS PRAID EP420i (scsi)
Disk /dev/sdb: 13.4TB
Sector size (logical/physical): 512B/4096B
Partition Table : gpt
Disk Flags:

Number   Start   End     Size   File system   Name   Flags
1          17.4KB 13.4TB 13.4TB                  primary
(parted) quit
lsblk

 

** 참고사항

What causes "unknown partition table" events and how can I prevent them from being logged ? - Red Hat Customer Portal

 

What causes "unknown partition table" events and how can I prevent them from being logged ? - Red Hat Customer Portal

A large number of "unknown partition table" events are constantly being logged in /var/log/messages file: Jul 7 15:01:21 hostname kernel: sdel: unknown partition table Jul 7 15:01:21 hostname kernel: sdaq: unknown partition table Jul 7 15:01:21 hostname ke

access.redhat.com

 

728x90
728x90

✅실제 물리서버의 어느 포트에 케이블이 꽂혀있는지 확인 방법

BMC/iRMC 등에서 어느 어댑터에 케이블이 꽂아져있는지 확인할 수도 있고
아니면 명령어로 물리적 위치를 확인할 수도 있다.(해당되는 인터페이스에 불이 들어옴)
# ethtool -p (인터페이스 명)

 

✅어느 어댑터에 고정 IP 설정하기 위한 방법(BONDING 구성)

만약 ens192와 ens242를 본딩구성하고자 한다면(RHEL 7버전에서)

# cd /etc/sysconfig/network-scripts


# vi ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=none
NAME=ens192
DEVICE=ens192
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# vi ifcfg-ens242
TYPE=Ethernet
BOOTPROTO=none
NAME=ens242
DEVICE=ens242
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# vi ifcfg-bond0
TYPE=Ethernet
BOOTPROTO=none
NAME=bond0
DEVICE=bond0
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100"
IPADDR=192.168.0.104
PREFIX=24
GATEWAY=192.168.0.241

# systemctl restart network
# ip a | grep -i up
# cat /proc/net/bonding/bond0

# ping 192.168.0.241

** 만약 본딩 구성을 삭제하고 다시 잡아야한다면
# modprobe -r bonding
# systemctl restart nework

728x90
728x90

#route 혹은 #netstat -rn 등을 통해 라우팅 테이블을 확인할 수 있다.

 

Kernel IP routing table

DestinationGatewayGenmaskFlagsMSSWindowirttIface
0.0.0.0200.50.100.2510.0.0.0UG000bond1
165.254.0.00.0.0.0255.255.0.0U000bond0
165.254.0.00.0.0.0255.255.0.0U000bond1
200.50.100.2240.0.0.0255.255.255.224U000bond1

[임시 추가 : 시스템 재부팅하면 원상복구됨]

#route add -net 172.26.109.0 netmask 255.255.255.0 gw 172.16.239.240 dev bond0

#route add -net 172.26.110.0 netmask 255.255.255.0 gw 172.16.239.240 dev bond0

 

[영구 추가 : 시스템 재부팅해도 원상복구안됨]

#vi /etc/sysconfig/network-scripts/route-bond0

####Service 1

ADDRESS1=172.26.109.0

NETMASK1=255.255.255.0

GATEWAY1=172.16.239.240

####Service 2

ADDRESS2=172.26.110.0

NETMASK2=255.255.255.0

GATEWAY2=172.16.239.240

DestinationGatewayGenmaskFlagsMSSWindowirttIface
0.0.0.0200.50.100.2510.0.0.0UG000bond1
165.254.0.00.0.0.0255.255.0.0U000bond0
165.254.0.00.0.0.0255.255.0.0U000bond1
172.26.109.0172.16.239.240255.255.255.0UG000bond0
172.26.110.0172.16.239.240255.255.255.0UG000bond0
200.50.100.2240.0.0.0255.255.255.224U000bond1

 

라우팅 테이블은 위의 첫번째 행부터 순차적으로 처리할 패킷을 보낼 수 있는지를 확인한다.

보낸 데이터의 목적지 IP 주소와 Genmask(Subnetmask)과의 AND 연산을 통해 그 결과가 해당 행의 Destination과 동일할 경우에 해당행의 Iface에 있는 인터페이스로 해당 패킷을 전송한다.

728x90

'IT > Linux | AIX' 카테고리의 다른 글

cpufreq governor 옵션 변경 2  (0) 2021.02.04
cpufreq governor 옵션 변경  (0) 2021.01.18
amCLI 명령어_레이드_Fujitsu  (0) 2020.09.20
NFS export & mount  (0) 2020.09.16
nologin 계정  (0) 2020.09.15
728x90

1. 파일 접근 통제

- 리눅스 파일 시스템 FHS

리눅스 파일 시스템, FHS(Filesystem Hierarchy Standard)

'bin'은 모든 사용자가 사용하는 필수 명령어가 들어있다.

'boot'는 부팅에 필요한 모든 파일이 들어있다.

'etc'는 시스템 구성에 필요한 구성 파일이 들어있다. 시스템 관리자들은 해당 폴더를 1순위로 백업해야한다.

'home'은 사용자, 프로젝트 데이터를 보관한다.

'media''mnt'에 mount를 자주한다.

'root'는 root 사용자 데이터를 보관한다. 물론 root로 로그인할 때만 접근 가능하다.

'sbin'은 시스템 관리 및 설정 명령어가 들어있다. 해당 디렉토리도 root 권한이 필요하다.

'usr'은 Unix System Resources의 약자로, 공유가능하고 읽기전용 파일을 저장한다.

 

* 체크 포인트

1. '/''/root'는 완전히 다르다.

2. Binary 디렉토리들의 차이점

'bin' : 모든 사용자가 사용하는 필수 명령어(cat, ls, cp 등)가 저장되어 있는 디렉토리.

'sbin' : 필수 시스템 바이너리(init, ip, route 등), 주로 시스템 관리자용 명령어가 저장되어 있는 디렉토리.

'usr/bin' : 모든 사용자의 중요하지 않은(단일 사용자 모드에서 필요하지 않은) 명령어 바이너리(sudo, vi 등)

 

 

- 소유자, 그룹 멤버 및 모든 사용자

/etc/passwd : 사용자 정보

/etc/group : 그룹 정보

/etc/shadow : 비밀번호 정보

 

 

- 표준 Linux / Unix 파일 사용 권한 (File Permissions)

User(rwx) / Group(rwx) / Others(rwx)

permission On a file On a directory
r(read) read file contents (cat) read directory contents (ls)
w(write) change file contents (vi) create files in (touch)
x(execute) execute the file enter the directory (cd)

* 리눅스 파일 권한 코드는 권한(2진수)을 10진수로 변환하여 읽으면 된다.

예를 들어 permission이 '---'일 때는 000(2)이기 때문에 0이라고 읽으면 된다. permission이 '-w-'일 때는 010(2)이기 때문에 2라고 읽으면 된다. 그래서 만약에 'drwxrwxr-x'라면 775라고 읽으면 된다.

 

 

- 실행순서

1순위. Alias
2순위. Built - in
3순위. Function
4순위. File (path 순서 앞부터)

* 'ls -l'과 'll'은 어떻게 다른가?

'll'이라는 명령어는 기본적으로 존재하지 않는다. 사용자 편의를 위해 'ls -l'을 Alias 기능을 이용하여 등록해둔 명령어이다. 만약 파일을 삭제할 때 실수를 많이한다면, 'rm -i'를 'rm'으로 Alias해둔다면 실수를 줄일 수 있다.

alias rm = "rm -i"		#alias 기능 추가
which rm			#명령어의 경로 확인. 방금 alias 추가한 것도 추가되었을 것이다.
rm test				#test 파일을 제거, rm -i로 실행된다. 

unalias rm			#alias 기능 해제

 

 

- 파일 사용 권한 변경

'chmod (1)234 파일명'으로 변경 가능하다.

 

- 리눅스 파일 사용 권한 기본 설정

파일이나 디렉토리가 생성될 때에 기본으로 주어지는 사용 권한을 제어하기 위해서는 'umask'를 사용한다.

'umask 0022'와 같은 명령어로 파일 사용 권한 기본 설정이 가능하다.

 

- 파일 소유자 변경

sudo chown owner[:group] file

'sudo chown linux: file1'와 같은 명령어로 파일 소유자 변경이 가능하다.

 


 

2. 프로세스 제어

Linux 프로세스 상태 천이

1 Core라면 Running도 1개이다.

4 Core라면 Running은 최대 4개이다.

 

* 체크 포인트

program 파일 시스템에 존재하는 실행 파일이다.
process 프로그램을 실행시키는 실행 주체, 인스턴스이다. 프로그램은 하나이지만, 그 프로그램을 실행하는 인스턴스는 여러 개가 생성될 수 있다.

 

프로세스 상태를 보기 위해서는

'ps -ef'를 사용한다.

 

- 프로세스에 신호(signal) 보내기

kill [-signal] pid

signal을 받는 것을 거부할 수 있는데, 9번(SIGKILL)은 어떤 프로세스도 거부할 수 없다.

 -> 잘 만들어진 프로그램이라면 15번(SIGTERM)을 보낼 것이다.

 


 

3. 문자열 검색

grep 명령어를 통해 문자열 검색할 수 있다.

정규식 표현(Regular Expression)을 함께 사용한다면 보다 정밀한 문자열 검색이 가능하다.

Meta character 의미
^ 라인의 맨 처음
$ 라인의 맨 끝
* 요소를 0번 또는 수차례 매칭시킴
+ 요소를 1번 또는 수차례 매칭시킴
? 선행하는 요소를 0번 또는 1번 매칭시킴
[a-z] 문자 또는 숫자 그룹 중의 하나를 정의, 꺽은 괄호 안에 대문자, 소문자, 숫자를 배치 또는 범위 지정
() 문자나 문자열 그룹을 구성. 그룹에 *, +, ?를 포함할 수 있음
{} 요소가 특정 횟수를 반복하는 경우 매칭
\ 탈출 문자
. 정확하게 한 글자. 실제로 dot(.)을 표시하고자 하는 경우에는 '\.'으로 표시

 

 

- 확장(extended) 정규식 표현 문자열 검색(egrep)

(Alternation(교대) : '|', '+', '?'), (Quantifiers(한정기호) : '{}') 등을 이용한 정밀한 검색이 가능하다.

egrep '^(bz|gz|zip)' binlist.txt

 


 

4. 파일 검색

find 명령어를 통해 시스템 내에 존재하는 파일(일반파일, 디렉터리, 특수파일)들 중에서 사용자가 원하는 파일을 찾을 때 사용 가능하다.

 

xargs 사용하면 파일 검색 결과에 대해 사용자가 정의한 action 실행 효율을 높일 수 있다.

find ~ -type f -name 'file*' -print | xargs ls -l

728x90

'IT > Linux | AIX' 카테고리의 다른 글

Linux 라우팅 테이블  (0) 2021.01.12
amCLI 명령어_레이드_Fujitsu  (0) 2020.09.20
NFS export & mount  (0) 2020.09.16
nologin 계정  (0) 2020.09.15
rsync 복제  (3) 2020.09.15

+ Recent posts