Configuração Automática de Servidor de Arquivos
Publicado por Tiago Cabral Padovani 10/01/2005
[ Hits: 9.373 ]
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
tag-mp3 - Um script para editar e/ou visualizar algumas tags ID3 de arquivos MP3
mant - abra manpages em seu terminal
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?
\Boot sem espaço em disco (Fedora KDE Plasma 42) (5)
Preciso recuperar videos *.mp4 corrompidos (0)
Programa fora de escala na tela do pc (38)









