Páginas (3):    1 2 3
tincho   17-09-2021, 20:01
#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.

1 Saludo.
Shordi   17-09-2021, 20:30
#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
tincho   17-09-2021, 20:32
#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.

1 Saludo.
Shordi   17-09-2021, 21:46
#24
Con
Sudo su
Y luego
su usuario

Siendo root no te pide la clave

Saludos

No podemos regresar
tincho   17-09-2021, 23:17
#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
Última modificación: 18-09-2021, 15:39 por tincho.

1 Saludo.
Shordi   18-09-2021, 01:00
#26
Supongo. Es cosa de hacer un Shell script.
Ya te digo que yo lo hacía a pelo.

Saludos

No podemos regresar
tincho   18-09-2021, 15:43
#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.

1 Saludo.
Shordi   18-09-2021, 18:08
#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
tincho   19-09-2021, 13:42
#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
Código:
' Gambas module file

Public Sub Main()

  Config.Load

  sshfs(["production"])

  Config.Save
  Quit

End

Private Sub sshfs(sGroup As String[])

  Dim sPrivate As String
  Dim sSection As String
  Dim sGlobal As String
  Dim sec As String
  Dim sComm As String

  sPrivate = User.home &/ "server" &/ "private"
  sGlobal = User.home &/ "server" &/ "global"

  '' Private directory
  Shell "mkdir -p " & sPrivate
  sComm = "sshfs -o reconnect -p " & Config.Port & " " & User.Name & "@" & Config.Server & ":" & Config.Dsk &/ User.Name & " " & sPrivate
  Print sComm
  Shell sComm Wait

  '' Global directory
  Shell "mkdir -p " & sGlobal
  sComm = "sshfs -o reconnect -p " & Config.Port & " " & User.Name & "@" & Config.Server & ":" & Config.Glo & " " & sGlobal
  Print sComm
  Shell sComm Wait

  '' Section directory
  For Each sec In sGroup
    If Config.Sections.Exist(sec) Then
      sSection = User.home &/ "server" &/ sec
      Shell "mkdir -p " & sSection
      sComm = "sshfs -o reconnect -p " & Config.Port & " " & User.Name & "@" & Config.Server & ":" & Config.Sec &/ sec & " " & sSection
      Print sComm
      Shell sComm Wait
    Endif
  Next

End
Luego hay que usar la clase Config de Gaucho team Smile
Código:
' Gambas class file

Create Static
Export
Private Const ConfigFile As String = ".setup/config.json"
''Configuration variables to be saved, add as needed below
Public Sections As String[] = ["admin", "accounting", "commercial", "marketing", "hr", "managment", "control", "logistic", "purchasing", "production"]
Public Base As String = "server"
Public Server As String = "server"
Public Port As String = "22" '' The server port default is 22 but, for increase the safety, is recomended to change to other.
Public Group As String = "workgroup" '' Is the name of the team is the root name where will be mounted all the shared directories.
Public Dsk As String = "/var/desktops"
Public Sec As String = "/var/sections"
Public Glo As String = "/var/global"

Public Admin As String = "superuser"

'' Here you have to pass all the global variables that are scattered in other classes or modules.

Public Sub Load(Optional sFile As String)

  Dim jConfig As Collection
  Dim sSymbol As String
  Dim obj As Object = Me
  Dim MyClass As Class = Object.Class(obj)

  If sFile = "" Then
    sFile = User.Home &/ ConfigFile
  Endif

  If Exist(sFile) Then
    jConfig = JSON.FromString(File.Load(sFile))
    For Each sSymbol In myClass.Symbols
      If jConfig.Exist(sSymbol) Then
        Object.SetProperty(obj, sSymbol, jConfig[sSymbol])
      Endif
    Next
  Endif

End

Static Public Sub Save(Optional sFile As String)

  Dim jConfig As New JSONCollection
  Dim obj As Object = Me
  Dim MyClass As Class = Object.Class(obj)
  Dim Var As String
  Dim Valor As Variant

  If sFile = "" Then
    sFile = User.Home &/ ConfigFile
  Endif

  For Each Var In myClass.Symbols
    '' Verifying that it is a property or a variable.
    If (MyClass[var].kind = Class.Variable) Or (MyClass[var].kind = Class.Property) Then
      valor = Object.GetProperty(obj, var)
      jConfig.Add(Valor, var)
    End If

  Next

  If Not Exist(File.Dir(sFile)) Then
    Shell "mkdir -p " & File.Dir(sFile) Wait
  Endif
  File.Save(sFile, JSON.Encode2(jConfig))

End

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.

1 Saludo.
Shordi   19-09-2021, 14:23
#30
Yo en el Intriga lo hago desde gambas y apoyado en la base de datos.

Tienes una tabla con esta estructura:

Código:
CREATE TABLE `unidades` (
 `rowid` int NOT NULL AUTO_INCREMENT,
 `permiso` varchar(10) COLLATE utf8_spanish_ci NOT NULL,
 `pathservidor` varchar(1024) COLLATE utf8_spanish_ci NOT NULL,
 `pathlocal` varchar(1024) COLLATE utf8_spanish_ci NOT NULL,
 `comentarios` text COLLATE utf8_spanish_ci NOT NULL,
 `usr` varchar(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
 `fmod` datetime NOT NULL,
 PRIMARY KEY (`rowid`),
 UNIQUE KEY `permiso` (`permiso`)
)

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:

Código:
Public Sub unidades()
    
    Dim r As Result
    Dim aperm As String[]
    Dim sLocal, sremoto, scomando As String
    Dim npuerto As String
    
    npuerto = 55555 'número establecido estándar de la aplicación
    aperm = Split(m.entorno["permisos"], "|")
    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
    scomando = "sshfs -o reconnect -p " & nPuerto & " administrador@10.8.0.1:" & sremoto & " " & sLocal Wait
    While r.Available
        If aperm.Exist(r!codigo) Then
            sLocal = normaliza(r!pathLocal)
            sremoto = normaliza(r!pathservidor)
            If Not Exist(sLocal) Then
                 Mkdir slocal
            Endif
            Shell scomando Wait
        Endif
    Wend
    
End

Private Sub normaliza(cpath As String) As String
    
    cpath = Subst(cpath, "<nick>", m.entorno["nick"])
    cpath = Subst(cpath, "<sede>", m.entorno["sede"])
    cpath = Subst(cpath, "<sector>", m.entorno["sector"])
    Return cpath
    
End

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
Páginas (3):    1 2 3
  
Usuarios navegando en este tema: 10 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.