我设置了 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