본문 바로가기

Computer Engineering/LINUX

LINUX#2 - SAMBA

yum 을 이용해서 설치

순서는 이미지 파일을 참조하면 된다.

Samba 를 이용하면 웹에서 자원을 공유할 수 있다. LINUX 를 운영하는 기업이라면 자원을 공유하기 위해서 설치가 되어있다.

[삼바]

SMB(Server Message Block) 프로토콜을 이용해 다른 OS간에 파일이나 프린터의 공유를 가능하게 해주는 패키지이다.

즉, 리눅스의 자원을 윈도우에서 사용할 수 있고, 반대로 윈도우의 자원을 리눅스에서 사용할 수 있도록 해준다.

http://www.samba.org/

강사님이 경험한 바로는 삼바 프로그램으로는 프린터 서버용으로 운영은 하지 않았다고 한다.
프린터용 관련 데몬은 "CUPS" 라는 다른 데몬이 있다. 삼바를 이용해서 프린터 서버를 사용하지 않았다. 그 이유는? 사양낮은 PC 에 프린터를 연결해서 해당 IP 를

물론 LINUX 자원을 윈도우에서 공유할 수 있다. 반대도 가능하다.

Samba 를 설치해보자!!

[01] 삼바 yum으로 설치

# yum install samba* --skip-broken

[주의] 위에 samba를 yum으로 설치할때 " * "(아스타리크) 기호를 넣어준다!
=> 삼바와 관련된 모든 것을 설치한다는 의미

Complete! 되면

[02] 설치된 패키지 확인해보자

[root@localhost ~]# rpm -qa | grep samba
samba-swat-3.0.33-3.29.el5_7.4
samba-common-3.0.33-3.29.el5_7.4
samba-client-3.0.33-3.29.el5_7.4
samba-3.0.33-3.29.el5_7.4

[03] 삼바 서비스 시작(데몬명 : smb)
[root@localhost ~]# service smb start
SMB서비스를 시작 중:                                       [  OK  ]
NMB서비스를 시작 중:                                       [  OK  ]

[root@localhost ~]# cd /etc/samba/
[root@localhost samba]# ls
lmhosts  passdb.tdb  secrets.tdb  smb.conf  smbusers
[root@localhost samba]# cp smb.conf smb.conf_bak
=> 원본 파일을 백업하자!!

# vi smb.conf
--------------------------------------------------
/* 74 Line 이동 */
# workgroup = MYGROUP
   workgroup = WORKGROUP

/* 101 Line 이동 */
# security = user
   security = share
--------------------------------------------------
/* 각 라인별로 이동해서 동일하게 작업( # 은 주석문) */

수정을 했으니 재시작을 한다.
[root@localhost samba]# service smb restart
SMB 서비스를 종료 중:                                      [  OK  ]
NMB 서비스를 종료 중:                                      [  OK  ]
SMB서비스를 시작 중:                                       [  OK  ]
NMB서비스를 시작 중:                                       [  OK  ]

[06] 테스트 두 가지 방법(첫번째로 확인하세요!)

# ifconfig eth0
eth0   Link encap:Ethernet  HWaddr 00:0C:29:F5:FC:40
          inet addr:192.168.10.XXX  Bcast:192.168.10.255  Mask:255.255.255.0

(첫번째) WinXP: [시작] -> [실행] -> \\리눅스아이피(eth0 IP)\
-> 접속해서 "프린터 및 팩스"가 나오면 정상이다!

공유 => 같이 사용한다는 것인데 LINUX 의 자원 데이터를 윈도우에서 가져가려면 그냥 CP 를 하면 된다. 일반 데이터를 CP 하는 것은 기본적인 것이고 회사에서는 팀별로 묶여있다. 인사팀 기술팀 홍보팀 등등 팀별로 삼바를 이용해서 정보를 공유하는 것이다.
윈도우즈에서는 돈이 드나 LINUX는 무료여서 삼바를 이용하고 있다.

LINUX는 대부분 OPEN SOURCE 이므로 ㅎㅎ

윈도우에 있는 자원을 여러 팀별로 자원을 공유하는 것이다.

이제 공유폴더를 직접 만들어보자
[root@localhost /]# vi /etc/samba/smb.conf
/* 문서 제일 마지막에 추가하자! */
---------------------------------------- 여기 아래부분부터 추가
# 2011-10-22 by Jack2
[Jack2F01D3R]                        // 윈도우에서 확인시에 나타나는 폴더명
        comment = itclass samba server
        path = /bin                      //실제  Linux에 있는 공유할 폴더
        public = yes
        writable = yes                  //쓰기 권한

삼바 재시작
[root@localhost samba]# service smb restart
SMB 서비스를 종료 중:                                      [  OK  ]
NMB 서비스를 종료 중:                                      [  OK  ]
SMB서비스를 시작 중:                                       [  OK  ]
NMB서비스를 시작 중:                                       [  OK  ]

이제 반을 한 것이다.
Jack2F01D3R 를 확인할 수 있다.
하지만 일반 유저는 /bin 디렉토리에 읽기와 실행은 가능하지만 쓰기 권한은 없다.
# ls -ld /bin
drwxr-xr-x 2 root root 4096  4월  8 04:43 /bin 


ID , P/W 를 안넣었기 때문에 특정 유저가 되는 것이다.
[root@localhost samba_test]# ls -l
합계 44732
-rw-r--r-- 1 root   root          0 10월 22 15:02 testtest.txt
-rwxr--r-- 1 nobody nobody        0 10월 22 14:59 tets.txt
-rwxr--r-- 1 nobody nobody     4286 10월 29  2010 tutudisk.ico
-rwxr--r-- 1 nobody nobody 45747664  7월 17 12:39 xme40.exe
=> 윈도우에서 복사한 파일들은 nobody 라고 나온다.

그 이유는 아래와 같다.
[root@localhost samba_test]# grep nobody /etc/passwd
=> 리눅스에서 임의로 접근하는 계정이다.
nobody:x:99:99:Nobody:/:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

=============================================================================

이번에는 보안설정 ㄱㄱ
# vi smb.conf    /* 101 Line 이동 */
--------------------------------------------------
# security = share
   security = user
--------------------------------------------------
/* security = user 변경한다. */
/* :wq 저정하고 나온다. */

리눅스의 계정만 이용할 뿐 삼바전용 P/W 를 사용하게 된다.
[root@localhost samba_test]# smbpasswd -a doom
New SMB password:
Retype new SMB password:
Added user doom.
[root@localhost samba_test]#
[root@localhost samba_test]# mkdir /share_dir
[root@localhost samba_test]# cd /share_dir/
[root@localhost share_dir]# pwd
/share_dir
0 -rw-r--r-- 1 root root 0 10월 22 15:36 testfile1
[root@localhost share_dir]# chmod 777 /share_dir/
[root@localhost share_dir]# ls -ld /share_dir/
drwxrwxrwx 2 root root 4096 10월 22 15:36 /share_dir/
[root@localhost share_dir]# ls -ld
drwxr-xr-x 2 root root 4096 10월 22 15:36 .
[root@localhost share_dir]# vi /etc/samba/smb.conf
에서 수정을 하자
shift + G 를 누른뒤에 마지막으로 가서

이부분을 복사해서 붙여 넣자
# 2009-10-16 by lee_sang_chul
[Jack2-samba-server]
   comment = leesangchul-samba-server
   path = /share_dir
   browseable =  yes
   writable = yes

저장을 시키자.

이제 doom 만 사용할 수 있는 폴더를 나타나게 하자
데몬은 재시작 하자
[root@localhost share_dir]# service smb restart
SMB 서비스를 종료 중:                                      [  OK  ]
NMB 서비스를 종료 중:                                      [  OK  ]
SMB서비스를 시작 중:                                       [  OK  ]
NMB서비스를 시작 중:                                       [  OK  ]

윈도우에서 \\192.168.100.xxx 로 들어가면 ID , P/W 를 입력하는 창이 나오는 것을 확인할 수 있다.

이제윈도우에 있는 그림파일을 해당 폴더에 집어 넣으면
[root@localhost share_dir]# ls -l
합계 484
-rwxr--r-- 1 doom doom  32183  4월 10  2011 [img] 01. xp_share.jpg
-rwxr--r-- 1 doom doom  33157  4월 10  2011 [img] 02-1. my_share.jpg
-rwxr--r-- 1 doom doom  35343  4월 10  2011 [img] 02-2. samba_test.jpg
-rwxr--r-- 1 doom doom  33157  4월 10  2011 [img] 02. my_share.jpg
-rwxr--r-- 1 doom doom  52412  4월 10  2011 [img] 03-1. share_dir.jpg
-rwxr--r-- 1 doom doom  39977  4월 10  2011 [img] 03-2. share_dir.jpg
-rwxr--r-- 1 doom doom  52412  4월 10  2011 [img] 03. share_dir.jpg
-rwxr--r-- 1 doom doom 118654  4월 10  2011 [img] 03. swat-01.jpg
-rwxr--r-- 1 doom doom  68628  4월 10  2011 [img] 04. swat-02.jpg
=> 이전과 달리 권한자가 doom 인것을 확인할 수 있다.

[02] 리눅스에서 윈도우의 공유폴더(c:\samba 디렉토리) 접속
smbclient 명령어를 이용해서 리눅스에서 윈도우의 공유 디렉토리에 접속해 보자!

(01) c:\samba 디렉토리를 만든다.
디렉토리 속성창을 열어 디렉토리를 "공유" 설정을 한다.

[root@localhost share_dir]# smbclient //172.16.7.12/samba
Password:                //여기에서는 윈도우 P/W 를 입력해준다.

하지만
Domain=[LINUX21] OS=[Windows 7 Enterprise 7600] Server=[Windows 7 Enterprise 6.1]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
=>  Error 가 나온다.

그렇다면 해결책은?
[root@localhost share_dir]# smbclient //172.16.7.12/S4M134 -U soldesk
=> 특정 사용자 이름을 넣어준다.
Password:
Domain=[LINUX21] OS=[Windows 7 Enterprise 7600] Server=[Windows 7 Enterprise 6.1]

삼바 접속 성공


smb: \> ?
?              altname        archive        blocksize      cancel
case_sensitive cd             chmod          chown          close
del            dir            du             exit           get
getfacl        hardlink       help           history        lcd
link           lock           lowercase      ls             mask
md             mget           mkdir          more           mput
newer          open           posix          posix_open     posix_mkdir
posix_rmdir    posix_unlink   print          prompt         put
pwd            q              queue          quit           rd
recurse        reget          rename         reput          rm
rmdir          showacls       setmode        stat           symlink
tar            tarmode        translate      unlock         volume
vuid           wdel           logon          listconnect    showconnect
!
smb: \>

[root@localhost share_dir]# testparm
=> 문법에 오류가 있으면 오류를 확인할 수 있다.

Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[Jack2F01D3R]"
Processing section "[S4M134SAMBA]"
Unknown parameter encountered: "commnet"
Ignoring unknown parameter "commnet"
Processing section "[Jack2-samba-server]"
Loaded services file OK.
WARNING: You have some share names that are longer than 12 characters.
These may not be accessible to some older clients.
(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        server string = Samba Server Version %v
        passdb backend = tdbsam
        cups options = raw

[homes]
        comment = Home Directories
        read only = No
        browseable = No

[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        browseable = No

[Jack2F01D3R]
        comment = itclass samba server
        path = /bin
        read only = No
        guest ok = Yes

[S4M134SAMBA]
        path = /samba_test
        read only = No
        guest ok = Yes

[Jack2-samba-server]
        comment = leesangchul-samba-server
        path = /share_dir
        read only = No

삼바는 기본적으로 웹설정툴인 swat을 제공한다.
이것을 이용하면 웹페이지에 접속하여 삼바의 환경 설정을 편하게 할 수 있다.

[01] SWAT 설정
■ swat는 삼바 설치시 기본으로 설치가 되므로 별도의 설치는 필요없다.
xinetd에 swat를 등록한다. /etc/xinetd.d 라는 디렉토리에 아래의 내용으로 swat라는 파일을 생성해 준다.


# vi /etc/xinetd.d/swat    /* 편집 */

# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
#              to configure your Samba server. To use SWAT, \
#              connect to port 901 with your favorite web browser.
service swat
{
        port            = 901
        socket_type     = stream
        wait            = no
        protocol        = tcp
        only_from       = 192.168.10.129
        //  실무에서는 이렇게 그냥 LINUX IP 를 넣어주면 되나
   지금 환경은 VM-Ware 를 사용하므로 /* WinXP의 VMnet8 아이피를 입력해주어야 한다.
        user            = root
        server          = /usr/sbin/swat
        log_on_failure  += USERID
        disable         = no
}

저장하고 데몬 재시작
[root@localhost /]# service xinetd restart
xinetd 를 정지 중:                                         [  OK  ]
xinetd (을)를 시작 중:                                     [  OK  ]

디렉토리를 만드는 것은 리눅스에서 가능하다.


==============================================================================================
Media Wiki Server 설치와 운영
: 일명 위키 온라인 백과사전 , 자유롭게 이용이 가능하다. 유저들이

==================================================================================

[03] suid/sgid 파일 점검
일반 유저 권한으로 suid/sgid가 설정된 파일을 실행할 때에는 해당 파일의 소유자 또는 소유그룹 권한으로 작동하게 되므로 suig/sgid는 보안적인 관점에서 매우 중요하다.
이 때문에 /usr/sbin/sendmail과 같이 전통적으로 root 권한의 suid/sgid가 설정된 파일에서 보안 취약성이 많이 발견된 것이 사실이다. 따라서 초기 시스템 구축시 뿐만 아니라 정기적으로 시스템에서 suid/sgid가 설정된 파일을 모니터링 하여 suid나 sgid가 불필요하다면 파일 자체를 삭제 하거나 s비트를 해제하는 것이 좋다.

[root@localhost mediawiki]# su - doom
[doom@localhost ~]$ ping www.google.co.kr
PING www.l.google.com (72.14.203.105) 56(84) bytes of data.
64 bytes from tx-in-f105.1e100.net (72.14.203.105): icmp_seq=1 ttl=128 time=222 ms
64 bytes from tx-in-f105.1e100.net (72.14.203.105): icmp_seq=2 ttl=128 time=206 ms
64 bytes from tx-in-f105.1e100.net (72.14.203.105): icmp_seq=3 ttl=128 time=211 ms
64 bytes from tx-in-f105.1e100.net (72.14.203.105): icmp_seq=4 ttl=128 time=214 ms

일반유저들이 root 의 명령어를 사용하면 안되는데 이와같은 경우가 발생할 수 있다.

가장먼저 setuid 를 검색하게 해서 일반사용자들의 사용을 막게하는 것이다.

[doom@localhost ~]$ ls -al /bin/ping
-rwsr-xr-x 1 root root 35832  9월 27  2009 /bin/ping
                    |      |  
                  uid    gid

[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
=> 숫자로 관리가 된다.

[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
유저이름 x  uid
operator:x:11:0:operator:/root:/sbin/nologin

doom을 uid를 0으로 바꾸어주면 root 역할을 할 수 있다.

[root@localhost ~]# find / -type f -perm -4000 -o -perm -2000
/usr/kerberos/bin/ksu
/usr/sbin/lockdev
/usr/sbin/sendmail.sendmail
/usr/sbin/ccreds_validate
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/libexec/libvirt_proxy
/usr/libexec/utempter/utempter
/usr/libexec/openssh/ssh-keysign
/usr/lib/vte/gnome-pty-helper
/usr/lib/nspluginwrapper/plugin-config
/usr/bin/chage
/usr/bin/Xorg
/usr/bin/crontab
/usr/bin/gnotravex
/usr/bin/wall
/usr/bin/sudo
/usr/bin/gnotski
/usr/bin/rlogin
/usr/bin/passwd
/usr/bin/at
/usr/bin/ssh-agent
/usr/bin/mahjongg
/usr/bin/same-gnome
/usr/bin/gnibbles
/usr/bin/lockfile
/usr/bin/rcp
/usr/bin/gtali
/usr/bin/write
/usr/bin/glines
/usr/bin/gnomine
/usr/bin/locate
/usr/bin/chsh
/usr/bin/konsole
/usr/bin/screen
/usr/bin/sudoedit
/usr/bin/kgrantpty
/usr/bin/rsh
/usr/bin/gpasswd
/usr/bin/gataxx
/usr/bin/newgrp
/usr/bin/iagno
/usr/bin/chfn
/usr/bin/gnobots2
/usr/bin/staprun
/usr/bin/kpac_dhcp_helper
find: /proc/24533/task/24533/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/24533/fd/4: 그런 파일이나 디렉토리가 없음
/sbin/unix_chkpwd
/sbin/mount.nfs4
/sbin/netreport
/sbin/mount.ecryptfs_private
/sbin/umount.nfs4
/sbin/pam_timestamp_check
/sbin/mount.nfs
/sbin/umount.nfs
/lib/dbus-1/dbus-daemon-launch-helper
/bin/ping
/bin/mount
=>  시스템 장치를 연결하는 것이다. 일반유저들은 할 필요가 없다. 이런 것을 찾았으면 검색할 수 없게 차단하는 것 같은데...

/bin/umount
/bin/ping6
/bin/su

너무 많이 나오니까 /bin 에서 찾아보자
[root@localhost ~]# find /bin -type f -perm -4000 -o -perm -2000
/bin/ping
/bin/mount
/bin/umount
/bin/ping6
/bin/su

[root@localhost ~]# ls -al /usr/bin/passwd
-rwsr-xr-x 1 root root 22984  1월  7  2007 /usr/bin/passwd
=> uid 로 설정이 되어있다. 바꾼 암호를 2번 물어보게 된다.
(자신의 암호를 바꿀 때 사용한다.)

UID에서 S 비트 권한 제거
[root@localhost ~]# ls -al /usr/bin/at
-rwsr-xr-x 1 root root 43492  1월 27  2010 /usr/bin/at
[root@localhost ~]# chmod u-s /usr/bin/at
[root@localhost ~]# ls -al /usr/bin/at
-rwxr-xr-x 1 root root 43492  1월 27  2010 /usr/bin/at
[root@localhost ~]# chmod u+s /usr/bin/at
[root@localhost ~]# ls -al /usr/bin/at
-rwsr-xr-x 1 root root 43492  1월 27  2010 /usr/bin/at
[root@localhost ~]# chmod 755 /usr/bin/at
[root@localhost ~]# ls -al /usr/bin/at
-rwxr-xr-x 1 root root 43492  1월 27  2010 /usr/bin/at
[root@localhost ~]# chmod u+s /usr/bin/at
[root@localhost ~]# ls -al /usr/bin/at
-rwsr-xr-x 1 root root 43492  1월 27  2010 /usr/bin/at
[root@localhost ~]# chmod 0755 /usr/bin/at
[root@localhost ~]# ls -al /usr/bin/at
-rwxr-xr-x 1 root root 43492  1월 27  2010 /usr/bin/at

GID에서 s 권한 제거
[root@localhost ~]# ls -al /usr/bin/wall
-r-xr-sr-x 1 root tty 10484  1월 21  2009 /usr/bin/wall
[root@localhost ~]# chmod g-s /usr/bin/wall
[root@localhost ~]# ls -al /usr/bin/wall
-r-xr-xr-x 1 root tty 10484  1월 21  2009 /usr/bin/wall

여기에서 S bit 란?
Set-Bit 이해하기
(1) Set-Bit : Set-Bit란 기본권한이외에 특수한 목적을 위해 부여되는 특수권한이다. Set-Bit에는
              Set-UID, Set-GID, Sticky Bit이 있으며, 이러한 권한은 시스템운영에 꼭 필요하지만
              보안상의 위험을 초래할 수 있으므로 정확한 이해가 필요하다.
[출처 : http://uzoogom.tistory.com/tag/set-bit ]

[참고] 회사의 중요 서버의 계정 관리
ssh 를 이용해서 일반유저로 접속. 그런데 일반유저로 접속이 안되었다. 일반 접속이 안되니까 root 로 접속을 하려고 한다.
======================================================================================
http://wareseeker.com/

[Servers Alive] 의 용도?
HP 회사에서 만든 서버프로그램은 2억짜리 ... 괜히 사는 경우가 생길 수 있다. 가격대 운용비가 안나올 수 있는 것이다. 서버들을 체크하는 것이다.
=> 10개까지 모니터링 가능

Freee windows Health Monitor => 5개 까지는 무료로 사용가능 GUI









'Computer Engineering > LINUX' 카테고리의 다른 글

LINUX#2  (0) 2011.10.29
LINUX#2 -  (0) 2011.10.23
LINUX#2  (0) 2011.10.16
LINUX#2 - 다시 한 번 시작해 봅시다 ^^  (0) 2011.10.15
LINUX#2 - IDS  (0) 2011.08.01