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.446 ]
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
Limpeza de logs sem dor de cabeça
Echoc (Comando echo, mas com cores)
Nenhum comentário foi encontrado.
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? (12)