리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

같은 서버내의 서로 다른 계정끼리 폴더를 공유하는 방법이다.

공유할 폴더 : /home/testuser/공유폴더

공유할 사용자 : testuser1, testuser2

이후부터는 root로 작업한다.

1. 그룹을 만든다

# groupadd mygroup

2. 새로 만든 그룹에 속할 계정을 지정해 준다.(계정은 미리 만들어져 있어야 함)

# usermod -a -G mygroup testuser1
# usermod -a -G mygroup testuser2

-a : 그룹에 추가

-G : 다음에 그룹명 지정

mygroup : 그룹명

testuser1, testuser2 : 사용자계정

3. 그룹을 확인해 본다.

# cat /etc/group
mygroup:x:1011:testuser1,testuser2

group 파일의 하단에 위와 같이 그룹이 지정된 것을 확인할 수 있다.

4. 공유폴더의 그룹명을 변경해 준다.

# chgrp -R mygroup /home/testuser/공유폴더
# chmod -R 2775 /home/testuser/공유폴더

2 : 새롭게 생성되는 하위 폴더에 같은 그룹을 지정해주는 옵션

7 : 소유자에게 rwx(4+2+1) 권한 주기

7 : 그룹에게 rwx(4+2+1) 권한 주기

5 : 타인에게 rx(4+1) 권한 주기

5. 새로운 사용자를 생성하면서 이 그룹에 추가하려면 아래와 같이 하면 된다.

# useradd -m -c "Test User3" -s/bin/bash -G mygroup testuser3

공유설정은 끝났다.

6.

testuser1 계정으로 로그인해서 심볼릭링크를 걸어보자.

# ln -s /home/testuser/공유폴더 ./공유폴더

공유폴더 링크가 생성되었다.

ftp로 접속을 하면 폴더가 보인다.

그런데 접근이 안된다.

vsftpd설정에서 chroot_list 옵션을 사용중이어서 상위폴더로 접근이 금지되어 있기 때문이다.

7. 다음과 같이 해보자

심볼릭링크를 삭제한다.

그리고 아래와 같이 폴더를 생성한다.

# mkdir 공유폴더

아래와 같이 원본공유 폴더를 새로 생성한 공유폴더에 마운트 한다.

# mount --bind /home/testuser/공유폴더 ./공유폴더

원본 공유폴더에 777권한을 준다.

# chmod 777 /home/testuser/공유폴더

테스트를 해본다.

testuser1, testuser2 등 각기 다른 다른 사용자로 접속하여 파일을 생성하고 삭제해 본다.

정상적으로 작동한다.

*추가

재부팅하면 mount 가 해제되므로 다시 설정해야 함.

해당 폴더에 쓰기가 안된다면 selinux 를 아래와 같이 변경

# setsebool -P allow_ftpd_full_access 1

끝.

Ubuntu 20.04가 설치된 컴퓨터와 Windows 10이 설치된 컴퓨터간 파일 공유를 위해 삼바 설정 하는 방법을 설명합니다. 

SMB (Server Message Block) 

윈도우가 설치된 컴퓨터가 파일 공유, 프린터 같은 리소스에 연결하는데 사용합니다. 

Samba는 SMB 프로토콜을 리눅스에서 구현한 것입니다.

윈도우와 리눅스가 설치된 컴퓨터 사이에 파일과 프린터 정보를 전송할 수 있도록 해줍니다.

2014.  7.  16  최초작성

2021. 11. 13 최종작성

1. 윈도우에서 공유 폴더 만들기

2. Samba 설치 및 설정

3. 윈도우에서 Ubuntu의 공유폴더 접근

4. Ubuntu에서 윈도우의 공유 폴더 접근

1. 윈도우에서 공유 폴더 만들기

윈도우에서 해야하는 네트워크 설정 및 공유폴더 생성 방법에 대해서 설명합니다.

1. 윈도우 키 + R을 누르고 다음 명령을 입력하여 실행합니다.

control /name Microsoft.NetworkAndSharingCenter

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

2. 고급 공유 설정 변경을 선택합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

3.  네트워크 검색 켜기와 파일 및 프린터 공유 켜기를 체크합니다.

윈도우에 따라 홈 그룹 연결 항목은 안 보일 수 있습니다. 

(윈도우 업데이트를 했는지 여부에 따라서도 달라집니다.)

아래 화면처럼 선택하고 변경 내용 저장을 클릭합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong
리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

4. 공유할 폴더를 선택하고 마우스 우클릭 후, 메뉴에서 속성을 선택합니다.

공유 탭을 선택하고 고급 공유를 클릭합니다. 

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

5. 선택한 폴더 공유를 체크하고 권한을 클릭합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

6. 추가를 클릭합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

7. 선택할 개체 이름에 라즈베리파이에서 공유폴더에 접근시 사용할 윈도우에 등록된 사용자 이름을 적어주고 확인을 클릭합니다. 

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

8. 방금 추가된 사용자를 선택하고 모든 권한의 허용을 체크해줍니다.  

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

9. 추가한 사용자외에 다른 사람들은 공유폴더에 접근할 수 없도록 Everyone을 선택하고 제거를 클릭합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

10. 파일 공유시 방어벽이 문제가 안되도록 설정을 변경해줘야 합니다.

제어판에서 시스템 및 보안 > Windows 방어벽에서 앱 허용을 선택합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong
리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

11. 설정 변경을 클릭합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

12. 목록에서 파일 및 프린터 공유를 찾아서 개인 항목을 체크하고 확인을 클릭합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

제어판\프로그램\프로그램 및 기능 에서 Windows 기능 켜기/끄기를 선택합니다.

SMB 1.0/CIFS 파일 공유 지원을 체크합니다.

재부팅이 필요합니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

컴퓨터 이름을 사용하기 쉬운 것으로 변경하고 윈도우 계정에 패스워드를 추가해야 합니다.

2. Samba 설치 및 설정

1. samba 패키지를 설치합니다.

$ sudo apt-get update

$ sudo apt-get install samba

2. 홈 디렉토리에 공유할 디렉토리를 생성합니다.

$ mkdir ~/sambashare/

3. 공유할 디렉토리에 대한 설정을 추가합니다.

$ sudo nano /etc/samba/smb.conf

마지막줄에 다음 내용을 추가합니다. username은 사용자 이름으로 바꾸세요

[sambashare]

    comment = Samba on Ubuntu

    path = /home/username/sambashare

    read only = no

    browsable = yes

    public = no

Ctrl + O 눌러 파일을 저장후, Ctrl-X 눌러 nano를 종료합니다.

4. 설정을 적용하기 위해 삼바 서비스 재시작합니다.

$ sudo service smbd restart

방어벽을 사용중인 경우  규칙을 추가합니다. 

sudo ufw allow samba

5. samba를 위한 계정을 추가합니다. 이 계정을 사용하여 외부에서 공유 폴더에 접근합니다. 

username은 사용자 이름으로 바꾸세요.

$ sudo smbpasswd -a username

3. 윈도우에서 Ubuntu의 공유폴더 접근

1. Ubuntu에서 공유한 폴더에 파일을 하나 생성해둡니다.

$ touch ~/sambashare/test

ifconfig 명령을 사용하여 Ubuntu가 사용하는 IP를 확인합니다. 

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

2. 윈도우의 탐색기에 Ubuntu의 IP를 다음 형식으로 입력합니다. 

\\Ubuntu의 IP

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

3. Ubuntu에서 공유한 디렉토리가 보입니다. 

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

4. 해당 디렉토리로 이동하면 Ubuntu에서 생성했던 파일이 보입니다. 

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

5. 이 디렉토리에 파일을 하나 생성해보면 

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

Ubuntu에서 해당 파일이 보입니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

4. Ubuntu에서 윈도우의 공유 폴더 접근

1. smbclient 패키지를 설치해야 합니다.

$ sudo apt-get install smbclient

윈도우에서 공유한 폴더를 마운트할 디렉토리를 생성해줍니다.

$ sudo mkdir /media/windows

2. -L 다음에 윈도우 컴퓨터의 이름을 적고, -U 다음에 윈도우 컴퓨터 사용자 계정 이름을 적습니다. 엔터를 누르면 보이는 Enter WORKGROUP\사용자이름’s password : 에서 윈도우 사용자의 비밀번호를 입력해줘야 합니다.

윈도우 사용자에 아이디가 부여되어 있어야 진행가능합니다. 

컴퓨터 이름으로 할때 다음과 같은 에러가 발생한 경우에는

webnautes@webnautes-VirtualBox:~$ sudo smbclient -L webnautes-laptop -U webnautes

do_connect: Connection to webnautes-laptop failed (Error NT_STATUS_UNSUCCESSFUL)

다음처럼 IP를 사용하여 진행하세요. 

윈도우에서 생성해둔 공유폴더가 보입니다. 여기에선 공유폴더 이름이 공유폴더입니다.

webnautes@webnautes-VirtualBox:~$ sudo smbclient -L 172.20.10.2 -U webnautes

Enter WORKGROUP\webnautes's password: 

Sharename       Type      Comment

---------       ----      -------

ADMIN$          Disk      원격 관리

C$              Disk      기본 공유

D$              Disk      기본 공유

IPC$            IPC       원격 IPC

공유폴더    Disk      

SMB1 disabled -- no workgroup available

3.  앞에서 찾은 윈도우의 공유 폴더를 마운트하려면 cifs-utils 패키지가 필요합니다.

$ sudo apt-get install cifs-utils

4. 다음처럼 윈도우 폴더를 마운트합니다. 컴퓨터 이름이 안되는 경우 IP를 사용하세요.

참고로 WSL에선 이 방법으로 안됩니다. 

$ sudo mount -t cifs -o user=사용자이름,file_mode=0777,dir_mode=0777 //컴퓨터이름/공유폴더이름   Ubuntu에서 마운트할 경로

정상적으로 진행되었다면 윈도우 계정 패스워드를 물어봅니다. 

webnautes@webnautes-VirtualBox:~$ sudo mount -t cifs -o user=webnautes,file_mode=0777,dir_mode=0777 //172.20.10.2/공유폴더 /media/windows

Password for webnautes@//172.20.10.2/공유폴더:  **************          

webnautes@webnautes-VirtualBox:~$ 

윈도우 10에 SMB 1.0을 설치 안해주었다면 다음과 같은 에러가 발생합니다. 

“1. 윈도우에서 공유 폴더 만들기”  마지막에 나온대로 SMB 1.0을 설치해주세요. 

webnautes@webnautes-VirtualBox:~$ sudo mount -t cifs -o user=webnautes,file_mode=0777,dir_mode=0777 //172.20.10.2/공유폴더 /media/windows

Password for webnautes@//172.20.10.2/공유폴더:  **************    

mount error(112): Host is down

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Permission denied 에러 발생시 비밀번호를 잘못 입력했을 가능성이 높습니다. 

webnautes@webnautes-VirtualBox:~$ sudo mount -t cifs -o user=webnautes,file_mode=0777,dir_mode=0777 //172.20.10.2/공유폴더 /media/windows

Password for webnautes@//172.20.10.2/공유폴더:  **************    

mount error(13): Permission denied

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

6. 윈도우의 공유폴더에 파일을 생성해주고

$ touch /media/windows/테스트

윈도우에서 확인해보면 해당 파일이 보입니다.

리눅스 공유폴더 생성 - linugseu gong-yupoldeo saengseong

다음 명령으로 마운트를 해제합니다.

webnautes@webnautes-VirtualBox:~$ sudo umount /media/windows