Configuração Automática de Servidor de Arquivos
Publicado por Tiago Cabral Padovani 10/01/2005
[ Hits: 9.504 ]
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
Instalação automática de programas
Descobrir biblioteca faltante ao rodar *.exe no wine
Monitoramento de espaco em disco, load e usuarios logados na maquina por e-mail
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









