Configuração Automática de Servidor de Arquivos
Publicado por Tiago Cabral Padovani 10/01/2005
[ Hits: 9.055 ]
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
Shell Script básico para gerenciar usuários e bancos no MySQL ou MariaDB
Apagar arquivos recursivamente de um diretório pela extensão
Mudança automatica de papel de parede no fluxbox
Instalador de macromedia flash para comps AMD Athlon 86_64
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta