Script para autogenerar grupos y usuarios con sus correspondientes directorios y permisos en SAMBA

Hola gente. Acá les dejo un Script que me desarrolle para generar automáticamente los grupos y usuarios de samba con su directorio personal.

Logo SAMBA
Logo SAMBA

Nombre del archivo: create_perfiles.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash
#
# GNU bash, versión 4.1.7(1)-release
# Script para generar los grupos y usuarios con sus correspondientes directorios y permisos
# Autor Gonzalo Fleitas

user=''
passwd=''
group=''
directory=''

echo "Agregando grupos..."
for i in $(cat groups.txt);
do
group=$i
groupadd $group
echo "Grupo "$i" Agregado."
done

echo ""

echo "Agregando usuarios..."
for i in $(cat users.txt);
do
user=`echo $i | awk -F: '{print $1}'`
passwd=`echo $i | awk -F: '{print $2}'`
group=`echo $i | awk -F: '{print $3}'`
directory=`echo $i | awk -F: '{print $4}'`

# Agrego usuario del sistema con su grupo y su directorio personal.
useradd $user -g $group -d $directory -s /sbin/nologin

# Seteo la contraseña al usuario recien creado.
echo -e "$passwd\n$passwd" | smbpasswd -a $user -s

# Seteo el propietario y grupo al directorio personal del usuario.
chown $user:$group $directory
# Seteo permiso total a su directorio solo al propietario.
chmod 700 $directory

# Genero el archivo con la configuración de los directorios para samba
echo -e "[$user]\n\tcomment = Carpeta personal de $user\n\tpath = $directory\n\twritable = yes\n\tvalid users = $user\n" >> smb.conf.txt
done

echo "Archivo smb.conf generado. Ahora solo falta agregar las lineas generadas del archivo smb.conf.txt en el archivo de configuración de samba (smb.conf)"

Para hacerlo funcionar deben generar un archivo groups.txt y colocarle los grupos en lineas distintas, por ejemplo:

1
2
administradores
docentes

También deben crear un archivo users.txt y colocarle los datos en el siguiente orden:
usuario:password:grupo:directorio personal

Ejemplo:

1
2
juan:juan1234:administradores:/home/juan
ana:anita1234:docentes:/home/anita

Ahora solo hace falta agregarle permiso de ejecución al script.

1
chmod +x create_perfiles.sh

Para ejecutarlo hay que logearse con el usuario root.

Esto es todo.

Cualquier consulta me preguntan.
Saludos.


8 comentarios en «Script para autogenerar grupos y usuarios con sus correspondientes directorios y permisos en SAMBA»

  1. Hola que tal!! me podrias ayudar con este script por favor no se por donde arrancar…
    crear un script que dado 3 números (del 0 al 99) ingresado por el usuario, diga si alguno de esos salió elegido de un sorteo aleatorio que se ejecuto 5 veces.

    La función que da un numero aleatorio del 0 al 99 es:
    shuf -i 0-99 -n 1

    Ejemplo, el usuario elige 16, 18, 55 y vos ejecutas 5 veces la función que da rango, todo dentro del script, que te avise, si la funcion te dio como randon el 16, el 18 etc

    Responder
  2. Hola linuxzero, ¿Que tal? ¿Tenes algo armado ya?

    Lo que podrías hacer, es pedir 3 números al usuario, y almacenarlo en un array.

    Luego te generas una función que llame 5 veces a la funcion que da numeros aleatorios y alacenas esos 5 numeros en otro array diferente.

    Y por ultimo, usando for anidados que recorra ambos arrays, te fijas con un «if» si hay numeros que coincidan.

    Espero haberte ayudado.
    Saludos!

    Responder
  3. Hola,
    No sé si estés aún revisando tus correos, al ejecutar el script que indicas acá aparece el siguiente error:

    Agregando usuarios…
    ./create_profiles.sh: line 42: syntax error near unexpected token `;&’
    ./create_profiles.sh: line 42: `echo -e «[$user]\n\tcomment = Carpeta personal de $user\n\tpath = $directory\n\twritable = yes\n\tvalid users = $user\n» >> smb.conf.txt’

    Cuál es el error?

    Muchas Gracias

    Saludos

    Responder
  4. Hola, en este script en que parte se podría implementar el tipo de grupo para cada usuario nuevo creado, me refiero a que sea usuario de grupo global o usuario de grupo de seguridad, de antemano gracias

    Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.