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.449 ]
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
Interface gráfica para nível de tinta (escputil) em shell script
Backup mysqldump usando Shell Script
Backup dos arquivos e diretórios de um servidor com XMAIL e Iptables para um servidor central de Bac
Baixando, listando e limpando os pacotes órfãos
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? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)