Windows 7 上的 samba 共享不允许我访问 /var,但允许我访问其他所有目录

Windows 7 上的 samba 共享不允许我访问 /var,但允许我访问其他所有目录

我设置了 Samba 共享,以便我可以从 Windows 7 机器访问 Linux 机器,一切都很好,只是出于某种原因我无法通过 Windows 访问 /var 目录。但是,我可以毫无问题地访问其他所有目录

当我尝试访问 /var 目录时收到的错误是:

Z:\var is not accessible.

Access is denied.

我正在使用 centos 5.5

root 是允许的 samba 用户。这是我的 samba 配置:

[global]
   workgroup = WORKGROUP
   netbios name = SAMBA
   server string = Samba Server %v
   map to guest = Bad User
   log file = /var/log/samba/log.%m
   max log size = 50
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
   preferred master = No
   local master = No
   dns proxy = No
   security = User

# Share
[root]
   path = /
   valid users = root
   read only = no
   browseable = yes
   writeable = yes
   create mask = 0777
   directory mask = 0777

这是我的根目录权限和所有权的列表

drwxr-xr-x  2 root root  4096 May 18 16:35 bin
drwxr-xr-x  4 root root  1024 May 18 16:36 boot
drwxr-xr-x 12 root root  3960 May 18 20:12 dev
drwxr-xr-x 55 root root  4096 May 19 02:05 etc
drwxrwxrwx  3 root root  4096 May 19 02:05 home
drwxr-xr-x 12 root root  4096 May 18 17:59 lib
drwx------  2 root root 16384 May 18 16:31 lost+found
drwxr-xr-x  2 root root  4096 Jan 26  2010 media
drwxr-xr-x  3 root root  4096 May 18 19:40 mnt
drwxr-xr-x  2 root root  4096 Jan 26  2010 opt
dr-xr-xr-x 86 root root     0 May 18 20:11 proc
drwxr-x---  2 root root  4096 May 18 20:10 root 
drwxr-xr-x  2 root root  4096 May 18 16:36 sbin
drwxr-xr-x  4 root root     0 May 18 20:11 selinux
drwxr-xr-x  2 root root  4096 Jan 26  2010 srv
drwxr-xr-x 11 root root     0 May 18 20:11 sys
drwxrwxrwt  3 root root  4096 May 19 01:28 tmp
drwxr-xr-x 13 root root  4096 May 18 16:34 usr
drwxr-xr-x 18 root root  4096 May 18 17:51 var

我做错什么了吗?或者这是 centos 安全问题?

答案1

大概SELinux阻止 Samba 读取目录,/var因为这通常不是必需的。

  • 您可以使用关闭此功能setsebool -P samba_export_all_rw=on,但这会降低 Samba 安全性,因为 Samba 能够在任何地方读取。
  • 更好的方法是移动 Samba 可以访问的数据,例如移动到/home/samba并运行setsebool -P samba_enable_home_dirs=on,因为它允许 Samba 仅读取主目录。
  • 最好的方法是配置 SELinux,允许 Samba 读取具有特定 SELinux 标签的目录(例如—httpd_sys_content_t使用/var/www检查您的目录ls -lZ),但这会变得有点复杂:
    yum 安装 selinux-policy-devel
    mkdir /etc/selinux/local
    /etc/selinux/本地
      echo 'avc: 拒绝 { manage_file_perms } ' \
        ' scontext=system_u:system_r:smb_t ' \
        ' tcontext=system_u:object_r:httpd_sys_content_t tclass=文件'
      echo 'avc: 拒绝 { manage_dir_perms } ' \
        ' scontext=system_u:system_r:smb_t ' \
        ' tcontext=system_u:object_r:httpd_sys_content_t tclass=dir'
    )| audit2allow -M 本地
    semodule-i 本地.pp
    

相关内容