RE: SSHFS - Montando directorios remotos con Bash - tincho - 17-09-2021
(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.
RE: SSHFS - Montando directorios remotos con Bash - Shordi - 17-09-2021
Cita:¿La salida de donde, en el servidor o el el cliente?
Si la del d es la del servidor, por eliminacion...
RE: SSHFS - Montando directorios remotos con Bash - tincho - 17-09-2021
(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.
RE: SSHFS - Montando directorios remotos con Bash - Shordi - 17-09-2021
Con
Sudo su
Y luego
su usuario
Siendo root no te pide la clave
Saludos
RE: SSHFS - Montando directorios remotos con Bash - tincho - 17-09-2021
(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
RE: SSHFS - Montando directorios remotos con Bash - Shordi - 18-09-2021
Supongo. Es cosa de hacer un Shell script.
Ya te digo que yo lo hacía a pelo.
Saludos
RE: SSHFS - Montando directorios remotos con Bash - tincho - 18-09-2021
(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.
RE: SSHFS - Montando directorios remotos con Bash - Shordi - 18-09-2021
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
RE: SSHFS - Montando directorios remotos con Bash - tincho - 19-09-2021
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
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.
RE: SSHFS - Montando directorios remotos con Bash - Shordi - 19-09-2021
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
|