Announcement

Collapse
No announcement yet.

Samba & external USB hard drive.

Collapse

Forum Topic List

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Samba & external USB hard drive.

    Подключаю USB драйв к федоре. Он автоматически монтируется в
    /media/My Book
    Расщариваю его самбой
    [WD500U]
    comment = WD500U
    path = "/media/My Book/"
    browseable = yes
    writable = yes
    Но из Windows к нему не получается подключиться. Говорит WD500U is not accessible. You might not have permission to use this network resource.
    С другими шарами полный порядок.
    Под какой бок его хряснуть?

  • #2
    Ответ: Samba & external USB hard drive.

    Кажется, я понял, в чем дело, но пока не знаю, как с этим бороться. Самба не хочет расшаривать каталог, который используется, как точка монтирования.
    Т.е. надо или монтировать как-то хитро, или искать обходной маневр.

    Comment


    • #3
      Ответ: Samba & external USB hard drive.

      Разобрался. Это безобразие происходит из-за SELinux. Чтобы работало, надо монтировать с ключиком
      Code:
      -o context=system_u:object_r:samba_share_t

      Comment


      • #4
        Re: Ответ: Samba & external USB hard drive.

        Originally posted by veey
        Разобрался. Это безобразие происходит из-за SELinux. Чтобы работало, надо монтировать с ключиком
        Code:
        -o context=system_u:object_r:samba_share_t
        1. еще вариант - после того, как диск смонтирован в обычном порядке, выполнить следующую команду:
        Code:
        chcon -R -t samba_share_t '/your_mount_here'
        2. или еще можно вот что сделать:
        Code:
        setenforce 0
        провести все необходимые манипуляции с примонтированным USB drive и по завершение снова вернуть selinux в Enforcing mode командой:
        Code:
        setenforce 1
        второй вариант не рекомендован на production машинах, потому как selinux только пишет логи, ничего не запрещая. Зато это самый быстрый способ, не нужно запоминать эти длинные опции монтирования...

        Кстати, чтобы быстро посмотреть в системе список контекстов selinux относящихся к тому или иному сервису, можно сделать вот что (пример для samba):
        Code:
        semanage fcontext -l|grep samba
        чтобы посмотреть как настроен selinux по отношению к тому или иному сервису, нужно сделать вот что (пример для samba):
        Code:
        getsebool -a|grep samba
        чтобы посмотреть системную документацию для настроек selinux по отношению к тому или иному сервису, нужно выполнить (пример для samba):
        Code:
        man -k samba|grep selinux
        в результате мы получим:
        Code:
        samba_selinux        (8)  - Security Enhanced Linux Policy for Samba
        после чего смотрим man по команде:
        Code:
        man 8 samba_selinux
        все описанное выше верно для любого сервиса Linux (RHEL, CentOS, Fedora) который работает с selinux

        Comment


        • #5
          Re: Samba & external USB hard drive.

          кстати, если у вас selinux работает в режиме Enforcing, то описанные veey события будут проиходить довольно часто, особенно, если это рабочий desktop или домашний комп, которые, как правило, интенсивно используются для всякого рода экспериментов. Однако соществует очень удобный способ быстро идентифицировать все "неполадки" связанные с работой selinux.

          1. первое, что нужно сделать - установть пакет setroubleshoot
          Code:
          yum install setroubleshoot\*
          не забыть стартовать этот сервис при перезапуске системы:
          Code:
          chkconfig setroubleshoot on
          2. при любом подозрении на то что именно selinux запрещает то или иное действие, смотреть realtime в системный лог файл:
          Code:
          tail -f /var/log/messages
          как только вы попытаетесь сделать то, что описывал veey или, к примеру, вы создали DocumentRoot для apache вне предусмотренной для этого /var/www/(/.*)?, или вы пытаетесь получить по ftp доступ к nfs диску, или вы пытаетесь разрешить через samba доступ к домашним директориям пользователей - вы сразу увидите в логфайле что-то подобное (в данном случае я попытался получить доуступ к nfs share через samba:
          Code:
          [SIZE="2"]Aug 26 10:27:04 gw smbd[9343]: [2008/08/26 10:27:04, 0] smbd/service.c:make_connection_snum(1003)
          Aug 26 10:27:04 gw smbd[9343]:   '/net/kino/storage2' does not exist or permission denied when connecting to [kino] Error was Permission denied
          Aug 26 10:27:05 gw smbd[9344]: [2008/08/26 10:27:05, 0] smbd/service.c:make_connection_snum(1003)
          Aug 26 10:27:05 gw smbd[9344]:   '/net/kino/storage2' does not exist or permission denied when connecting to [kino] Error was Permission denied
          Aug 26 10:27:07 gw setroubleshoot: SELinux is preventing the samba daemon from reading nfs file systems. For complete SELinux messages. run sealert -l e3509638-8f6c-402a-8bea-949f1c5794ed
          [/SIZE]
          как видим, нам даже предлагают запустить некую команду для получения дальнейшей информации:
          Code:
          sealert -l e3509638-8f6c-402a-8bea-949f1c5794ed
          запустив ее, получаем довольно интересный доукумент, содержащий не только описание проблемы, но и дающий точный способ ее решения (вместо того, чтобы идти в google или на форумы )

          Code:
          [SIZE="2"]
          
          Summary:
          
          SELinux is preventing the samba daemon from reading nfs file systems.
          
          Detailed Description:
          
          SELinux has denied the samba daemon access to nfs file systems. Someone is
          attempting to access an nfs file system via your samba daemon. If you did not
          setup samba to share nfs file systems, this probably signals a intrusion
          attempt.
          
          Allowing Access:
          
          If you want samba to share nfs file systems you need to turn on the
          samba_share_nfs boolean: "setsebool -P samba_share_nfs=1"
          
          The following command will allow this access:
          
          setsebool -P samba_share_nfs=1
          
          Additional Information:
          
          Source Context                root:system_r:smbd_t
          Target Context                system_u:object_r:nfs_t
          Target Objects                /net/kino/storage2 [ dir ]
          Source                        smbd
          Source Path                   /usr/sbin/smbd
          Port                          <Unknown>
          Host                          gw.scihost.com
          Source RPM Packages           samba-3.0.28-1.el5_2.1
          Target RPM Packages
          Policy RPM                    selinux-policy-2.4.6-137.1.el5
          Selinux Enabled               True
          Policy Type                   targeted
          MLS Enabled                   True
          Enforcing Mode                Enforcing
          Plugin Name                   samba_share_nfs
          Host Name                     gw.scihost.com
          Platform                      Linux gw.scihost.com 2.6.18-92.1.10.el5xen #1 SMP
                                        Tue Aug 5 08:46:32 EDT 2008 i686 i686
          Alert Count                   4
          First Seen                    Tue Aug 26 10:23:29 2008
          Last Seen                     Tue Aug 26 10:27:05 2008
          Local ID                      e3509638-8f6c-402a-8bea-949f1c5794ed
          Line Numbers
          
          Raw Audit Messages
          
          host=gw.scihost.com type=AVC msg=audit(1219760825.208:228): avc:  denied  { getattr } for  pid=9344 comm="smbd" path="/net/kino/storage2" dev=0:1a ino=2 scontext=root:system_r:smbd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
          
          host=gw.scihost.com type=SYSCALL msg=audit(1219760825.208:228): arch=40000003 syscall=195 success=no exit=-13 a0=933c988 a1=bfa4a020 a2=32aff4 a3=bfa4a020 items=0 ppid=9264 pid=9344 auid=0 uid=500 gid=0 euid=500 suid=0 fsuid=500 egid=500 sgid=0 fsgid=500 tty=(none) ses=15 comm="smbd" exe="/usr/sbin/smbd" subj=root:system_r:smbd_t:s0 key=(null)
          
          [/SIZE]
          то есть все что нам остается сделать - это выполнить команду, рекомендованную в отчете, который я привел выше:
          Code:
          setsebool -P samba_share_nfs=1
          список всех возможных "взаимоотношений" между selinux и samba пожно получить, выполнив команду:
          Code:
          getsebool -a|grep samba
          вот он:
          Code:
          samba_domain_controller --> off
          samba_enable_home_dirs --> on
          samba_export_all_ro --> off
          samba_export_all_rw --> off
          samba_share_nfs --> off
          use_samba_home_dirs --> off

          Comment

          Working...
          X