개요
NIS는 무엇일까?
NIS는 네트워크 상의 여러 호스트가 사용자의 계정 정보를 공유할 수 있도록 도와주는 서비스다.
NIS는 왜 필요할까?
예를 들어 연구실에 서버 10대가 있고, 연구원이 20명이 있다고 가정하자. 연구원은 모든 서버에 접근할 수 있어야 하므로 20명의 계정이 서버 10대에 각각 추가되어야 할 것이다. 즉 사람은 20명인데 200개의 계정을 추가하고 관리하는 상황이 일어날 것이다.
때문에, NIS라는 사용자 계정 중앙 관리 시스템을 구축해두고 나머지 19대의 서버는 NIS의 서비스가 있는 서버에 접근하여 인증을 대신 받게 되는 것이다.
요즘은 왜 안보일까?
암호화 되지 않은 통신을 사용하고, 확장성이 부족한 문제가 있어 현재는 LDAP, Kerberos와 같은 더 안전한 인증 시스템으로 대체되는 경우가 많다. 하지만 인증서비스의 기반이 되었기 때문에 원리를 알아두는 것이 좋다.
NIS 서비스
서비스 | 설명 |
ypserv.service | NIS서버의 메인 데몬이다. 클라이언트가 계정 정보나 그룹 정보를 요청하면 NIS 서버의 맵 데이터베이스를 조회하여서 응답해주는 역할을 한다. |
yppasswdd.service | 클라이언트가 원격에서 자신의 비밀번호를 변경할 수 있도록 처리하는 데몬이다. 예를들어 클라이언트 사용자가 yppasswd 명령어를 실행하면 ypasswdd가 실행 중인 NIS 서버로 요청이 도착하고, /etc/passwd나 /etc/shadow를 업데이트 하고 make로 맵 파일을 재생성한다. |
ypxfrd.service | 슬레이브 서버와 마스터 서버 간에 맵데이터를 빠르게 동기화하도록 만들어주는 데몬이다. NIS 서버는 보통 마스터 - 슬레이브 서버 구조로 운영된다. 슬레이브 서버는 ypxfr 명령어로 자신의 맵 파일을 제공하고 마스터 서버는 업데이트 된 맵을 제공해주어 동기화를 유지하게 된다. |
왜 보통 마스터 - 슬레이브 구조로 운영할까?
중앙에서 계정을 모두 처리하는 만큼 중앙 서비스가 다운되면 묶여있던 클라이언트의 계정 인증이 모두 마비될 것이다. 정말 아무런 동작도 할 수 없는 위험한 상황이 될 수 있다. 때문에, 중앙 서버의 의존도를 분산하고자 마스터 - 슬레이브 구조를 일반적으로 채택한다.
NIS 서버 설치 및 설정
패키지 설치
$ dnf install -y epel-release # ypserv 패키지를 찾지 못하는 경우 선행
$ dnf install -y ypserv
도메인 설정
$ nisdomainname example.com
# /etc/sysconfig/network 파일에 다음과 같이 수동 등록으로도 가능하다.
NISDOMAIN=example.com
서비스(데몬) 실행
# rpc 데몬 실행
$ systemctl start rpcbind
# NIS 데몬 실행
$ systemctl start ypserv.service yppasswdd.service ypxfrd.service
# 부팅시 자동 시작
$ systemctl enable ypserv.service yppasswdd.service ypxfrd.service
NIS는 RPC를 이용하여 동작하기 때문에 RPC 서비스가 먼저 활성화되어 있어야 한다.
맵 데이터 베이스 설정
$ make -c /var/yp
$ systemctl restart ypserv.service yppasswdd.service ypxfrd.service
NIS 클라이언트 설치 및 설정
패키지 설치
$ dnf install -y ypbind yp-tools
도메인 설정
$ nisdomainname example.com
# /etc/sysconfig/network 파일에 다음과 같이 수동 등록으로도 가능하다.
NISDOMAIN=example.com
도메인 정보 설정
/etc/yp.conf 파일에 NIS 서버 정보와 도메인 정보를 등록한다.
ex)
server example.com
ypserver example.com
domain example.com
서비스(데몬) 실행
$ systemctl start ypbind.service
클라이언트 설정
$ authconfig --enablenis --nisdomain=example.com --nisserver=nis.example.com --update
로그인
$ ssh user@192.168.13.5
기존 ssh로 접근하는 방식 그대로 접근하면 된다.
관련 명령어
명령어 | 설명 |
nisdomainname | 현재 NIS 도메인 이름을 표시하거나 설정 |
ypwhich | 현재 연결된 NIS 서버를 표시 |
ypcat | 지정된 NIS 맵 데이터를 출력 |
yptest | NIS 서버와의 연결 및 동작 상태를 테스트 |
yppasswd | NIS 계정의 비밀번호를 변경 |
ypchsh | NIS 계정의 기본 로그인 셸을 변경 |
ypchfn | NIS 계정의 사용자 정보(full name 등)를 변경 |
문제
도메인명 설정
1) NIS 도메인명을 example.com으로 지정하는 명령어를 입력하세요.
2) 재부팅 시에도 NIS 도메인명을 example.com으로 적용시키기 위한 파일의 전체 경로를 작성하세요.
3) 위 파일에서 작성해야할 값을 입력하세요.
더보기
1) nisdomainname example.com
2) /etc/sysconfig/network
3) NISDOMAIN=example.com
서비스 실행
1) NIS 서버를 구동하기 전 반드시 실행되어야 하는 데몬을 실행하는 명령어를 작성하세요.
2) NIS 서버 관련 서비스 데몬 3개를 실행하는 명령어를 작성하세요.
더보기
1) systemctl start rpcbind
2-1) systemctl start ypserv.service
2-2) systemctl start yppasswdd.service
2-3) systemctl start ypxfrd.service
더보기
[root@ca4a3625e4dc /]# systemctl list-unit-files --type=service | grep yp
ypbind.service disabled
yppasswdd.service disabled
ypserv.service disabled
ypxfrd.service disabled
명령어
클라이언트에서 아래와 같은 작업을 하기 위한 내용을 작성하세요.
1) NIS 서버 이름을 출력하는 명령어를 작성하세요.
2) NIS 서버의 맵 파일을 출력하는 명령어를 작성하세요.
3) NIS 서버의 사용자 관련 정보를 출력하는 명령어를 작성하세요. (mapname은 passwd.byname 사용)
4) NIS 서버에 등록된 user 사용자의 패스워드를 변경하는 명령어를 작성하세요.
더보기
1) ypwhich
2) ypwhich -m
3) ypcat passwd.byname
4) yppasswd user
'자격증' 카테고리의 다른 글
[리눅스마스터 1급] 16. DHCP 서비스 (0) | 2025.05.05 |
---|---|
[리눅스마스터 1급] 15. 프록시 서비스 (Squid) (0) | 2025.05.05 |
[리눅스마스터 1급] 13. DNS 서비스 (bind) (0) | 2025.05.05 |
[리눅스마스터 1급] 12. 메일 서비스 (sendmail) (0) | 2025.05.03 |
[리눅스마스터 1급] 11-3. 파일 서비스 (vsftpd) (0) | 2025.04.30 |