Script Shell para Administração e Configuração do Samba em Red-Hat / Fedora
Publicado por Ricardo Gellman (última atualização em 05/07/2011)
[ Hits: 5.311 ]
Com o código abaixo irei, a partir de um menu básico case/shell, fornecer ao usuário as opções básicas de administração do samba para Linux RH, como criar usuários, compartilhamentos, grupos, etc. Lembre-se de liberar as portas do samba no iptables, e manter o smb.conf com o cabeçalho básico que forneço logo acima do script.
$DIRFILES é onde será a raiz das pastas compartilhadas
NOTA: Samba deve conter as seguintes linhas para correto funcionamento:
[global]
workgroup = mygroup
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
cups options = raw
############################################# # Script para Adminstração do Samba do Fedora # Ricardo Gellman 06/2011 # WWW.ALEMCORP.COM ############################################# #!/bin/ksh if [ "`whoami`" != "root" ];then echo "Script deve ser executado com usuario root" echo exit 0 fi while [ 1 ] do clear echo '*****************************' echo '1 - Criar Compartilhamento' echo '2 - Criar usuario' echo '3 - Apagar usuario' echo '4 - Adcionar usuario ao Compartilhamento' echo '5 - Remover usuario de um Grupo Compartilhado' echo '*****************************' read a case $a in 1) DIRFILES=/Arquivos echo "Digite o Nome da pasta a ser Compartilhada..." read folder if cat /etc/samba/smb.conf | grep -i "\[$folder\]" >/dev/null;then echo "Compartilhamento Ja existe..." echo sleep 3 else mkdir $DIRFILES/$folder >/dev/null chmod 770 $DIRFILES/$folder >/dev/null groupadd $folder >/dev/null chown root:$folder $DIRFILES/$folder chmod 770 $DIRFILES/* echo '-------------------------------' echo "Pasta criada - $DIRFILES/$folder" echo "Grupo de acesso - $folder" echo '-------------------------------' echo echo "Digite o Usuario que ira ter Acesso a pasta" read user CHKUSER=`id $user` if [ "$CHKUSER" != "" ];then echo "Usuario $user ja existe..." usermod -a -G $folder $user >/dev/null echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $folder ]" echo '*******************************' echo "Deseja Definir uma senha de acesso ao Samba, para o usuario $user (s/n)?" read sn case $sn in s) echo "Escolha a senha de Acesso ao usuario: $user" smbpasswd -a $user ;; n) ;; esac echo GETSMBIDS=`cat /etc/samba/smbusers | grep $folder 2>/dev/null | grep $user 2>/dev/null` echo "$GETSMBIDS" | while read IDS do if [ "$IDS" == "$folder = $user" ];then echo "Entrada < $folder = $user > existente em: /etc/samba/smbusers" echo sleep 3 elif [ "$IDS" == "" ];then echo "Inserindo entrada: $folder = $user no /etc/samba/smbusers" echo "$folder = $user" >> /etc/samba/smbusers echo sleep 3 else echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers" echo "$IDS,$user" >> /etc/samba/smbusers echo sleep 3 fi done else useradd -G $folder $user >/dev/null echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $folder ]" echo '*******************************' echo "Escolha a senha de Acesso ao usuario: $user" smbpasswd -a $user echo GETSMBIDS=`cat /etc/samba/smbusers | grep $folder 2>/dev/null | grep $user 2>/dev/null` echo "$GETSMBIDS" | while read IDS do if [ "$IDS" == "$folder = $user" ];then echo "Entrada < $folder = $user > existente em: /etc/samba/smbusers" echo sleep 3 elif [ "$IDS" == "" ];then echo "Inserindo entrada: $folder = $user no /etc/samba/smbusers" echo "$folder = $user" >> /etc/samba/smbusers echo sleep 3 else echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers" echo "$IDS,$user" >> /etc/samba/smbusers echo sleep 3 fi done fi sleep 2 echo " [$folder] path = $DIRFILES/$folder writable = yes valid users = @$folder " >> /etc/samba/smb.conf echo "Pasta Criada com sucesso" echo '**********************************************************' echo "-----------------/etc/samba/smb.conf----------------------" tail -6 /etc/samba/smb.conf echo "-----------------/etc/samba/smbusers----------------------" cat /etc/samba/smbusers | grep $user | grep $folder echo '----------------------/etc/passwd-------------------------' grep $user /etc/passwd echo '----------------------/etc/group--------------------------' grep $folder /etc/group echo sleep 10 fi ;; 2) echo "Digite o Usuario a ser criado" read user if id $user >/dev/null 2>&1;then echo "Usuario Ja existe" echo sleep 3 else echo "Digite a Senha do Usuario a ser criado" read senha echo "Usuario Sera de uso pessoal[Lucas] ou uso corporativo[Administrativo] - Escolha(p/c) ?" read op case $op in p) useradd -N $user -p $senha >/dev/null echo "Usuario $user criado com sucesso" echo sleep 3 ;; c) useradd -U -M $user -p $senha >/dev/null echo "Usuario $user criado com sucesso" echo sleep 3 ;; *) echo "Opção invalida..." echo sleep 3 ;; esac fi ;; 3) echo "Digite o Usuario a ser deletado" read user userdel -r $user echo "Processo de Deleção concluido..." echo sleep 3 ;; 4) echo "Digite o Usuario a ser Adcionado" read user echo "Digite o Grupo que o usuario sera adcionado" read grp CHKUSER=`id $user 2>/dev/null` if [ "$CHKUSER" != "" ];then echo "Usuario $user ja existe..." usermod -a -G $grp $user >/dev/null echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $grp ]" echo '*******************************' echo "Deseja Definir uma senha de acesso ao Samba, para o usuario $user (s/n)?" read sn case $sn in s) echo "Escolha a senha de Acesso ao usuario: $user" smbpasswd -a $user ;; n) ;; esac GETSMBIDS=`cat /etc/samba/smbusers | grep $grp 2>/dev/null | grep $user 2>/dev/null` echo "$GETSMBIDS" | while read IDS do if [ "$IDS" == "$grp = $user" ];then echo "Entrada < $grp = $user > existente em: /etc/samba/smbusers" echo sleep 3 elif [ "$IDS" == "" ];then echo "Inserindo entrada: $grp = $user no /etc/samba/smbusers" echo "$grp = $user" >> /etc/samba/smbusers echo sleep 3 else echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers" echo "$IDS,$user" >> /etc/samba/smbusers echo sleep 3 fi done echo "-----------------/etc/samba/smbusers----------------------" cat /etc/samba/smbusers | grep $user | grep $grp echo '----------------------/etc/passwd-------------------------' grep $user /etc/passwd echo '----------------------/etc/group--------------------------' grep $grp /etc/group echo sleep 10 else #useradd -g $grp $user >/dev/null useradd -g $grp $user >/dev/null 2>&1 echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $grp ]" echo '*******************************' echo "Escolha a senha de Acesso ao usuario: $user" smbpasswd -a $user echo GETSMBIDS=`cat /etc/samba/smbusers | grep $grp 2>/dev/null | grep $user 2>/dev/null` echo "$GETSMBIDS" | while read IDS do if [ "$IDS" == "$grp = $user" ];then echo "Entrada < $grp = $user > existente em: /etc/samba/smbusers" echo sleep 3 elif [ "$IDS" == "" ];then echo "Inserindo entrada: $grp = $user no /etc/samba/smbusers" echo "$grp = $user" >> /etc/samba/smbusers echo sleep 3 else echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers" echo "$IDS,$user" >> /etc/samba/smbusers echo sleep 3 fi done echo "-----------------/etc/samba/smbusers----------------------" cat /etc/samba/smbusers | grep $user | grep $grp echo '----------------------/etc/passwd-------------------------' grep $user /etc/passwd echo '----------------------/etc/group--------------------------' grep $grp /etc/group echo sleep 10 fi ;; 5) echo "Digite o Usuario a ser Removido do grupo de Compartilhamento" read user echo "Usuario pertence aos grupos abaixo:" SHAREGRP=`id -nG $user` echo "Nota: O usuario nao poderá ser removido de seu grupo primario" echo "Selecione o grupo a ser removido" read rmgrp for grp in $SHAREGRP do if [ "$grp" != "$rmgrp" ];then #Não existe metodo de remocao, logo, irei adcionar todos, exceto o removido usermod -G $grp $user fi done echo "Grupos atuais:" id -nG $user ;; esac done
Backup e restauração dos programas instalados em sistemas baseados em Debian
cambada_oneko - gatinhos coloridos perseguindo o ponteiro do mouse
[wgetreload] Evitando conexão "staled" (parada) no wget
Ping para servidores tendo um arquivo TXT com a lista dos IPs/Hostnames
Nenhum comentário foi encontrado.
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
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[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