오늘은 오랜만에 리눅스 환경 관련 설정법을 가져와 봤다.
이 방법은 다른 팀에게 장비를 알려주었을 때
특정 디렉토리 밖의 것을 보지 못하도록
(그 디렉토리 이외에 다른 것이 없는 것처럼 보이도록)
설정하는 방법이다.
감옥 안에 가두는 것과 비슷해서 jailing이라고 하는 것 같다.
먼저 user를 생성한다.
jail이라는 이름으로 하겠다.
useradd jail
passwd jail
그 유저용 환경을 생성해주기 위해 필요한 디렉터리를 생성해준다.
mkdir -p /[PATH]
여기서 [PATH]는 user의 root가 될 경로다.
절대 경로로 해주는 것이 헷갈리지 않아서 앞의 /를 넣어서 명령어를 치겠다.
root가 바뀌고 다른 경로 접근이 안되기 때문에
리눅스 환경을 설정하기 위해 필요한 디렉토리를 만들고 권한 설정을 해준다.
#PATH는 루트가 될 경로
mkdir -p /[PATH]/{dev,etc,lib,lib64,usr,bin}
mkdir -p /[PATH]/usr/bin
chown root.root /[PATH]
먼저 /dev에 설정되어 있는 것을 확인 후 [PATH] 아래의 dev에 다음과 같이 설정해준다.
mknod -m 666 /[PATH]/dev/null c 1 3
mknod -m 666 /[PATH]/dev/random c 1 8
mknod -m 666 /[PATH]/dev/tty c 5 0
mknod -m 666 /[PATH]/dev/zero c 1 5
/etc 아래에 있는것들중 필요한 파일들을 [PATH]/etc에 복사해준다.
cd /[PATH]/etc
cp /etc/ld.so.cache .
cp /etc/ld.so.conf .
cp /etc/nsswitch.conf .
cp /etc/hosts .
/usr/bin 아래에 있는 파일들을 복사해서 명령어를 사용할 수 있도록 한다.
cd /[PATH]/usr/bin
cp /usr/bin/ls .
cp /usr/bin/bash .
여기서 링크된 라이브러리들을 ldd 명령어로 확인 후 PATH 아래에 같은 경로에 복사해준다.
아래는 ls를 확인하는 예제다.
ldd ls
필요한 명령어들을 모두 추가했으면
/etc/ssh/sshd_config 파일의 마지막에 다음과 같이 추가한다.
Match group [USER]
ChrootDirectory /[PATH]/
X11Forwarding no
AllowTcpForwarding no
여기서 USER는 jail을 넣으면 된다.
이 설정을 저장한 후 ssh 데몬을 restart한다.
centos 기준 systemctl restart sshd를 하면 된다.
이 방법은 서버에서 해당 디렉터리 이외의 접근은 아예 못하게 할 수 있어서
장비 정보를 프로젝트 외부의 사람들에게 전달할 때 많이 사용된다.
'Linux > Commands' 카테고리의 다른 글
[Linux] 시스템 타임 존 변경하기 (4) | 2022.07.28 |
---|
댓글