목차 (INDEX)
개요
리눅스 서버를 윈도즈용 파일서버로 설정하기 위해서 Samba를 도입하여 아래의 폴더를 생성합니다.
- 유저 전용 폴더
- 모든 유저가 읽기 쓰기 가능한 폴더
- 특정 유저만 읽기 쓰기 가능한 폴더
- 특정 그룹만 읽기 쓰기 가능한 폴더
- 특정 유저 이외 참조 전용 폴더
구축 환경
- PC : Macbook Pro
- 서버 : CentOS 7
- User 계정: naru, naru1, naru2
- Group: centos
- Server Name : centos7
- 참고사이트 : https://centossrv.com/samba.shtml
준비
CentOS 7 서버에 접속합니다.
■ ssh의 기본 포트는 22/tcp이지만 보안상 포트번호를 임의의 번호(1999/tcp)로 변경해서 사용합니다.
※포트번호를 변경하는 방법은 CentOS7 - 초기설정/보안설정 (2/10) 에서 확인할 수 있습니다.
※ CentOS를 아직 설치하지 않았다면 이곳을 참고합니다 >> CentOS7 - OS설치하기 (1/10)
try🐶everything ~$ ssh naru@centos7 -p1999
naru@centos7's password:
Last login: Tue May 7 11:03:27 2019 from 10.x.1.x
■ sudo를 사용하여 root 권한을 획득합니다.
[naru@centos7 ~]$ sudo su -
[sudo] naru's password:
Last login: 2019/05/07 (火) 10:47:55 JST日時 pts/0
[root@centos7 ~]#
Samba 설치하기
[root@centos7 ~]# yum -y install samba
■ 설치된 samba버전을 확인합니다
[root@centos7~]# yum list installed | grep samba
samba.x86_644.8.3-4.el7@base
samba-client-libs.x86_644.8.3-4.el7@base
samba-common.noarch4.8.3-4.el7@base
samba-common-libs.x86_644.8.3-4.el7@base
samba-common-tools.x86_644.8.3-4.el7@base
samba-libs.x86_644.8.3-4.el7@base
Samba 설정하기
■ Samba서버에 접근할 유저를 설정하는 방법은 두 가지입니다.
- 리눅스 유저를 신규로 생성 후 설정하는 방법
- 기존 유저를 Samba서버에 접근할 유저로 설정하는 방법
리눅스 유저를 신규로 생성 후 설정하는 방법
■ 신규로 생성된 유저는 pdbedit -a 명령으로 samba 서버에 접근할 유저로 등록해야 합니다.
[root@centos7 ~]# useradd naru
[root@centos7 ~]# passwd naru
Changing password for user naru.
New password: ← 패스워드 입력
Retype new password: ← 패스워드 입력(확인)
passwd: all authentication tokens updated successfully.
기존 유저를 Samba서버에 접근할 유저로 설정하는 방법
[root@centos7 ~]# pdbedit -a naru
new password: ← 패스워드 입력
retype new password: ← 패스워드 입력(확인)
Unix username: naru
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1273093702-2967678695-2170325751-1004
Primary Group SID: S-1-5-21-1273093702-2967678695-2170325751-513
Full Name:
Home Directory: \centos7\naru
HomeDir Drive:
Logon Script:
Profile Path: \centos7\naru\profile
Domain: LINUX
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Thu, 07 Feb 2036 00:06:39 JST
Kickoff time: Thu, 07 Feb 2036 00:06:39 JST
Password last set: Wed, 08 May 2019 19:31:44 JST
Password can change: Wed, 08 May 2019 19:31:44 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@centos7 ~]#
홈 디렉터리를 작성
■ 신규 유저용
[root@centos7 ~]# mkdir /etc/skel/samba
■ 기존 유저 처리
[root@centos7 ~]# vi mkhomedir.sh
#!/bin/bash
for user in ls /home
do
id $user > /dev/null 2>&1
[ $? -eq 0 ] &&
[ ! -d /home/$user/samba ] &&
mkdir /home/$user/samba &&
chown $user:$user /home/$user/samba &&
echo "/home/$user/samba create"
done
공유 디렉터리 생성
[root@centos7 ~]# mkdir /home/samba ← 모든 유저가 풀 액세스 가능한 공유 디렉터리를 작성
[root@centos7 ~]# chown nobody:nobody /home/samba ← 공유 디렉터리의 소유자를 nobody로 변경
Samba 설정 파일 편집
■ samba설정 파일을 열고 Global Settings를 수정합니다.
[root@centos7 ~]# vi /etc/samba/smb.conf
[global]
unix charset = UTF-8 ← 추가 (리눅스 측 문자코드)
dos charset = CP932 ← 추가 (Windows 측 문자코드)
mangled names = no ← 추가 (긴 파일명이 깨지는 것을 방지)
vfs objects = catia ← 추가(위의 처리로 인해서 파일 액세스가 안 되는 일부 문자를 치환)
catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6 ← 추가(위의 처리로 인해서 파일 액세스가 안 되는 일부 문자를 치환)
workgroup = MYGROUP
hosts allow = 192.168.1. 127. ← 추가 (자신의 로컬 IP대역을 추가합니다.)
■ Samba에서 프린터를 공유하지 않는 경우
;load printers = yes ← 줄 맨 앞에 ;을 추가(프린터 공유 무효화)
load printers = no ← 추가 (프린터 공유 무효화)
disable spoolss = yes ← 추가(프린터 공유 무효화)
[homes]
comment = Home Directories
path = %H/samba ← 추가 (/home/유저명/samba를 홈 디렉터리로 설정)
browseable = no
writable = yes
■ 각 유저 전용의 휴지통 기능 추가하기
※ 파일 삭제 시에 자동적으로 휴지통에 이동되도록 설정하기
vfs objects = recycle ← 휴지통 유효화
recycle:repository = .recycle ← 휴지통의 디렉토리명(/home/유저명/. recycle)
recycle:keeptree = no ← 휴지통에 이동할 때 디렉터리 구조를 유지하지 않기
recycle:versions = yes ← 같은 이름의 파일이 휴지통에 있을 경우 다른 이름으로 변경하여 이동
recycle:touch = no ← 휴지통에 이동할 때 타임스탬프를 갱신하지 않기
recycle:maxsize = 0 ← 휴지통에 이동하는 파일의 사이즈 상한 (0:무제한)
recycle:exclude = .tmp ~$ ← 여기에 지정한 파일은 휴지통으로 이동하지 않고 즉시 삭제
■ 아래의 내용을 파일의 맨 마지막 부분에 추가합니다
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
only guest = yes
■ 공유 디렉터리의 휴지통 기능을 추가
※ 파일을 삭제할 때, 자동적으로 휴지통으로 이동하도록 설정하기
vfs objects = recycle ← 휴지통 유효화
recycle:repository = .recycle ← 휴지통의 디렉토리명(/home/유저명/.recycle)
recycle:keeptree = no ← 휴지통에 이동할 때 디렉터리 구조를 유지하지 않기
recycle:versions = yes ← 같은 이름의 파일이 휴지통에 있을 경우 다른 이름으로 변경하여 이동
recycle:touch = no ← 휴지통에 이동할 때 타임스탬프를 갱신하지 않기
recycle:maxsize = 0 ← 휴지통에 이동하는 파일의 사이즈 상한 (0:무제한)
recycle:exclude = .tmp ~$ ← 여기에 지정한 파일은 휴지통으로 이동하지 않고 즉시 삭제
설정 파일까지 완료해주면 기본 설정은 완료됩니다.
서버를 기동 해주고 상태를 확인해서 문제가 없으면 몇 가지 추가적인 설정을 합니다.
Samba 서버 기동 하기
[root@centos7 ~]# systemctl start smb ← Samba 기동
[root@centos7 ~]# systemctl start nmb ← nmb 기동
[root@centos7 ~]# systemctl enable smb ← Samba 자동기동 설정
[root@centos7 ~]# systemctl enable nmb ← nmb 자동기동 설정
Samba status 확인하기
Samba SMB Daemon 확인하기
[root@centos7~]# systemctl status smb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-05-08 17:33:34 JST; 9s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 29918 (smbd)
Status: "smbd: ready to serve connections..."
CGroup: /system.slice/smb.service
├─29918 /usr/sbin/smbd --foreground --no-process-group
├─29920 /usr/sbin/smbd --foreground --no-process-group
└─29921 /usr/sbin/smbd --foreground --no-process-group
May 08 17:33:34 centos7systemd[1]: Starting Samba SMB Daemon
... 이하생략
Samba NMB Daemon 확인하기
[root@centos7~]# systemctl status nmb
● nmb.service - Samba NMB Daemon
Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-05-08 17:33:27 JST; 20s ago
Docs: man:nmbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 29910 (nmbd)
Status: "nmbd: ready to serve connections..."
CGroup: /system.slice/nmb.service
└─29910 /usr/sbin/nmbd --foreground --no-process-group
May 08 17:33:27 centos7systemd[1]: Starting Samba NMB Daemon
... 이하생략
현재의 Samba에의 접속상태를 확인하기
[root@centos7 ~]# smbstatus
Samba version 4.8.3
PID Username Group Machine Protocol Version Encryption Signing
Service pid Machine Connected at Encryption Signing
No locked files
smb.conf 파일 내부의 설정이 정확한지 검증해보기
[root@centos7~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
클라이언트에서 Samba 서버 접속 확인하기
■ 맥북
finder를 실행한 후에 「command + k」 ⇒ 서버 접속을 위한 창에서 ⇒ smb://호스트명 또는 smb://IP어드레스 를 입력 후 ⇒ 엔터
자신의 폴더와 Samba공유폴더(public)가 표시되는지 확인해 봅니다.
■ Windows
「시작」 ⇒ 「파일명을 지정해서 실행하기」(또는 Windows + R키) ⇒ 「이름」에 「\서버IP어드레스 (예:\192.168.1.30)」 또는 「\호스트명 (예:\centos7)」을 입력 후 「OK」 버튼 클릭, Samba공유폴더가 표시되는지 확인한다
※유저명과 패스워드는 pdbedit명령으로 작성했던 유저명과 패스워드를 입력합니다
휴지통 내의 파일을 자동 삭제하기
■ 1주일 단위로 30일간 액세스가 없는 휴지통 내 파일을 자동으로 삭제하도록 설정합니다.
[root@centos7 ~]# yum -y install tmpwatch ← tmpwatch를 설치
[root@centos7 ~]# yum list installed | grep tmpwatch
tmpwatch.x86_64 2.11-5.el7 @base
[root@centos7 ~]# vi /etc/cron.weekly/recyclewatch ← 휴지통 내 파일을 자동 삭제하는 스크립트를 작성
#!/bin/bash
for user in ls /home/
do
if [ -d /home/$user/.recycle ]; then
tmpwatch -f 720 /home/$user/.recycle/
fi
done
[root@centos7 ~]# chmod +x /etc/cron.weekly/recyclewatch ← 휴지통 내 파일 자동 삭제 스크립트에 실행 권한 부여
특정 유저만 읽기 쓰기가 가능한 폴더 설정하기
■ 읽기 쓰기가 가능한 폴더에 접근할 계정을 설정합니다.
※ useradd로 시스템 유저를 생성한 후 아래의 명령을 실행
[root@centos7 ~]# pdbedit -a naru1
new password:
retype new password:
Unix username:naru1
NT username:
Account Flags:[U]
User SID:S-1-5-21-1273093702-2967678695-2170325751-1002
Primary Group SID:S-1-5-21-1273093702-2967678695-2170325751-513
Full Name:
Home Directory:\centos7\naru1
HomeDir Drive:
Logon Script:
Profile Path:\centos7\naru1\profile
Domain:LINUX
Account desc:
Workstations:
Munged dial:
Logon time:0
Logoff time:Thu, 07 Feb 2036 00:06:39 JST
Kickoff time:Thu, 07 Feb 2036 00:06:39 JST
Password last set:Wed, 08 May 2019 18:25:07 JST
Password can change:Wed, 08 May 2019 18:25:07 JST
Password must change: never
Last bad password: 0
Bad password count: 0
Logon hours: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@centos7 ~]#
[root@centos7 ~]# pdbedit -a naru2
new password:
retype new password:
Unix username:naru2
NT username:
Account Flags:[U]
User SID:S-1-5-21-1273093702-2967678695-2170325751-1003
Primary Group SID:S-1-5-21-1273093702-2967678695-2170325751-513
Full Name:
Home Directory:\centos7\naru2
HomeDir Drive:
Logon Script:
Profile Path:\centos7\naru2\profile
Domain:LINUX
Account desc:
Workstations:
Munged dial:
Logon time:0
Logoff time:Thu, 07 Feb 2036 00:06:39 JST
Kickoff time:Thu, 07 Feb 2036 00:06:39 JST
Password last set:Wed, 08 May 2019 18:25:21 JST
Password can change:Wed, 08 May 2019 18:25:21 JST
Password must change: never
Last bad password: 0
Bad password count: 0
Logon hours: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@centos7 ~]#
[root@centos7 ~]# systemctl restart smb ← Samba의 변경된 설정을 반영[root@centos7 ~]# mkdir /home/private1 ← 특정 유저만 읽기 쓰기 가능하게 할 디렉터리를 작성 (예: /home/private1)
[root@centos7 ~]# chown nobody:nobody /home/private1 ← 특정 유저만 읽기 쓰기 가능한 디렉터리의 소유자를 nobody로 변경
[root@centos7 ~]# vi /etc/samba/smb.conf ← Samba설정 파일을 편집
■ 아래 내용을 파일 맨 끝에 추가해 줍니다
[private1]
comment = private1
path = /home/private1 ← 특정 유저만 읽기 쓰기 가능하게 할 디렉터리를 지정
public = yes
writable = yes
only guest = yes
directory mask = 0700
create mask = 0700
valid users = naru1 naru2 ← 읽기 쓰기 가능한 유저를 지정
■ 위쪽의 클라이언트에서 Samba 서버 접속 확인하기 를 참고하여 아래의 내용을 확인해 봅니다.
naru1、naru2 유저로 private1 폴더에 파일 작성이 가능한지?
naru1、naru2 유저 이외는 private1 폴더에 접근이 불가능한지?
특정 그룹만 읽기 쓰기가 가능한 폴더 설정하기
※ 읽기 쓰기 가능한 그룹에 소속시킬 유저 : naru1, naru2
[root@centos7 ~]# mkdir /home/private2 ← 특정 그룹만 읽기 쓰기 가능한 디렉터리를 작성 (예:/home/private2)
[root@centos7 ~]# chown nobody:nobody /home/private2 ← 특정 그룹만 읽기 쓰기 가능한 디렉터리의 소유자를 nobody로 변경
[root@centos7 ~]# groupadd centos ← 읽기 쓰기 가능한 그룹 생성(예: centos)
[root@centos7 ~]# usermod -G centos naru1 ← 읽기 쓰기 가능한 유저(예:naru1)를 centos그룹에 등록
[root@centos7 ~]# usermod -G centos naru2 ← 읽기쓰기가능한 유저(예:naru2)를 centos그룹에 등록
[root@centos ~]# vi /etc/samba/smb.conf ← Samba 설정 파일 편집
■ 아래의 내용을 파일 맨 끝에 추가해 줍니다
[private2]
comment = private2
path = /home/private2
public = yes
writable = yes
only guest = yes
directory mask = 0700
create mask = 0700
valid users = @centos ← 읽기 쓰기 가능한 그룹을 지정
[root@centos7 ~]# systemctl restart smb ← Samba설정을 반영
■ 위쪽의 클라이언트에서 Samba 서버 접속 확인하기 를 참고하여 아래의 내용을 확인해 봅니다.
naru1、naru2 유저로 private2 폴더에 파일을 작성할 수 있는지
naru1、naru2 유저 이외에는 private2 폴더에 접근이 불가능한지
특정 유저 이외 참조 전용 폴더 작성하기
※ 참조 전용 폴더에 읽기 쓰기 가능한 유저 naru는 이미 등록된 것을 전제로 합니다 (처음에 생성했었죠!)
[root@centos7 ~]# mkdir /home/share ← 참조 전용 디렉터리 생성 (예:/home/share)
[root@centos7 ~]# chown nobody:nobody /home/share ← 참조 전용 디렉터리의 소유자를 nobody로 변경
[root@centos7 ~]# vi /etc/samba/smb.conf ← Samba설정 파일 변경
■ 아래의 내용을 파일 맨 끝에 추가합니다.
[share]
comment = share
path = /home/share
public = yes
read only = yes
directory mask = 0700
only guest = yes
create mask = 0700
write list = naru ← 쓰기 가능한 유저를 지정
[root@centos7 ~]# systemctl restart smb ← Samba설정을 반영
■ 위쪽의 클라이언트에서 Samba 서버 접속 확인하기 를 참고하여 아래의 내용을 확인해 봅니다.
naru유저만 share폴더에 파일을 작성할 수 있는지
naru유저 이외는 share폴더에 파일을 작성하지 못하고 참조만 가능한지
이상, Samba구성을 마칩니다.
다음에는 아파치 웹서버를 구축하고 설정해보겠습니다
'리눅스 > CentOS7' 카테고리의 다른 글
CentOS7 - 큐메일(Qmail) 서버 구축하기 (5/10) (0) | 2019.05.29 |
---|---|
CentOS7 - 워드프레스(WordPress) 환경 구축하기 (9/10) (0) | 2019.05.25 |
CentOS7 - Name Server 구축하기(bind) (4/10) (0) | 2019.05.25 |
CentOS7 - 무료도메인 취득/설정하기 (freenom) (3/10) (0) | 2019.05.25 |
CentOS7 - 초기설정/보안설정 (2/10) (0) | 2019.05.25 |