CentOS7 Samba 포트 변경 (smbd_open_one_socket: open_socket_in: permission denied)

포트포워딩으로 samba를 사용하다 이 참에 samba 포트를 바꾸기로 하였다.
포트 바꾸는건 단순히 /etc/samba/smb.conf에서 445와 139를 다른 포트로 바꿔주기만 하면 된다.
그런데 이상하게 samba 실행이 안되는 것이다.

$ systemctl status samba

척 봐도 포트문제인데 쉽게 납득이 가질 않았다.
그러다 문득 생각이 든 게 SELinux.

Devops 과정에서 배포에 문제가 생겼을 때 대충 이 놈을 찍는다면 거진 절반은 정답이다.
그리고 역시 이번에도 이 놈이 범인이었다.
SELinux에 지정된 포트 보안속성이 바뀌지 않아 내가 바꿔준 포트가 적용되지 않았던 것

$ sudo semanage port -l | grep smbd
> smbd_port_t                    tcp      445, 137-139

이에 다음의 커맨드로 SELinux에 변경된 samba 포트를 적용해주면 된다.

$ sudo semanage port -a -t smbd_port_t -p tcp <changed_port>

반대로, 등록된 포트를 지우고싶으면 a 대신 d를 사용하면 되는데
selinux에서 디폴트로 관리되는 포트는 지워지지 않으니 참고하면 된다.
이제 에러 없이 실행이 잘 될 것이다.

이제 방화벽을 오픈해 사용하면 된다.
필자는 CentOS7을 사용하므로 아래와 같이 방화벽을 오픈한다.

$ firewall-cmd --permanent --zone=public --add-port=<changed_port>/tcp
$ firewall-cmd --reload

댓글 남기기