심볼릭 링크 작업이 필요한데,
권한은 특정 사용자로 한정해야하는 일이 있었어요
그런데 ln -s에는 chown이 안먹히더라고요.
그래서 검색하던 중 bind를 찾앗어요
예상 독자
- 심볼링 링크에 권한 부여해야하는 분
목차
1. 왜 심볼릭 링크에 권한 관리가 필요했는가?
2. bind를 이용해 어떻게 해결했는가?
+ ftp로 상위 폴더 못가게 하기
1. 왜 심볼릭 링크에 권한 관리가 필요했는가?
`ftp로 업로드하면, nginx로 다운로드하고 싶다` 는 요청이 들어왔어요
아래처럼 계획을 세분화했어요
1. adminftp/userftp를 만든다.
2. admin 은 저장/삭제가 가능하다.
3. user는 저장만 가능하다(수정 불가)
4. *ssh 접근을 못하게 막는다.
5. ftp 상위 폴더 접근을 못하게 막는다.
4번까지는 문제 없이 진행되다가
5번에서 막혔어요
디스크 마운트해서 /u01/ftp-folder 만들고
심볼릭 연결한 다음에, 권한으로 제한하려 했거든요
근데 심볼링 링크는 chown, chmod가 안되네요
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
2. bind를 이용해 어떻게 해결했는가?
`심볼링 링크에 권한 관리` 를 좀 더 풀어서 해석하면
`특정 Usefile download만 되도록 설정`
이더라고요
먼저 디렉토리를 생성해요
# 디렉토리 생성
## sftp 특정 폴더 생성
$ mkdir -p /u01/ftp/files
## 사용자 디렉토리 생성
## download만 가능하도록 하는 user(userftp)는 홈 디렉토리에 mount 폴더 생성
$ mkdir -p /home/adminftp/sftp
$ mkdir -p /home/userftp/sftp
admin 제외하고는 일단 모두 접근 못하게해야하니까,
admin만 write할 수 있도록 설정해요
# 권한 설정
## 소유자 설정(admin)
$ chwon -R adminftp:adminftp /u01/ftp/files #소유자(adminftp)로 폴더 생성
$ chmod -R 755 /u01/ftp/files #해당 폴더 권한은 소유자 외에는 write 권한 제외(755로 세팅)
이제는 fstab에 bind 옵션을 설정했어요
(디스크 마운트할 때만 써봤지 bind 설정이 있는지는 몰랐어요)
/etc/fstab에 아래처럼 수정하고 mount -a로 반영했어요
$ vi /etc/fstab
/dev/mapper/VG01-lvroot / xfs defaults 0 0
(생략)
/u01/ftp/files /home/userftp/sftp none bind,defaults 0 1 # 추가
/u01/ftp/files /home/adminftp/sftp none bind,defaults 0 1 # 추가
이렇게하니까 특정 사용자가 ftp로 동일한 폴더에 접근할 수 있게되었어요.
이제 거의 다 왔어요
+ ftp로 상위 폴더 못가게 하기
ssh 접근은 막았지만, ftp 접근했을 때 상위 폴더 못가게 막아야했어요
- ChrootDirectory %h
- ForceCommand internal-sftp
$ vi /etc/ssh/sshd_config
Match User adminftp
ChrootDirectory %h #sftp로 접속 시 home directory 상위 path로 못 가도록 설정
ForceCommand internal-sftp #ssh 막기
PasswordAuthentication yes
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
Match User userftp
ChrootDirectory %h #sftp로 접속 시 home directory 상위 path로 못 가도록 설정
ForceCommand internal-sftp #ssh 막기
PasswordAuthentication yes
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
그리고 chroot directory의 소유자를 root로 설정하면 위로 못올라가요
$ chown root:root /home/adminftp
$ chown root:root /home/userftp
sshd 접속 log 확인로 확인하면 ssh 접근도 안되고, 상위 폴더로 못올라가는걸 확인 할 수 있어요
$ tail -100f /var/log/secure
뭔가 fstab bind 관련된 정보 메모하려다가 길어졌네요 ㅋㅋ
참고사이트
- https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-16-04
- https://askubuntu.com/questions/550813/how-to-create-link-that-can-be-followed-in-sftp
- https://serverfault.com/questions/660160/openssh-difference-between-internal-sftp-and-sftp-server
- https://serverfault.com/questions/584986/bad-ownership-or-modes-for-chroot-directory-component
'기타 > Linux' 카테고리의 다른 글
linux) bash script로 yyyymmdd 뽑기 (0) | 2023.01.09 |
---|---|
Linux) ssh no matching MAC found 오류_해결 (0) | 2022.12.09 |
Linux) 오프라인 apt 설치 (0) | 2022.11.06 |
linux) Curl의 proxy 설정_.curlrc (0) | 2022.10.12 |
linux) 서버 포멧, 이동(mkfs, 무진동차량) (0) | 2022.05.07 |