Maxima's Lab

[Python] 공유 폴더 설정 및 삭제 하기 (Ubuntu, Samba, smbclient, mount/unmount) 본문

Python

[Python] 공유 폴더 설정 및 삭제 하기 (Ubuntu, Samba, smbclient, mount/unmount)

Minima 2024. 5. 7. 21:53
728x90
SMALL

안녕하새요, 오늘은 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 하는 방법에 대해서 알아보았습니다.

감사드립니다.

728x90
LIST
Comments