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.504 ]
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
Script de backup em um case USB
RWLamp - Instalador Lamp-server
Ver endereço IP externo com DuckDuckGo + wget
Nautilus-script: Edite com o Gimp
Nenhum comentário foi encontrado.
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Criar entrada no GRUB para uma ISO Linux (7)
Open Suse não abre wi-fi automaticamente (3)
Ruído no Microfone (ALC287 - AMD Ryzen 5 7535HS) no Debian 12.9 (15)