Configuração Automática de Servidor de Arquivos
Publicado por Tiago Cabral Padovani 10/01/2005
[ Hits: 9.369 ]
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.
#!/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
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









