일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Computer Vision
- pytorch
- kubernetes
- POD
- 그래픽 유저 인터페이스
- Django
- GUI
- tensorflow
- yaml
- 딥러닝
- Docker
- 파이토치
- vue.js
- 웹 프로그래밍
- MariaDB
- paper review
- 텐서플로우
- Deep Learning
- k8s
- 컴퓨터 비전
- 데이터베이스
- numpy
- 논문 리뷰
- 장고
- Web Programming
- 파이썬
- Tkinter
- OpenCV
- FLASK
- Python
- Today
- Total
Maxima's Lab
[Python] 공유 폴더 설정 및 삭제 하기 (Ubuntu, Samba, smbclient, mount/unmount) 본문
안녕하새요, 오늘은 Ubuntu 운영 체제에서 Samba 서비스를 사용하여 공유 폴더를 설정하고 해제하는 방법에 대해서 알아보겠습니다.
먼저, samba 패키지를 설치합니다.
sudo apt-get update
sudo apt-get install samba
위의 명령어를 통해 samba 패키지를 설치 후 서비스 상태 확인을 다음 명령어를 통해 확인합니다.
sudo systemctl status smbd
서비스 상태가 정상적인 것을 확인 후 다음 명령어를 통해 시스템 사용자 추가 후 Samba 사용자로 추가합니다.
sudo adduser 사용자이름
sudo smbpasswd -a 사용자이름
위의 명령어 실행 후 사용자의 Samba 비밀번호를 입력가능합니다.
또한, 외부에서 Samba 서비스에 접근하기 위해서는 필요한 포트를 방화벽에서 열어주어야 합니다.
sudo apt-get install ufw
sudo ufw enable
이어서 특정 IPs에 대해 Samba 서비스에 접근할 수 있도록 설정해줄 수 있습니다.
sudo ufw allow from {IP-1} to any port 445 proto tcp
sudo ufw allow from {IP-2} to any port 445 proto tcp
sudo ufw allow from {IP-3} to any port 445 proto tcp
설정이 올바르게 적용되었는 지 다음 명령어를 통해 확인 가능합니다.
sudo ufw status verbose
최종적으로 반드시 방화벽을 Reload 해주어야 합니다.
sudo ufw reload
이어서, 파이썬을 통해 공유 폴더를 설정하는 코드에 대해서 알아보겠습니다.
import os
def add_samba_share(share_name, path, read_only=True):
with open('/etc/samba/smb.conf', 'a') as file:
file.write(f"\n[{share_name}]\n")
file.write(f"path = {path}\n")
file.write(f"valid users {사용자이름}\n")
file.write("browseable = yes\n")
file.write(f"read only = {'yes' if read_only else 'no'}\n")
file.write("guest ok = no\n")
os.system("sudo systemctl restart smbd")
add_samba_share('MyShare', '/home/username/shared_folder', read_only=False)
이어서 공유 폴더 해제 하는 코드에 대해서 알아보겠습니다.
def remove_samba_share(share_name):
with open("/etc/samba/smb.conf", "r") as file:
lines = file.readlines()
with open("/etc/samba/smb.conf", "w") as file:
in_section = False
for line in lines:
if line.strip().startswith(f"[{share_name}]"):
in_section = True
elif in_section and line.startswith('['):
in_section = False
if not in_section:
file.write(line)
os.system("sudo systemctl restart smbd")
remove_samba_share('MyShare')
이어서, Linux 및 유닉스 시스템에서 Samba 공유 폴더에 접근하기 위한 도구인 smbclient에 대해서 알아보겠습니다.
이를 사용하기 위해서 다음 명령어를 통해 설치 가능합니다.
sudo apt update
sudo apt install smbclient
설치 완료 후 다음 명령어를 통해 Samba 공유 목록을 볼수 있습니다.
smbclient -L //서버주소 -U 사용자명
위의 명령어를 통해 확인한 공유 폴더를 cifs-utils 패키지를 통해 Mount 할 수 있습니다.
sudo apt-get update
sudo apt-get install cifs-utils
위의 명령어를 통해 cifs-utils 패키지를 설치 후 Mount 할 디렉토리를 생성합니다.
(Mount 시에는 빈 디렉토리에 적용하는 것이 좋습니다.)
sudo mkdir /mnt/samba_share
디렉토리 생성 후 다음 명령어를 통해 수동 Mount 가능합니다.
sudo mount -t cifs //서버주소/공유명 /mnt/samba_share -o username=사용자명,password=비밀번호
하지만, 수동 Mount 시에 시스템 재부팅 하면 다시 Mount를 해주어야 하기 때문에 /etc/fstab 파일에 다음과 같이 추가합니다.
//서버주소/공유명 /mnt/samba_share cifs username=사용자명,password=비밀번호,iocharset=utf8,sec=ntlmssp 0 0
sudo mount -a
Mount 된 공유에 대해 Unmount 하기 위한 명령어는 다음과 같습니다.
sudo umount /mnt/samba_share
지금까지, Ubuntu(Linux)에서 공유 폴더를 설정하고 해제 및 Mount/Unmount 하는 방법에 대해서 알아보았습니다.
감사드립니다.
'Python' 카테고리의 다른 글
[Python] Cryptography 라이브러리 (hazmat 모듈) 사용법 (0) | 2024.07.09 |
---|---|
[Python] .bat 파일을 활용하여 공유 폴더 설정 및 해제(Windows) (0) | 2024.05.10 |
[Python] 파이썬으로 한글 Text를 Encoding, Decoding 하는 방법 (0) | 2024.04.13 |
[Python] 쉘 스크립트 (배치) 파일 내부에서 쉘 스크립트 (배치) 파일 실행하는 방법 (0) | 2024.02.27 |
[Python] 쉘 스크립트 파일(.sh) & 배치 파일(.bat) 작성 및 실행하는 방법 (0) | 2024.02.27 |