Configuração Automática de Servidor de Arquivos

Publicado por Tiago Cabral Padovani 10/01/2005

[ Hits: 8.942 ]

Download config.arquivos.sh




Procurei reunir as configurações básicas de um típico servidor de arquivos para redes c/ estações Linux e Windows, incluindo samba,nis,nfs,entre outros serviços. Funciona no Conectiva Linux 10, podendo, é claro, ser adaptado para qualquer outra versão. Basta rodar o script que o computador já estará funcionando como um servidor, mas antes altere como desejar as variáveis definidas no início do arquivo.

  



Esconder código-fonte

#!/bin/bash
####################################
#  CASA - Configuração Automática de Servidor de Arquivos
#
#         Tiago Cabral Padovani - 08/11/2004
####################################

USUARIOS=(usuario1 usuario2 usuario3 usuario4)  # Usuários que serão criados automaticamente

NOMES=("Nome do Usuário 1" "Nome do Usuário 2" "Nome do Usuário 3" "Nome do Usuário 4")  # Nome completo de cada usuário, na ordem acima

GRUPOS=(g1 g2 g3 g4 g5 g6)  # Grupos de usuários que se desejam criar

DEFGRUPOS=(g1,g2 g1,g2 g3,g4 g5,g6)  # Define a quais grupos cada usuário pertencerá, na mesma ordem de usuários acima

SENHAPADRAO="password"  # Senha inicial para todos os usuários criados

SERVICOS=(anacron apache crond inet local netfs network nfs nfslock portmap random smb swat syslog webmin xinetd ypserv)

PASTARAIZ="/DOCS"

PASTAS=(CONTAS DP E_MAILS ORCAMENTOS PLANILHAS TEXTOS)

APACHE="/srv/www/default/html"

SAMBA="/etc/samba"

LINUXCONF="/etc/linuxconf/archive/Casa-Escritório/etc"

SERVIP="192.168.200.10"  # IP escolhido para o Servidor

ACESSO_WEBMIN="$SERVIP 192.168.200.1 192.168.200.2"  # Computadores que poderão acessar o Webmin

ACESSO_SWAT="$SERVIP 192.168.200.1 192.168.200.2"  # Computadores que poderão acessar o SWAT

#Obs: após rodar o script, digite "servidor.linux" em um browser de qualquer computador conectado ao servidor para abrir a página HTML de configurações remotas.


if [ $USER != "root" ];then
   echo "ESTE COMANDO DEVE SER EXECUTADO COMO ROOT"
   exit 1
fi

declare -i X=0
echo
echo "**********************************************************************"
echo "*                 CONFIGURANDO SERVIDOR DE ARQUIVOS                  *"
echo "**********************************************************************"
echo
echo "----- Instalando utilitários..."
apt-get -y install ypserv* nfs-server* linuxconf* apache samba-server samba-swat webmin*

echo
echo "----- Criando pastas: $PASTARAIZ e subpastas..."
if ! [ -e $PASTARAIZ ];then
   mkdir $PASTARAIZ
fi
while (( $X < ${#PASTAS[*]} ));do
   mkdir -p $PASTARAIZ/${PASTAS[$X]}
   X=X+1;
done
X=0
chmod -R 777 $PASTARAIZ
echo "            Concluído."

echo
echo "----- Copiando rotina de backup..."
cp ./backup /bin/backup

ICONE=("[Desktop Entry]" "Comment=" "Comment[pt_BR]=" "Encoding=UTF-8" "Exec=/bin/backup" "GenericName=" "GenericName[pt_BR]=" "Icon=ark" "MimeType=" "Name=Backup HD" "Name[pt_BR]=Backup HD" "Path=" "StartupNotify=true" "Terminal=true" "TerminalOptions=\s--noclose" "Type=Application" "X-DCOP-ServiceType=" "X-KDE-SubstituteUID=false" "X-KDE-Username=root")
while (( $X < ${#ICONE[*]} ));do
   echo ${ICONE[$X]} >> "/root/Desktop/Backup HD.desktop"
   X=X+1;
done
X=0
echo "            Concluído."

echo
echo "----- Configurando hostname servidor.linux IP $SERVIP..."
rm -f /etc/sysconfig/network
NET=(NETWORKING=yes GATEWAY=\"\" GATEWAYDEV=\"\" HOSTNAME=\"servidor.linux\")
while (( $X < ${#NET[*]} ));do
   echo ${NET[$X]} >> /etc/sysconfig/network
   X=X+1;
done
X=0
rm -f /etc/sysconfig/network-scripts/ifcfg-eth0
NET1=(DEVICE=\"eth0\" ONBOOT=\"yes\" BOOTPROTO=\"none\" IPADDR=\"$SERVIP\" NETMASK=\"255.255.255.0\" HOSTNAME=servidor DOMAIN=linux IPXNETNUM_802_2=\"\" IPXPRIMARY_802_2=\"no\" IPXACTIVE_802_2=\"no\" IPXNETNUM_802_3=\"\" IPXPRIMARY_802_3=\"no\" IPXACTIVE_802_3=\"no\" IPXNETNUM_ETHERII=\"\" IPXPRIMARY_ETHERII=\"no\" IPXACTIVE_ETHERII=\"no\" IPXNETNUM_SNAP=\"\" IPXPRIMARY_SNAP=\"no\" IPXACTIVE_SNAP=\"no\")
while (( $X < ${#NET1[*]} ));do
   echo ${NET1[$X]} >> /etc/sysconfig/network-scripts/ifcfg-eth0
   X=X+1;
done
X=0
chmod 755 /etc/sysconfig/network-scripts/ifcfg-eth0
rm -f /etc/hosts
NET2=("127.0.0.1 localhost.localdomain localhost" "$SERVIP servidor.linux servidor")
while (( $X < ${#NET2[*]} ));do
   echo ${NET2[$X]} >> /etc/hosts
   X=X+1;
done
X=0

echo
echo "----- Criando pagina para configurações remotas..."
rm -rf $APACHE/*
INDEX=("<html><head><title>SERVIDOR DE ARQUIVOS - LINUX</title></head>" "<body link=darkblue vlink=darkblue alink=darkblue bgcolor=lightblue>" "<center><font color=red size=5><b>Usuários:</b></font></center><br>" "<a href=\"http://$SERVIP:98/htmlmod:userpass:\"><p align=center>Alterar senha de usuario</a></p><br>" "<center><font color=red size=5><b>Administrador:</b></font></center><br>" "<a href=\"http://$SERVIP:98/html:/\"><p align=center>Configurador Linux</a><br><br>" "<a href=\"http://$SERVIP:98/html:/ok,==Usu%E1rios/ok,==Contas==de==usu%E1rios\">Gerenciador de Usuarios</a><br><br>" "<a href=\"http://$SERVIP:901\">Configuracao do Samba</a><br><br>" "<a href=\"https://$SERVIP:10000\">Webmin</a><br><br>" "<a href=\"https://$SERVIP:10000/custom/\">Comandos Customizados</a></p>" "</body></html>")
while (( $X < ${#INDEX[*]} ));do
   echo ${INDEX[$X]} >> $APACHE/index.html
   X=X+1;
done
X=0
echo "            Concluído."

echo
echo "----- Configurando servidor NIS..."
echo "domain linuxnis server servidor.linux" > /etc/yp.conf
echo "ypserver servidor.linux" >> /etc/yp.conf
if [ -z "$(grep -i + /etc/passwd)" ];then
   echo "+::::::" >> /etc/passwd
fi
if [ -z "$(grep -i + /etc/group)" ];then
   echo "+:::" >> /etc/group
fi
echo "            Concluído."

echo
echo "----- Configurando servidor NFS..."
echo "/home 192.168.200.0/255.255.255.0(rw)" > /etc/exports
echo "            Concluído."

echo
echo "----- Configurando samba..."
rm -f $SAMBA/smb.conf
CONFSAMBA=("[global]" "   workgroup = TRABALHO" "   netbios name = SERVIDOR.LINUX" "   server string = Linux SMB Server" "   passwd program = /usr/bin/passwd" "   username map = /etc/samba/smbusers" "   unix password sync = Yes" "   log level = 1" "   log file = /var/log/samba/%m.log" "   max log size = 50" "   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192" "   add machine script = /usr/sbin/adduser -n -r -g machines -c" "   domain logons = Yes" "   ldap ssl = no" "   idmap uid = 16777216-33554431" "   idmap gid = 16777216-33554431" "   create mask = 0777" "   directory mask = 0777" "   hosts allow = 192.168.200." "   unix charset = iso8859-1" "   display charset = iso8859-1" "   load printers = No" "[homes]" "   comment = Home Directories" "   read only = No" "   browseable = No" "[CONTAS]" "   path = $PASTARAIZ/CONTAS" "   valid users = @g1" "   read only = No" "[DP]" "   path = $PASTARAIZ/DP" "   valid users = @g2" "   read only = No" "[PLANILHAS]" "   path = $PASTARAIZ/PLANILHAS" "   valid users = @g3" "   read only = No" "[TEXTOS]" "   path = $PASTARAIZ/TEXTOS" "   valid users = @g4" "   read only = No" "[ORCAMENTOS]" "   path = $PASTARAIZ/ORCAMENTOS" "   valid users = @g5" "   read only = No" "[E_MAILS]" "   path = $PASTARAIZ/E_MAILS" "   valid users = @g6" "   read only = No")
while (( $X < ${#CONFSAMBA[*]} ));do
   echo ${CONFSAMBA[$X]} >> $SAMBA/smb.conf
   X=X+1;
done
X=0
echo "            Concluído."

echo
echo "----- Configurando acesso ao linuxconf..."
echo "### file exist ###" > $LINUXCONF/conf.linuxconf-netaccess
echo "[netaccess]" >> $LINUXCONF/conf.linuxconf-netaccess
echo "htmlaccess.from 127.0.0.1" >> $LINUXCONF/conf.linuxconf-netaccess
echo "htmlaccess.from 192.168.200.0 255.255.255.0" >> $LINUXCONF/conf.linuxconf-netaccess
echo "htmlaccess.dolog 1" >> $LINUXCONF/conf.linuxconf-netaccess
echo "htmlaccess.enable 1" >> $LINUXCONF/conf.linuxconf-netaccess
rm -f /etc/conf.linuxconf
CONFLINUX=("[base]" "LINUXCONF.distribution conectiva" "treemenu.textmode 0" "treemenu.guimode 1" "notice.10-welcome.help 1100616701" "shellmod.index /usr/lib/linuxconf/shellmodules/rbc/rbc" "shellmod.regmenu./usr/lib/linuxconf/shellmodules/rbc/rbc main MENU_NETWORK_BOOT \"Remote Boot\"" "module.list 1 accountbatch" "module.list 1 amandaconf" "module.list 1 aptconf" "module.list 1 shellmod" "module.list 1 dhcpd" "module.list 1 dialout" "module.list 1 dnsconf" "module.list 1 fetchmailconf" "module.list 1 firewall" "module.list 1 fsbrowser" "module.list 1 grubconf" "module.list 1 gurus" "module.list 1 inetdconf" "module.list 1 inittab" "module.list 1 ircdconf" "module.list 1 isapnpconf" "module.list 1 kbdconf" "module.list 1 kernelconf" "module.list 1 liloconf" "module.list 1 mailconf" "module.list 1 managerpm" "module.list 1 marsconf" "module.list 1 mgettyconf" "module.list 1 modemconf" "module.list 1 motd" "module.list 1 mrtg" "module.list 1 netadm" "module.list 1 nisconf" "module.list 1 opensshd" "module.list 1 pamconf" "module.list 1 postfixconf" "module.list 1 pppdialin" "module.list 1 pslaveconf" "module.list 1 pythonmod" "module.list 1 radiusconf" "module.list 1 rarp" "module.list 1 redhatppp" "module.list 1 report" "module.list 1 samba" "module.list 1 squid" "module.list 1 status" "module.list 1 syslogconf" "module.list 1 treemenu" "module.list 1 updatemon" "module.list 1 usermenu" "module.list 1 usersbygroup" "module.list 1 uucp" "module.list 1 vregistry" "module.list 1 wuftpd" "module.list 1 Xkbdconf" "pslaveconf.pslaveconf_sum f398fcaeb13fbd984f66d2543382711f" "[stationid]" "html.bodyparm bgcolor=white background=\"/images:images/CNCfundo.jpg\" text=darkblue vlink=gray link=red" "[noarch]" "linuxconf.lastlang pt_BR" "[hardware]" "lilo.isused 1" "[netaccess]" "htmlaccess.from 192.168.200.0 255.255.255.0" "htmlaccess.dolog 1" "htmlaccess.enable 1")
while (( $X < ${#CONFLINUX[*]} ));do
   echo ${CONFLINUX[$X]} >> /etc/conf.linuxconf
   X=X+1;
done
X=0

if ! [ -e /etc/inetd.conf.OLD ];then
   mv /etc/inetd.conf /etc/inetd.conf.OLD
fi
echo "linuxconf stream tcp wait root /bin/linuxconf linuxconf --http" > /etc/inetd.conf
echo "            Concluído."

echo
echo "----- Configurando acesso ao SWAT..."
rm -f /etc/xinetd.d/swat
SWAT=("service swat" "{" "disable = no" "port = 901" "socket_type = stream" "wait = no" "only_from = 127.0.0.1 $ACESSO_SWAT" "user = root" "server = /usr/sbin/swat" "log_on_failure += USERID" "}")
while (( $X < ${#SWAT[*]} ));do
   echo ${SWAT[$X]} >> /etc/xinetd.d/swat
   X=X+1;
done
X=0
echo "            Concluído."

echo
echo "----- Configurando acesso ao Webmin..."
echo "port=10000" > /etc/webmin/miniserv.conf
echo "addtype_cgi=internal/cgi" >> /etc/webmin/miniserv.conf
echo "realm=Webmin Server" >> /etc/webmin/miniserv.conf
echo "logfile=/var/log/webmin/miniserv.log" >> /etc/webmin/miniserv.conf
echo "errorlog=/var/log/webmin/miniserv.error" >> /etc/webmin/miniserv.conf
echo "pidfile=/var/run/miniserv.pl.pid" >> /etc/webmin/miniserv.conf
echo "logtime=168" >> /etc/webmin/miniserv.conf
echo "ppath=" >> /etc/webmin/miniserv.conf
echo "ssl=1" >> /etc/webmin/miniserv.conf
echo "env_WEBMIN_CONFIG=/etc/webmin" >> /etc/webmin/miniserv.conf
echo "env_WEBMIN_VAR=/var/log/webmin" >> /etc/webmin/miniserv.conf
echo "atboot=0" >> /etc/webmin/miniserv.conf
echo "logout=/etc/webmin/logout-flag" >> /etc/webmin/miniserv.conf
echo "listen=10000" >> /etc/webmin/miniserv.conf
echo "denyfile=\.pl$" >> /etc/webmin/miniserv.conf
echo "log=1" >> /etc/webmin/miniserv.conf
echo "blockhost_failures=5" >> /etc/webmin/miniserv.conf
echo "blockhost_time=60" >> /etc/webmin/miniserv.conf
echo "syslog=1" >> /etc/webmin/miniserv.conf
echo "session=1" >> /etc/webmin/miniserv.conf
echo "userfile=/etc/webmin/miniserv.users" >> /etc/webmin/miniserv.conf
echo "keyfile=/etc/webmin/miniserv.pem" >> /etc/webmin/miniserv.conf
echo "passwd_file=/etc/shadow" >> /etc/webmin/miniserv.conf
echo "passwd_uindex=0" >> /etc/webmin/miniserv.conf
echo "passwd_pindex=1" >> /etc/webmin/miniserv.conf
echo "passwd_cindex=2" >> /etc/webmin/miniserv.conf
echo "passwd_mindex=4" >> /etc/webmin/miniserv.conf
echo "passwd_mode=0" >> /etc/webmin/miniserv.conf
echo "preroot=conectiva" >> /etc/webmin/miniserv.conf
echo "root=/usr/share/webmin" >> /etc/webmin/miniserv.conf
echo "mimetypes=/usr/share/webmin/mime.types" >> /etc/webmin/miniserv.conf
echo "libwrap=" >> /etc/webmin/miniserv.conf
echo "alwaysresolve=" >> /etc/webmin/miniserv.conf
echo "sockets=" >> /etc/webmin/miniserv.conf
echo "allow=127.0.0.1 $ACESSO_WEBMIN" >> /etc/webmin/miniserv.conf
echo "passdelay=0" >> /etc/webmin/miniserv.conf
echo "no_pam=0" >> /etc/webmin/miniserv.conf
echo "logouttime=10" >> /etc/webmin/miniserv.conf
echo "root: init nis custom samba exports net inittab webmin man grub file time fdisk proc logrotate xinetd shell mount acl" > /etc/webmin/webmin.acl
echo "            Concluído."

echo
echo "----- Configurando serviços de inicializaçao..."
while (( $X < ${#SERVICOS[*]} ));do
   chkconfig ${SERVICOS[$X]} on
   X=X+1;
done
X=0
SERVICOS=(cups hdparm hotplug hpoj kudzu linuxconf-web myfirewall pcmcia sshd ypbind yppasswdd)
while (( $X < ${#SERVICOS[*]} ));do
   chkconfig ${SERVICOS[$X]} off
   X=X+1;
done
X=0
echo "            Concluído."

echo
echo "----- Configurando comandos personalizados (webmin)..."
rm -f /etc/webmin/custom/*.edit /etc/webmin/custom/*.cmd /etc/webmin/custom/*.html
echo "/etc/crontab" > /etc/webmin/custom/01.edit
echo "Crontab" >> /etc/webmin/custom/01.edit
echo "$SAMBA/smb.conf" > /etc/webmin/custom/02.edit
echo "Config SAMBA" >> /etc/webmin/custom/02.edit
echo "/bin/backup" > /etc/webmin/custom/01.cmd
echo "Executar Backup p/ HD" >> /etc/webmin/custom/01.cmd
echo "root 0 1 0 0 0 0" >> /etc/webmin/custom/01.cmd
echo "            Concluído."

echo
echo "----- Criando usuarios e definindo grupos..."
while (( $X < ${#GRUPOS[*]} ));do
   groupadd -f ${GRUPOS[$X]}
   X=X+1;
done
X=0

while (( $X < ${#USUARIOS[*]} ));do
   if [ -z "$(grep /${USUARIOS[$X]}: /etc/passwd)" ];then
      useradd ${USUARIOS[$X]} -G ${DEFGRUPOS[$X]} -c "${NOMES[$X]}"
   else
      usermod -G ${DEFGRUPOS[$X]} -c "${NOMES[$X]}" ${USUARIOS[$X]}
   fi
   X=X+1;
done
X=0

echo $SENHAPADRAO > /tmp/senha
while (( $X < ${#USUARIOS[*]} ));do
   passwd --stdin ${USUARIOS[$X]} < /tmp/senha
   X=X+1;
done
X=0

echo $SENHAPADRAO >> /tmp/senha
while (( $X < ${#USUARIOS[*]} ));do
   smbpasswd -as ${USUARIOS[$X]} < /tmp/senha
   X=X+1;
done
X=0

rm -f /tmp/senha
echo "            Concluído."

echo
echo "**********************************************************************"
echo "*                     CONFIGURACAO FINALIZADA                        *"
echo "**********************************************************************"
echo
echo "Deseja ativar as configurações [s/n]?"; read OPC
if [ $OPC == "s" ];then
   cd /etc/rc.d/init.d
   ./network restart
   ./hostname restart
   ./inet restart
   ./apache start
   ./nfs start
   ./nfslock start
   ./smb start
   ./webmin restart
   ./ypserv start
   ./xinetd restart
   cd -
   echo
   echo "CONFIGURAÇÕES ATIVADAS."
   echo
else
   echo
   echo "REINICIALIZE O COMPUTADOR PARA QUE AS ALTERAÇÕES TENHAM EFEITO"
   echo
fi

Scripts recomendados

Removendo e-mails da fila do queue

Barra de progresso em ASCII

backup

Ver TV e rádio online por shell script

Teste compatativo entre discos e/ou partições


  

Comentários
[1] Comentário enviado por ltiinformatica em 09/06/2006 - 11:10h

Bom Dia

Gostaria de saber como faço para configura um servidor linu Conectiva 10 eu tenho os dois primeiro CD (cd1, cd2 e cd3).
Com os dois primeiro eu consigo configura um servidor de dados e internet com fariwall

[2] Comentário enviado por padovani em 09/06/2006 - 21:08h

Olá, se você especificar melhor o que você deseja implementar e que sistema operacional será usado nas máquinas cliente eu posso te mandar alguns arquivos de configuração de exemplo. Há várias soluções para implementação de servidor de arquivos, de banco de dados (não sei se é isso que você quer) e de Internet. No caso do servidor de Internet, por exemplo, pode-se usar apenas proxy, proxy autenticado, firewall, proxy+firewall, firewall com nat ou não...etc...

Portanto, se você quiser me mande um email com os detalhes.

[3] Comentário enviado por romarcos em 15/06/2006 - 09:38h

Boa Tarde

gostaria de saber o e necessario para implementacao e configuracao do servidor de arquivo de uma universidade

[4] Comentário enviado por ftpflex em 28/01/2008 - 19:51h

Queria uma ajuda, pois não intendo muito de linux, mas ja estou pesquisando muito sobre, tenho uma loja aqui onde moro e estou com um problema que acho que o linux poderia me ajudar muito, pois formato muitas maquinas tanto com windows quanto para linux e o que esta acontecendo é que nem sempre consigo fazer os backups como deviam pois o windows xp pro SP2 trava ou sobrecarrega...e ai por diante...
Estava pensando em um servidor linux dedicado, sempre que posso dou preferencia ao conectiva( pra falar a verdade nem sei pq, mas curto ele desde de tive meu primeiro pc, fuço nele pra *&¨*¨@!# )
Sera o que é possivel fazer com um essa configuração? e se possivel alguns paços básicos para a instalação, muito obrigado desde de já

Athlon64 3000+ (939pinos)
Abit KN8 (chipset NVidia)
Via ethernet 6105 (pois nao consegui fazer o linux reconhecer a on-board)
1GB DDR 400 kingston
HD 160 seagate 7200.9 IDE
HD 80 samsung 7200 SATA (nao consegui reconhece-lo tambem,onde acho o RAID para linux?)
grav. de DVD LG
CONECTIVA 10 instalado no hd de 160gb (2048/swap e o resto para o linux-tambem nao sei se esse particionamento esta certo a divisão era diferente,mas rodou beleza "redondo")

obs.: preciso para compatibilidade para fat32, ntfs e para linux

GRATO = paulopxk@hotmail.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts