Configuração Automática de Servidor de Arquivos
Publicado por Tiago Cabral Padovani 10/01/2005
[ Hits: 9.183 ]
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
Converter slides swf baixados do slideshare para pdf
Simples dialog script para escolha de gerenciador de janelas
Redimensionador automático de imagens
Uma loja de apps por linha de comando
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Iinstalar o Scanner Kodak i940 no Linux Mint 19/20? (4)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (11)
Será que eu deveria apreender C/C++ para desenvolver para Linux? (4)