problemas com o samba

Iniciado por fernandocz, 16 de Setembro de 2013, 10:54

tópico anterior - próximo tópico

fernandocz

Bom dia, estou enfrentando um problema com o compartilhamento de pastas através do samba.
Basicamente o problema que estou enfrentando é que preciso compartilhar a pasta publico de forma que todos tenham acesso sem precisar de usuário e senha, mas não estou conseguindo.
Já tentei configurar o smb.conf de diversas formas e não consegui, quando eu usei o security = share todos tiveram acesso à pasta público, porém algumas pessoas deixaram de ter acesso a outras pastas como por exemplo a pasta diretoria e então tive de voltar o security para security = user.

Se alguém puder me auxiliar eu agradeço.


Obs: abaixo está a configuração do smb.conf

******************************************************************************************************

#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which
# are not shown in this example
#
# Some options that are often worth tuning have been included as
# commented-out examples in this file.
# - When such options are commented with ";", the proposed setting
# differs from the default Samba behaviour
# - When commented with "#", the proposed setting is the default
# behaviour of Samba but the option is considered important
# enough to be mentioned here
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic
# errors.
# A well-established practice is to name the original file
# "smb.conf.master" and create the "real" config file with
# testparm -s smb.conf.master >smb.conf
# This minimizes the size of the really used smb.conf file
# which, according to the Samba Team, impacts performance
# However, use this with caution if your smb.conf file contains nested
# "include" statements. See Debian bug #483187 for a case
# where using a master file is not a good idea.
#

#======================= Global Settings =======================

[global]
#----------------- Identificação / Serviços Suportados -----------------

# O nome NetBIOS do servidor e o grupo de trabalho (domínio) a serem
# exibidos no Windows.
netbios name = %h
workgroup = ARCADIAN

server string = Controlador do dominio ARCADIAN


# Este é um servidor de autenticação (logon). Para fazer com que os
# clientes Windows XP se autentiquem no servidor, execute os seguintes
# passos:
#
# 1. Acesse, no Windows:
# Painel de controle -> Sistema -> Nome do computador
# 2. Clique no botão "Alterar..."
# 3. Na caixa de texto entitulada "Nome do computador", digite o
# nome que o computador terá na rede.
# 4. Na opção "Membro de", selecione "Domínio".
# 5. Digite o nome do domínio de rede, definido acima pelo
# parâmetro "workgroup".
# 6. Clique em "Ok".
# 7. Uma janela entitulada "Alterações de nome de computador"
# será exibida, solicitando o nome e a senha de um usuário
# com permissões para ingressar o computador no domínio.
# Informe o nome e a senha de um usuário especificado no
# parâmetro "admin users", abaixo.
#
# Cadastrar um computador no Samba corresponde a criar um usuário Unix,
# cujo nome é o nome da máquina sufixado pelo caractere "$"
# (por exemplo, "secretaria$"). Para que o Samba seja capaz de adicionar
# um novo usuário do sistema, deve-se configurar adequadamente o parâmetro
# "add machine script", abaixo. Caso contrário, o computador deverá ser
# cadastrado manualmente, através dos comandos
#
# adduser --system --no-create-home --disabled-login --force-badname <Computador>$
# smbpasswd -a -m <Computador>
#
# em que <Computador> é o nome do computador a ser cadastrado. Por exemplo:
#
# adduser --system --no-create-home --disabled-login --force-badname secretaria$
# smbpasswd -a -m secretaria
#
# De maneira similar, utilize os seguintes comandos para excluir um computador
# do Samba:
#
# smbpasswd -x -m <Computador>
# deluser <Computador>$
#
# Por exemplo:
#
# smbpasswd -x -m secretaria
# deluser secretaria$
#
domain master = yes
domain logons = yes
local master = yes
preferred master = yes
os level = 300

# Torna este computador um servidor WINS (Windows Internet Name Server).
wins support = yes

# Permite que os clientes Windows possam sincronizar a hora com este
# computador, através do comando
#
# net time \\<Servidor> /set /yes
#
# em que <Servidor> é o nome NetBIOS deste servidor, definido acima
# pelo parâmetro "netbios name".
time server = yes

# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
# this has been changed in version 1.9.18 to no.
dns proxy = yes
#----------------------------- Rede ------------------------------------

# Estas são as interfaces que tem acesso aos serviços do Samba: a rede
# local e a interface reflexiva.
interfaces = 192.168.1.3/255.0.0.0, 127.0.0.1
remote announce = 192.168.255.255
# Rejeita conexões provenientes de interfaces/redes desconhecidas
# (da Internet, por exemplo).   
bind interfaces only = yes

#### Debugging/Accounting ####

# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m

# Cap the size of the individual log files (in KiB).
max log size = 1000

# If you want Samba to only log through syslog then set the following
# parameter to 'yes'.
# syslog only = no

# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
syslog = 0

# Do something sensible when Samba crashes: mail the admin a backtrace
panic action = /usr/share/samba/panic-action %d


#-------------------------- Autenticação ------------------------------


# Segurança a nível de usuário, ou seja, deve-se autenticar (efetuar o
# logon) antes de acessar qualquer compartilhamento ou serviço.
security = share

# Não permite que usuários não autenticados acessem os compartilhamentos.
public = yes

# Conta somente para leitura. Usuário visitante. Sem autenticacao.
guest account = nobody

# Por motivos de segurança do servidor, não permite que o super-usuário
# (root) possa se autenticar.

#invalid users = #root

# Utiliza senhas criptografadas
encrypt passwords = true

# Permite senhas vazias. Esta opção só é utilizada porque foi especificado
# que o usuário "convidado" não deverá possuir senha.
null passwords = yes

# Estas linhas são responsáveis por SINCRONIZAR as senhas dos usuários
# do Samba e do Unix. O parâmetro "passwd chat" informa ao Samba como
# interagir com o programa de alteração de senhas do Unix, o passwd.
# Para mudar a senha no Windows, basta digitar Ctrl+Alt+Delete, enquanto
# logado. No Linux, os usuários devem utilizar o comando "smbpasswd", ao
# invés do tradicional "passwd".
pam password change = yes
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n \
*Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .

# Script em formato MS-DOS a ser executado pelo usuário, a cada vez que ele efetua
# o logon. Ele é bastante útil para mapear os compartilhamentos de rede em letras
# do Windows Explorer. Por exemplo, para mapear o compartilhamento "Publico" na
# letra Y: do Windows Explorer, utilize o seguinte comando MS-DOS:
#
# net use Y: %LOGONSERVER%\Publico /persistent:no
#
# Este script também pode ser utilizado para executar outras tarefas,
# tais como sincronizar o relógio do cliente com o do servidor
# (veja parâmetro "time server", definido acima).
#
# O arquivo que possui este script deve possuir a extensão ".bat" ou
# ".cmd" (somente Windows NT/2K/XP), dentro do diretório ("path") do
# compartilhamento especial "netlogon" (veja a entrada [netlogon], definida abaixo).
# Não utilize acentos, pois o MS-DOS (mesmo no Windows XP) aceita somente uma
# codificação de caracteres muito exótica.
logon script = %G.bat

# As máquinas que se conectam ao Samba precisam ser usuários cadastrados
# do Unix. Esta linha descreve qual é o comando do sistema que deve ser
# utilizado para criar um usuário com o nome da máquina conectada ao
# servidor.
add machine script = adduser --system --no-create-home --disabled-login --force-badname %u

# A seguinte opção é necessária para permitir o ingresso das máquinas
# Windows no domínio. Ela define os usuários que possuem permissão para
# executar permissões administrativas.
# Durante o processo de ingresso no domínio, quando o Windows exibir a
# tela "Digite o nome e a senha de uma conta com permissão para
# ingressar no domínio", deve-se entrar com um dos usuários especificados
# nesta opção.
admin users = administrador

# Configura onde os perfis dos usuários do Windows ("Documents and Settings")
# são armazenados, quando se utiliza perfis remotos.
# Deve-se tomar cuidado ao utilizar perfis remotos, pois o Windows se torna
# bastante instável. Antes de alterar esta configuração, leia cuidadosamente
# o documento contido em:
#
# http://wiki.samba.org/index.php/Samba_&_Windows_Profiles
#
# Por simplicidade, optou-se por armazenar os perfis dos usuários localmente,
# desabilitando os perfis remotos.
#logon path =

#---------------------------- Impressão --------------------------------

# Utiliza o CUPS como servidor de impressão.
#printcap name = cups
#printing = cups


# Carrega as impressoras do servidor de impressão automaticamente, sem que
# seja necessário descrevê-las neste arquivo.
# As impressoras podem ser configuradas no arquivo printcap do servidor
# de impressão. No CUPS, este arquivo é "/etc/cups/printers.conf"
load printers = yes

# O driver da impressora deve estar instalado no cliente. Ou seja,
# quando uma impressora é compartilhada, o CUPS atua apenas como
# um redirecionador dos comandos do driver. Ele não entende como
# a impressora funciona.
use client driver = yes
cups options = "raw"

# Comando a ser utilizado para listar a fila de impressão
lpq command = /usr/bin/lpq -P %p

# Comando a ser utilizado para cancelar um trabalho de impressão.
lprm command = /usr/bin/lprm -P %p %J

#--------------------------- Desempenho --------------------------------

# Opções de desempenho específicas para este computador.
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=20480 SO_SNDBUF=20480



#--------------------- Depuração / Monitoramento -----------------------

# Diretório onde serão armazenados os arquivos de log.
log file = /var/log/samba/%m.log
max log size = 0

#------------------------ Configurações Gerais -------------------------

# A codificação de caracteres utilizada na nomenclatura de arquivos
dos charset = UTF-8
display charset = UTF-8

# Esconde arquivos que não podem ser lidos, e arquivos que começam com ".".
#hide unreadable = yes
hide dot files = yes

# Esconde alguns arquivos de sistema do Windows.
#hide files = /desktop.ini/outlook*.lnk/*Briefcase*/

# Descomente esta opção para que os atributos de arquivo do MS-DOS
# (por exemplo, "hidden", "read only"...), sejam armazenados
# nos compartilhados em rede.
# Todavia, é necessário primeiro incluir a opção
# "user_xattr" à lista de opções de montagem das partições que contém
# os compartilhamentos de rede. Para maiores informações, veja as páginas
# de manual "mount" e "fstab".
#;store dos attributes = yes

#habilitar previlégios de usuários
enable privileges = yes



#======================= Compartilhamentos de Rede =============================

# Compartilhamentos especiais, utilizados para autenticação (logon),
# diretório pessoal (home), e compartilhamento de
# impressoras.
[netlogon]
comment = Network Logon Service
path = /srv/smb/netlogon

browseable = no
writable = no
public = no

available = no
[homes]
comment = Seu diretorio pessoal
path = /home/%U
browseable = no
writable = yes
valid users = %U
force user = %U
force group = %G
create mask = 0600
directory mask = 0700

[printers]
comment = Todas as impressoras
path = /var/spool/samba
browseable = yes
printable = yes
writable = yes
create mask = 0777

# Este é o diretório de spool. Certifique-se de que ele existe,
# e possui permissões 1777:



# Este compartilhamento é útil para armazenar os drivers das impressoras compartilhadas
# em rede. Somente quando são acessadas pelo Windows, e o driver é executado pelo
# computador do cliente.
[print$]
path = /var/lib/samba/printers
comment = Drivers das impressoras
browseable = yes
read only = yes
write list = @domain_admins
create mask = 0777
# Somente o administrador pode colocar novos drivers neste compartilhamento.


# Certifique-se de que o seguinte diretório existe, pode ser lido por todos,
# mas escrito apenas pelo super-usuário (root). Dentro deste diretório,
# deve-se criar um subdiretório para cada plataforma, com as mesmas permissões.
# Esses subdiretórios são:
#
# - "W32X86", para Windows 32 bits
# - "W64X86", para Windows 64 bits
# - "WIN40", para Windows NT 4.0
#
# Para mais informações, leia http://www.netadmintools.com/art258.html


#-------------------------------------------------------------------------------

# Estes são os compartilhamentos de rede em questão.
#
# O diretório onde serão armazenados os arquivos é especificado pela diretiva
# "path".
#
# Cada compartilhamento possui um grupo associado. A diretiva "force group" faz
# com que todos os arquivos criados dentro do compartilhamento pertencam ao
# grupo especificado. Note que, primeiro, deve ser criado o grupo no sistema,
# através do comando
#
# addgroup --force-badname <Grupo>
#
# em que <Grupo> é o nome do grupo que se deseja criar.
#
# Após criar um grupo, deve-se especificar quais usuários pertencerão a ele.
# Para isto, edite o arquivo "/etc/group". Cada linha deste arquivo
# corresponde a um grupo. No fim de cada linha, há uma lista, separada por vírgulas,
# dos usuários que pertencerão ao grupo. Por exemplo, a linha
#
# diretoria:x:1004:walter,gustavo,emerson
#
# especifica que os usuários "walter", "gustavo" e "emerson"
# pertencem ao grupo "diretoria". Note que não pode
# haver espaços entre as vírgulas!
#
# Após criar e configurar os grupos, é necessário tornar os diretórios de
# cada compartilhamento propriedade de seu respectivo grupo. Isto pode ser feito
# através do comando:
#
# chgrp <Grupo> -R <Diretório>
#
# em que <Grupo> é o grupo associado ao compartilhamento, e <Diretório> é o
# seu diretório. Por exemplo:
#
# chgrp diretoria -R /srv/smb/Diretoria
#
# Quem fizer parte do grupo de um compartilhamento, possui acesso completo a ele
# (leitura e escrita). Quem não for integrante do grupo, não possui nenhum tipo de
# acesso. Esta diretiva é implementada através dos parâmetros
# "create mask = 0660" e "directory mask = 0770". Eles especificam que o
# usuário criador e os usuários do grupo a quem pertencem os arquivos e diretórios do
# compartilhamento possuem controle total, mas aos demais usuários não é dado nenhum
# acesso.

[Comercial]
comment = Departamento Comercial
path = /srv/smb/Comercial

browseable = yes

force group = comercial
force user = %U
valid users = @comercial
create mask = 0660
directory mask = 0770

#available = no
public = no
writable = yes

[Diretoria]
comment = Diretoria
path = /srv/smb/Diretoria

browseable = yes

force group = diretoria
force user = %U
valid users = @diretoria
create mask = 0660
directory mask = 0770


#available = no
public = no
writable = yes

[Financeiro]
comment = Departamento Financeiro
path = /srv/smb/Financeiro

browseable = yes

force group = financeiro
force user = %U
valid users = @financeiro
create mask = 0660
directory mask = 0770

#available = no
public = no
writable = yes

[Autorizados]
browseable = yes
read list = tecnologia

write list = administradores
path = /mnt/Autorizados

force group = tecnologia
create mask = 0660
force user = %U
directory mask = 0770
comment = Programas autorizados
valid users = @tecnologia,@administradores

#available = no
public = no
writable = yes

[Dev]
comment = Componentes usados para criacao de sistemas
path = /srv/smb/Dev

browseable = yes

force group = desenvolvimento
force user = %U
valid users = @desenvolvimento
create mask = 0660
directory mask = 0770


#available = no
public = no
writable = no

#[Publico]
#   browseable = yes
#   path = /srv/smb/Publico
#   force group = nogroup
#   force user = %U
#   create mask = 0666
#   directory mask = 0777
#   comment = Area publica, onde todos podem ler e escrever
#   public = yes
#   #available = no
#   writable = yes

[Publico]
comment = Area publica, onde todos podem ler e escrever
path = /srv/smb/Publico
browseable = yes
writable = yes
public = yes
create mask = 0777
directory mask = 0777
security = share
hosts allow = ALL
read only = no
guest ok = yes
guest only = yes
guest account = nobody

zekkerj

Citar... quando eu usei o security = share ...
Cara, "security = share" é pra Windows 9x. Sua rede provavelmente é toda Windows XP ou 7, não use isso.

Se seus usuários já se autenticam pra pegar os outros acessos, deixe assim. Apenas libere o acesso público e certifique-se de que todos os usuários tenham acesso de escrita ao diretório onde o share é baseado. Se usar permissão "0777", é uma boa idéia ativar o sticky bit do diretório também. Assim um usuário não poderá apagar arquivos e diretórios criados pelos outros.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

fernandocz

Citação de: zekkerj online 16 de Setembro de 2013, 19:58
Citar... quando eu usei o security = share ...
Cara, "security = share" é pra Windows 9x. Sua rede provavelmente é toda Windows XP ou 7, não use isso.

Se seus usuários já se autenticam pra pegar os outros acessos, deixe assim. Apenas libere o acesso público e certifique-se de que todos os usuários tenham acesso de escrita ao diretório onde o share é baseado. Se usar permissão "0777", é uma boa idéia ativar o sticky bit do diretório também. Assim um usuário não poderá apagar arquivos e diretórios criados pelos outros.

primeiramente obrigado pela ajuda...
então, a rede aqui é composta por windows xp, windows 8 e linux ubuntu.

a questão é que nem todos estão conseguindo se autenticar, alguns conseguem e outros não.
eu não entendi o porque de nem todos conseguirem se autenticar, uma vez que todos os usuários estão cadastrados.
por isso eu usei o security = share, porém quando fiz isso, alguns usuários que tinham acesso à pastas restritas não conseguiram mais ter acesso, como foi o caso da pasta diretoria por exemplo.
existe um usuário que acessava normalmente a pasta diretoria com sua autenticação e quando mudei o security pra share esse acesso não foi mais possível.

fernandocz

desculpe pelo post duplo mas o meu problema foi resolvido.

agora a pasta publico consegue ser acessada sem autenticação e as demais pastas pedem autenticação.

mudei estas configurações:

[global]
map to guest = bad user

----Autenticação----
guest account = guest #

[Publico]
comment = Area publica, onde todos podem ler e escrever
path = /srv/smb/Publico
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
guest ok = yes



mas vlw pela ajuda...

zekkerj

Voltou o "security" para "user"? A opção "share" não funciona da forma como você pensa.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D