Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  SSHFS - Montando directorios remotos con Bash
#21

(17-09-2021, 18:22)Shordi escribió:  ssh_config es para la salida de ssh

¿La salida de donde, en el servidor o el el cliente?
(17-09-2021, 18:22)Shordi escribió:  sshd_config es el puerto para el servidor ssh (la d es de demonio)

Si eso lo tengo claro, ese archivo maneja el servidor ssh

Saludos.
    ¡Gracias!
#22

Cita:¿La salida de donde, en el servidor o el el cliente?

Si la del d es la del servidor, por eliminacion...

No podemos regresar
    ¡Gracias!
#23

(17-09-2021, 17:46)Shordi escribió:  -En la station3 no entras como admin. Sino como cada uno de los usuarios y entonces
-creas una clave con:
      ssh-genkey
y pulsas enter a todo. Luego:
     ssh-copy-id -p <puerto> admin@ipdelservidor
Te pide la clave del admin@ipservidor. Se la pones.
Y ya está. A ese usuario no se le pide más la clave.

Si eres el administrador del equipo remoto de un cliente, es decir tiene un usuario allí que tiene permisos de administración (sudo) por ejemplo admin ¿Existe una forma de logrearse como usuario2 y hacer eso que dices de las claves? obviamente no sabes (y no deberías saber) la clave del usuario. Solo sabes tu clave de admin del equipo que le vendiste o le instalaste el sistema.
As que ¿Como se haría eso?
Saludos.
    ¡Gracias!
#24

Con
Sudo su
Y luego
su usuario

Siendo root no te pide la clave

Saludos

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • tincho
    ¡Gracias!
#25

(17-09-2021, 21:46)Shordi escribió:  Con Sudo su Y luego su usuario
Siendo root no te pide la clave
Muy bueno, conocía "su" pero nunca le di importancia.
Se podrá automatizar para crear el par de claves ?
Gracias
    ¡Gracias!
#26

Supongo. Es cosa de hacer un Shell script.
Ya te digo que yo lo hacía a pelo.

Saludos

No podemos regresar
    ¡Gracias!
#27

(18-09-2021, 01:00)Shordi escribió:  Es cosa de hacer un Shell script.

Pero un script bash contempla el cambio de usuario y sigue operando o al cambiar de usuario se detiene el script que se inicio con otro usuario?
Saludos.
    ¡Gracias!
#28

No he probado. Prueba.
Pero... nadie dice que deba ser un sólo shellscript. Le colocas dos en una carpeta temporal y primero ejecutas el que te pone como dios y luego el otro... o te pones como dios usando la función Sudoshell que apunte por algún lado y ejecutas el otro... etc. etc. posibilidades infinitas.

Saludos

No podemos regresar
    ¡Gracias!
#29

He conseguido montar todos los recursos a través de SSHFS para ello hice un programa en gambas (de terminal) que puede configurarse para que corra cada vez que el usuario inicia la sesión o crear un acceso directo en el escritorio etc.
Requisitos previos:
  •  
  • En el servidor tiene que existir el mismo usuario que en la maquina cliente y este tiene que tener los permisos pertinentes de acceso sobre los recursos compartidos. para ello se pueden manejar individualmente, en el caso del directorio desktop que es solo para ese usuario o grupalmente que es para el caso de recursos a los que pueden acceder varios usuarios en igualdad de condiciones como global o production.
  • Tiene que estar establecida la confianza entre el cliente y el servidor
Programa main
GAMBAS
  1. ' Gambas module file
  2.  
  3. Public Sub Main()
  4.  
  5.   Config.Load
  6.  
  7.   sshfs(["production"])
  8.  
  9.   Config.Save
  10.   Quit
  11.  
  12.  
  13. Private Sub sshfs(sGroup As String[])
  14.  
  15.   Dim sPrivate As String
  16.   Dim sSection As String
  17.   Dim sGlobal As String
  18.   Dim sec As String
  19.   Dim sComm As String
  20.  
  21.   sPrivate = User.home &/ "server" &/ "private"
  22.   sGlobal = User.home &/ "server" &/ "global"
  23.  
  24.   '' Private directory
  25.   Shell "mkdir -p " & sPrivate
  26.   sComm = "sshfs -o reconnect -p " & Config.Port & " " & User.Name & "@" & Config.Server & ":" & Config.Dsk &/ User.Name & " " & sPrivate
  27.   Print sComm
  28.   Shell sComm Wait
  29.  
  30.   '' Global directory
  31.   Shell "mkdir -p " & sGlobal
  32.   sComm = "sshfs -o reconnect -p " & Config.Port & " " & User.Name & "@" & Config.Server & ":" & Config.Glo & " " & sGlobal
  33.   Print sComm
  34.   Shell sComm Wait
  35.  
  36.   '' Section directory
  37.   For Each sec In sGroup
  38.     If Config.Sections.Exist(sec) Then
  39.       sSection = User.home &/ "server" &/ sec
  40.       Shell "mkdir -p " & sSection
  41.       sComm = "sshfs -o reconnect -p " & Config.Port & " " & User.Name & "@" & Config.Server & ":" & Config.Sec &/ sec & " " & sSection
  42.       Print sComm
  43.       Shell sComm Wait
  44.     Endif
  45.   Next
  46.  


Luego hay que usar la clase Config de Gaucho team Smile
GAMBAS
  1. ' Gambas class file
  2.  
  3. Private Const ConfigFile As String = ".setup/config.json"
  4. ''Configuration variables to be saved, add as needed below
  5. Public Sections As String[] = ["admin", "accounting", "commercial", "marketing", "hr", "managment", "control", "logistic", "purchasing", "production"]
  6. Public Base As String = "server"
  7. Public Server As String = "server"
  8. Public Port As String = "22" '' The server port default is 22 but, for increase the safety, is recomended to change to other.
  9. Public Group As String = "workgroup" '' Is the name of the team is the root name where will be mounted all the shared directories.
  10. Public Dsk As String = "/var/desktops"
  11. Public Sec As String = "/var/sections"
  12. Public Glo As String = "/var/global"
  13.  
  14. Public Admin As String = "superuser"
  15.  
  16. '' Here you have to pass all the global variables that are scattered in other classes or modules.
  17.  
  18.  
  19.   Dim jConfig As Collection
  20.   Dim sSymbol As String
  21.   Dim obj As Object = Me
  22.   Dim MyClass As Class = Object.Class(obj)
  23.  
  24.   If sFile = "" Then
  25.     sFile = User.Home &/ ConfigFile
  26.  
  27.   If Exist(sFile) Then
  28.     jConfig = JSON.FromString(File.Load(sFile))
  29.     For Each sSymbol In myClass.Symbols
  30.       If jConfig.Exist(sSymbol) Then
  31.         Object.SetProperty(obj, sSymbol, jConfig[sSymbol])
  32.       Endif
  33.     Next
  34.  
  35.  
  36.  
  37.   Dim jConfig As New JSONCollection
  38.   Dim obj As Object = Me
  39.   Dim MyClass As Class = Object.Class(obj)
  40.   Dim Var As String
  41.   Dim Valor As Variant
  42.  
  43.   If sFile = "" Then
  44.     sFile = User.Home &/ ConfigFile
  45.  
  46.   For Each Var In myClass.Symbols
  47.     '' Verifying that it is a property or a variable.
  48.     If (MyClass[var].kind = Class.Variable) Or (MyClass[var].kind = Class.Property) Then
  49.       valor = Object.GetProperty(obj, var)
  50.       jConfig.Add(Valor, var)
  51.     End If
  52.  
  53.   Next
  54.  
  55.   If Not Exist(File.Dir(sFile)) Then
  56.     Shell "mkdir -p " & File.Dir(sFile) Wait
  57.   File.Save(sFile, JSON.Encode2(jConfig))
  58.  



Bien, este programa solo monta los directorios especificado en el directorio home del usuario que lo ejecute (ver requisitos previos) pero los invito a proponer ampliaciones, sobretodo referido a la toma de datos del estado de la computadora para enviar al programa de gestión.
Saludos.
    ¡Gracias!
#30

Yo en el Intriga lo hago desde gambas y apoyado en la base de datos.

Tienes una tabla con esta estructura:

SQL
  1. CREATE TABLE `unidades` (
  2.  `rowid` INT NOT NULL AUTO_INCREMENT,
  3.  `permiso` VARCHAR(10) COLLATE utf8_spanish_ci NOT NULL,
  4.  `pathservidor` VARCHAR(1024) COLLATE utf8_spanish_ci NOT NULL,
  5.  `pathlocal` VARCHAR(1024) COLLATE utf8_spanish_ci NOT NULL,
  6.  `comentarios` text COLLATE utf8_spanish_ci NOT NULL,
  7.  `usr` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  8.  `fmod` datetime NOT NULL,
  9.  PRIMARY KEY (`rowid`),
  10.  UNIQUE KEY `permiso` (`permiso`)
  11. )



y otra llamada permisos, donde tienes, por ejemplo el permiso UD (de acceso a las unidades) y el UD_RO de acceso de sólo lectura. el RO contiene la cadena necesaria para que sshfs lo haga de solo lectura " -o ro " y el UD tiene el campo permiso vacío.
en pathremoto tienes cosas como /var/copias/unidades/<sede>/<sector> y en el pathlocal cosas como ~/RED/<sede>/<sector>

Luego tienes las funciones:

GAMBAS
  1. Public Sub unidades()
  2.     
  3.     Dim r As Result
  4.     Dim aperm As String[]
  5.     Dim sLocal, sremoto, scomando As String
  6.     Dim npuerto As String
  7.     
  8.     npuerto = 55555 'número establecido estándar de la aplicación
  9.     aperm = Split(m.entorno["permisos"], "|")
  10.     r = m.hcon.Exec("select * from ad_unidades where substr(`codigo`,2)='UD' order by `codigo` DESC") 'se ordena inverso para que los _RO se evalúen primero
  11.     scomando = "sshfs -o reconnect -p " & nPuerto & " administrador@10.8.0.1:" & sremoto & " " & sLocal Wait
  12.     While r.Available
  13.         If aperm.Exist(r!codigo) Then
  14.             sLocal = normaliza(r!pathLocal)
  15.             sremoto = normaliza(r!pathservidor)
  16.             If Not Exist(sLocal) Then
  17.                  Mkdir slocal
  18.             Endif
  19.             Shell scomando Wait
  20.         Endif
  21.     Wend
  22.     
  23.  
  24. Private Sub normaliza(cpath As String) As String
  25.     
  26.     cpath = Subst(cpath, "<nick>", m.entorno["nick"])
  27.     cpath = Subst(cpath, "<sede>", m.entorno["sede"])
  28.     cpath = Subst(cpath, "<sector>", m.entorno["sector"])
  29.     Return cpath
  30.     



No la he probado aún, que no tengo todavía las bases de datos en condiciones... pero te puedes hacer una idea.

Saludos

No podemos regresar
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)