포트포워딩으로 samba를 사용하다 이 참에 samba 포트를 바꾸기로 하였다.
포트 바꾸는건 단순히 /etc/samba/smb.conf에서 445와 139를 다른 포트로 바꿔주기만 하면 된다.
그런데 이상하게 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