Configuração Automática de Servidor de Arquivos
Publicado por Tiago Cabral Padovani 10/01/2005
[ Hits: 9.067 ]
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
Redundância de links dedicados
Script para listar tentativas de acessos
Instalador do MPlayer e mais algumas coisas
Enviar gráficos 3D pela janela de chat no Kopete
Removendo arquivos com primeiro caracter especial
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)