본문 바로가기

Linux

Linux #9

Windows Server Linux 시스템에서 

그룹을 생성하고(OR 내장그룹 사용), 해당 그룹에 권한을 부여하고, 해당 그룹에 여러 사용자를 넣으면, 해당 그룹의 모든 사용자들은 같은 권한을 가지게 된다.

=>그룹은 항상 내장 그룹(%wheel)과 사용자 정의 그룹이 있다.

 

** Ubuntu에서는 설치 시 root 사용자가 있고 패스워드가 지정되어진다.

   일반 사용자에서 sudo su 하면 일반 사용자의 패스워드로 root로 들어갈 수 있다.

=>최초 사용자 ubuntu는 이미 /etc/sudoers 파일에 기록되어져 있다.

하지만 Ubuntu에서 /etc/sudoers에서의 그룹은 %sudo 그룹이다.

 

  PAM(Pluggable Authentication Module) 모듈로 su를 설정해보자.

PAM /etc/pam.d에 있는 모듈별 파일로 인증을 관리하는데 여기에는

crond, login, passwd, reboot, remote, setup, sshd, su, sudo, xserver 등이 있다. 예를 들어서 원래 /etc/crond 아래의 설정파일들이나 /etc/ssh/sshd_conf 파일의 설정파일에서 각각 해당 모듈에 대한 사용자 인증을 설정할 수 있지만 /etc/pam.d/crond /etc/pam.d/sshd에서 인증 설정을 해주면 작업 효율과 보안이 증진되고, 설정 상 오류를 줄일 수 있다.

  중요한 것은 crond sshd의 원래 설정파일의 설정보다 이 PAM에서의 해당 모듈에 대한 설정이 시스템에 우선 적용된다. 

 

  그룹 생성 – groupadd

  그룹 삭제 - groupdel

  그룹 속성변경 – groupmod chgrp

 

  사용자와 그룹 등의 속성을 보이는 - finger, id, groups, getent

  getent(get entries의 의미)

  Linux 시스템에서는 어느 명령어를 실행하면 내부적으로 /etc/nsswitch.conf 파일에 정의된 엔트리를 데이터베이스와 라이브러리 파일에서 찾아서 접속해서 해당 명령어를 실행시키는데 getent는 이런 엔트리를 보이는 명령어이다.

  대부분 엔트리는 /etc/ 아래에 있다. 'getent 명령어'하면 직접 해당 명령어를 실행하는 것과 같다.

  /etc/nsswitch.conf 파일은 원격지 호스트의 (데이터베이스에 저장되어 있는) passwd 파일에 접속할 때도 사용된다. /etc/passwd 파일은 로컬 호스트에 있는 파일이고, 도메인에 있는 엔터프라이즈 Linux 서버는 네트워크에서 사용자의 도메인 로그인 인증 정보를 가지고 있다가 사용자가 로그인할 때 필요한 정보를 대신 제공해서 인증시키는 NIS(Network Information Service)를 사용해서 도메인 전체 사용자의 로그인 계정을 관리할 수 있다.

grep passwd /etc/nsswitch.conf 해보면 nis를 확인할 수 있다.  

 

  프로세스 확인 명령어 - ps, pstree, top pidof, pgrep, pmap

ps -ef |grep ssh 하면

root 66481  65146  0   12:01 pts/0  00:00:00         grep ssh

user/ PID/   PPID  /size /time /tty   /%cpu:%mem:start /stat command   

 top 하면 CPU/RAM/SWAP의 정보를 실시간으로 보여준다.

=>l을 입력하면 top의 정보를 감추고, m을 입력하면 Mem 정보를 감추며, t를 입력하면 Cpu Mem 항목이 감춰진다.

 k를 입력하면 죽일 프로세스를 입력하게 하고

 r을 입력하면 nice를 설정하게 하는 renice가 뜬다. nice는 실행의 우선순위 설정이다.

 =>nice -20~20순으로 되어 있다. renice는 운선순위 설정 변경이다.

 

특정 작업의 프로세스를 보는 - fuser

프로세스 종료 명령어 - kill, killall pkill, skill 

=>kill -1(up) PID, kill -19(stop) PID, kill -9(kill) PID 하면 된다.

skill CONT, KILL, STOP 등의 명령어로 프로세스 제어

 

프로세서의 우선순위 표시(nice), 우선순위 변경(renice)

=>-20 ~ 20(19)으로 설정해주는데 -20 first priority이다.

=>100 페이지 인쇄물이 실행중인데 1장 인쇄물을 인쇄할 때 바로 이 renice로 한 장 인쇄물의 우선순위를 변경하면 100장 인쇄 중간이라도 한 장이 먼저 인쇄된다.

 

메모리 관련 명령어 - free sync

=>캐시에 저장된 쓸데없는 메모리를 반환해서 시스템이 사용하게 해야 한다.

주기적으로 처리한다면 crond를 사용하면 된다.

 

커널 정보를 보이는 - uname

백그라운드 작업을 보이는 - &, bg, fg, %, 그리고 jobs, disown

  명령어 & : 해당 명령어 작업을 백그라운드로 실행시킴

  % : (최근) 작업번호를 보임

  bg : 포그라운드 작업을 백그라운드로 보냄

  fg %job_id : 해당 백그라운드 작업(job_id)을 포그라운드로 불러 올림

  jobs : 모든 백그라운드 작업을 보임(여기서 jobs –p 하면 모든 백그라운드 잡의 PID           보이고, jobs –r 하면 백그라운드 잡만 보이며, jobs –s 하면 일시 정지된(Suspend) 잡을 보이고, jobs 2 하면 2번 잡만 보인다) 

  notify %job_num : 해당 백그라운드 작업(job_num)이 끝나면 알림

  []+ / []- : []+ fg bg 명령어에 의해 현재 실행되고 있는 디폴트 잡이며,

              []-는 현재 디폴트 잡이 중지되었을 때 새로 실행될 잡 등의 옵션이 있다.

 

시스템 사용자에 관한 정보 - who, w, users, last, lastb, whoami finger, id 

도구     설명

wtmp    /var/log/wtmp에 있고 last 명령어의 결과를 저장하는데 로그기록으로 시간별 이벤트와 로그인한 호스트의 IP와 시간, 그리고 리부팅 날짜 등이 들어 있다. 여러 로그인 정보를 보인다.

           ->utmp history 기능이다.

btmp    /var/log/btmp에 있으며 lastb 명령어의 결과를 저장하는데 실패한 로그인 정보를 보인다.

utmp    /var/run/utmp에 있고 w, who, finger 명령어의 결과를 저장한다. 성공한 로그인 정보를 보인다.

 

서버 : 서비스를 제공하는 머신

클라이언트 : 서비스를 요청하는 머신

 

  Linux 서버는 여러 서비스를 실행하고 있으므로 클라이언트 머신에서 다양한 서버 서비스에 접속해서 작업할 수 있다. 서버는 서비스(Web, FTP, VNC, Database, Proxy, Mail, Name, DNS, DHCP, ...)를 데몬(daemon) 형태로 실행시켜둔다.

 

  보통 다음 단계로 서비스를 수행한다. 예를 들어서 SSHD 데몬이라면

(필요하면) 해당 프로그램을 설치하고

② 해당 서비스의 구성 설정파일(/etc/ssh/sshd_conf)이 있으면 상황에 맞게 변경해주고

system-config-firewall 해서 방화벽에서 해당 서비스 포트 22를 열어두고

=>CentOS 7에서는 firewall-config 

setenforce 0 해서 SELinux 설정을 permissive로 해두고, getenforce로 확인하고,

service sshd (re)start식으로 해당 서비스 데몬을 ()실행시킨 뒤

=>CentOS 7에서는 systermctl start sshd ; systemctl enable sshd

netstat –nltp |grep 22 해서 해당 서비스 포트가 듣고 있는지 보고

(필요하면) chkconfig sshd --level 35 on식으로 실행 레벨을 정해주고

⑧ 이제 클라이언트들을 해당 서비스로 접속시켜서 서비스를 이용하게 한다.

 

서비스 실행은 service network restart/start/stop/status 식인데

CentOS 7에서는 systemctl start network 

리커시에서는 /etc/(rc.d/)init.d/network start식으로 해주어도 된다.

 

  리소스 제한하기

  여러 클라이언트들이 동시에 한 서버에 연결되면 세션이 많아지게 되고 서버는 많은 리소스(HDD, RAM, CPU)를 사용하게 되므로 서버의 리소스가 고갈되어 서버 성능이 많이 떨어지게 된다. 이를 대비해서 관리자는 연결 세션 수를 제한하거나 사용자들의 서버 리소스 사용에 대한 한계를 설정해 둘 필요가 있다.

  사용자들이 사용하는 서버의 HDD 사용량은 disk quotas로 지정하고, CPU RAM, Process 용량은 /etc/security/limits.conf 파일에서 지정해주면 된다.

'Linux' 카테고리의 다른 글

Linux #11  (0) 2023.02.03
Linux #10  (0) 2023.02.01
Linux #8  (0) 2023.01.20
Linux #7  (0) 2023.01.18
Linux #6  (0) 2023.01.17