Cambiar modos o permisos en Linux

Una de las maneras para controlar accesos de forma más sencilla en Linux es a través del uso de permisos o cambio de modos para archivos y directorios. Es una tareas primordial al momento de administrar servicios y recursos sobre el sistema operativo.

Inicialmente se debe conocer la estructura de cómo vienen desglosados los permisos, esto se puede visualizar cuando listamos el contenido de un directorio determinado con:

ls -l

En dicho directorio puede haber tanto archivos como subdirectorios, se verían listados:

-rwxr--r--+ 1 Félix Félix 0 Jun  2 09:13 archivo1
-rwxr--r--+ 1 Félix Félix 0 Jun  2 09:13 archivo2
-rwxr--r--+ 1 Félix Félix 0 Jun  2 09:13 archivo3
drwxr-xr-x+ 1 Félix Félix 0 Jun  2 09:13 directorio1
drwxr-xr-x+ 1 Félix Félix 0 Jun  2 09:13 directorio2

En sistemas Unix como Linux se considera que todo es un arhivo, existen otros tipos de archivos como enlaces simbólicos o dispositivos que tienen su respectiva letra o símbolo que los representa al inicio de cada línea como en el ejemplo anterior. Pero acá haré ejemplo de directorios y archivos:

  • Toda línea que empieza con guión indica que es un archivo
  • Toda línea que empieza con la letra d indica que es un directorio

Cada archivo y directorio viene amarrado a una serie de permisos desglosados en tres grupos: dueño, grupo y otros. Después del primer símbolo o caracter que indica el tipo de archivo, viene una serie de letras, las que se explican en el esquema básico:

Esquema básico

Símbolo Significado Valor
r Lectura 4
w Escritura 2
x Ejecución 1

Estas tareas de cambio de modos o permisos, se pueden realizar tanto en el ambiente gráfico como en el ambiente de comandos. Haré ejemplos en comandos y de dos formas, de la forma literal y la forma numérica, como para tener dos alternativas de uso.

Ejemplos en modo literal

Ver permisos de archivo1:

ls -l archivo1

-rwxr--r--+ 1 Félix Félix 0 Jun  2 09:13 archivo1

Agrego permisos de ejecución para el grupo en archivo1:

chmod g+x archivo1

Vuelvo a listar para ver sus permisos después del cambio:

ls -l archivo1

-rwxr-xr--+ 1 Félix Félix 0 Jun  2 09:13 archivo1

Agrego permisos de escritura para el grupo y otros en archivo1:

chmod g+w,o+w archivo1

Vuelvo a listar para ver sus permisos después del cambio:

ls -l archivo1

-rwxrwxrw-+ 1 Félix Félix 0 Jun  2 09:13 archivo1

Agrego permisos de ejecución para todos en archivo1:

chmod +x archivo1

Vuelvo a listar para ver sus permisos después del cambio:

ls -l archivo1

-rwxrwxrwx+ 1 Félix Félix 0 Jun  2 09:13 archivo1

Quitar permisos de ejecución para todos en archivo1:

chmod -x archivo1

Vuelvo a listar para ver sus permisos después del cambio:

ls -l archivo1

-rw-rw-rw-+ 1 Félix Félix 0 Jun  2 09:13 archivo1

Así se puede jugar un poco visualizando en cada cambio que se realiza sobre el archivo, así como se realiza en archivo1 se puede realizar con un directorio, con la diferencia en que los directorios pueden cambiarse modos o permisos de manera recursiva, utilizando como argumento adicional la -R, como ejemplo:

ls -ld directorio1

drwxr-xr-x+ 1 Félix Félix 0 Jun  2 09:13 directorio1

Cambio sus permisos de manera recursiva:

chmod g+w directorio1/ -R

Aquí se incide sobre el directorio y sobre su contenido de manera recursiva, es decir, todo el contenido del directorio cambiará su respectivo permiso de escritura tanto en archivos como en subdirectorios dentro de directorio1, y todos tendrán permiso de escritura para el grupo. Igualmente para quitar modo o permisos se hace como en el ejemplo de quitar permisos.

Ejemplos en modo numérico

Aquí debemos tomar en cuenta los valores del esquema básico, donde cada significado de la letra tendrá un valor específico, y para cada grupo de modo o permisos, se sumarían estos valores, es decir, si en archivo2 tenemos:

ls -l archivo2

-rwxr--r--+ 1 Félix Félix 0 Jun  2 09:13 archivo2

En valor numérico sería la suma de modos:

  • Para el dueño: rwx = 4+2+1 = 7
  • Para el grupo: r– = 4+0+0 = 4
  • Para el otros: r– = 4+0+0 = 4

El valor general sería: 744

Si queremos otorgar permisos de escritura a grupo y otros, desglosamos de la siguiente manera:

  • Para el dueño: rwx = 4+2+1 = 7
  • Para el grupo: rw- = 4+2+0 = 6
  • Para el otros: rw- = 4+2+0 = 6

El valor general sería: 766

Aplicaríamos la suma de los valores con el comando chmod, de la siguiente manera:

chmod 766 archivo2

Listamos y se vería:

ls -l archivo2

-rwxrw-rw-+ 1 Félix Félix 0 Jun  2 09:13 archivo2

Todas estas operaciones, también son efectivas sobre directorios con la particularidad de que con directorios pueden hacerse de manera recursiva como en el ejemplo literal.

Posted in Linux, Recomendación | Leave a comment

Redimensionar partición raíz

Una manera para redimensionar la partición raíz sin necesidad de reinstalar el sistema operativo, es usando la herramienta fdisk, inicialmente se crea una nueva estructura de los sectores de la partición en el disco duro, por ejemplo, si nuestra partición raíz está en /dev/sda1, como usuario root hacemos lo siguiente:

fdisk /dev/sda1

Dentro, hay un menú de ayuda, con la letra m, se debe eliminar ese registro de sectores asignados a la partición y crear nuevamente, la cantidad de sectores dependerá del tamaño o la porción de sectores que le queremos asignar a la partición. Si se desea asignar desde el sector inicial hasta el último, es decir, a toda la partición, se deja por defecto.

Igualmente, si la partición tiene declarado un punto de boot, luego de reasignar los sectores a la partición, se le activa el punto de boot, con la opción a.

Finalmente se escribe todo para que surta efecto en los cambios, posteriormente, se reinicia el sistema operativo y luego se aplica un resize a la partición:

resize2fs /dev/sda1
Posted in Linux | Leave a comment

Nmap en Cygwin

Si eres de los que usa la shell alternativa Cygwin sobre Windows y necesitas trabajar con Nmap, recomiendo instalar el Nmap para Windows que se publica en la página oficial.

Una vez que está instalada la herramienta, simplemente se usa a través de Cygwin. Si tienes abierta una shell de Cygwin durante la instalación de Nmap para Windows, es mejor que cierres la shell y luego la abres, así podrá cargar en el ambiente la ruta para el uso de Nmap.

Posted in Recomendación, Windows | Leave a comment

Add-in para búsquedas con expresiones regulares en Excel

Una de las cosas que nos facilitan el trabajo a la hora de realizar cambios masivos de una constante o una variable que se repite dentro de un archivo de texto, es la herramienta de buscar y reemplazar.

La mayoría de los editores de texto vienen por defecto con esa función ya integrada y es muy cómoda, sin embargo, trabajando sobre Excel se me hacía un poco engorroso usarla, incluso las fórmulas que realmente son muy sencillas para trabajos masivos y más puntuales.

Así que empecé a investigar si dentro de las opciones de Excel existía una configuración en donde me habilitara funciones de expresiones regulares en la búsqueda, pero no fue así. Sin embargo, continuando con la investigación, llegué a toparme con RegEx Find, un Add-in que integra un botón dentro de la barra de Inicio de Excel.

Estoy usando Excel 2010 y me funcionó muy bien usando expresiones regulares, acá dejo el enlace de descarga del Add-in.

Posted in Excel, Recomendación, Windows | Leave a comment

Cygwin sobre Windows

Una de las herramientas que se usan mucho en el mundo Linux es la shell de comandos, cuando uno lleva años usándola, se llega adoptar muchas tareas que son desde mi punto de vista, más efectivas y eficaces a la hora de administrar sistemas o tareas forenses o descomponer un programa o realizar labores de tratamiento de datos para alguna base de datos mediante archivos csv, entre otras actividades.

Cygwin, es una shell que facilita toda esa gama de herramientas y comodidades sobre la shell desde sistemas Windows u otro sistema no Linux. Particularmente, por estar haciendo labores sobre sistemas SAP que involucran la utilización de Windows y parte del ambiente Microsoft, he debido usar Cygwin.

El programa por defecto, no trae muchas de las herramientas que disponemos en una shell nativa de Linux, sin embargo ofrece una lista de repositorios y programas que pueden ser instalados durante o posteriormente a la instalación del programa. Esto de instalar programas posteriores lo descubrí mientras usaba la herramienta porque no tenía idea cuando comencé a usarla.

Entonces, si ya tienes instalado el Cygwin, es probable que por alguna razón llegues a necesitar uno de los programas disponibles en su repositorio, simplemente es ejecutar el archivo de instalación, la herramienta no se instalará, solo revisará qué está instalado y qué no.

cygwin_instalador

Luego listará los programas disponibles, cuando se ejecuta, se deja todo por defecto, luego, si no pasamos a través de un proxy en nuestra conexión a Internet, podemos seleccionar dicha opción.

Se deja por defecto el directorio raíz para Cygwin e igualmente el directorio desde donde se hará la actualización o instalación, luego dependiendo de la conexión a Internet, se toma conexión directa o a través de un proxy, tomo el repositorio que venga por defecto si está bien la conexión. Se elige el programa que se desea agregar o actualizar desde el siguiente árbol.

cygwin_tree

Una vez que se tiene instalado el Cygwin, por defecto crea una ruta Home para el usuario, pero dicha ruta no se corresponde al Home real del usuario en Windows, algo por ejemplo:

cygwin1

Pero al igual que en Linux, podemos editar nuestro path o ruta real de nuestro Home para que cada vez que abramos Cygwin, automáticamente entre en el path absoluto de nuestro Home en Windows, editamos el archivo .bashrc:

vi ~/.bashrc

Y podemos agregar al final del archivo algo parecido a lo siguiente:

cygwin2

Incluso, había instalado vim y le agregué un alias de vi a vim tal como está en la imagen anterior. Luego es pensar en lo que se quiere y qué se necesita usar e instalar las herramientas apropiadas.

Desde Cygwin, he logrado usar scripts hechos con python y bash, los he usado sin ningún inconveniente.

Posted in Recomendación, Windows | 1 Comment

Manipular permisos o autorizaciones de usuarios en SAP Business One

Antes que nada, evita cambiar permisos o autorizaciones del usuario manager o cualquier otro usuario que tenga privilegios de administración del sistema.

Previamente, antes de cargar o modificar permisos en la tabla de SAP, debemos crear un archivo parecido al siguiente:

ejemplo_Excel

Este archivo, depende de los IDs de permisos o autorizaciones que vienen ya configurados desde la instalación de SAP.

Finalmente, debemos tener la siguiente Macro de Excel, que hará la lectura del archivo Excel, conexión a la base de datos SAP y escritura:

Sub importar_permisos()
'
' importar_permisos Macro
'
    Dim SboGuiApi As New SAPbouiCOM.SboGuiApi
    Dim SBO_App As SAPbouiCOM.Application
    Dim oCompany As New SAPbobsCOM.Company
    SboGuiApi.Connect ("0030002C0030002C00530041005000420044005F00440061007400650076002C0050004C006F006D0056004900490056")
    Set SBO_App = SboGuiApi.GetApplication()
    Set oCompany = SBO_App.Company.GetDICompany()
    Dim oRsSUers As SAPbobsCOM.Recordset
    Dim oSBObob As SAPbobsCOM.SBObob
    Set oSBObob = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoBridge)
    Set oRsSUers = oSBObob.GetUserList()
    col = 5

    Do While ActiveSheet.Cells(1, col) <> ""
        UserName = ActiveSheet.Cells(1, col)
        Row = 3
        'Do While ActiveSheet.Cells(row, 1) <> "" Or ActiveSheet.Cells(row, 1) <> "UP_MAIN_HEADER"
        Do While ActiveSheet.Cells(Row, 1) <> "" '"UP_MAIN_HEADER"
            ' Where has no son, There can Authoritaion rewrited
            If ActiveSheet.Cells(Row, col) <> "" And ActiveSheet.Cells(Row, 4) = 0 Then
                Select Case ActiveSheet.Cells(Row, col)
                    Case "Autorización total"
                        lPermission = 1
                    Case "Sólo lectura"
                        lPermission = 2
                    Case "Falta autorización"
                        lPermission = 3
                    Case "Varias autorizaciones"
                        lPermission = 4
                    Case "No definido"
                        lPermission = 6
                    Case Else
                        lPermission = -1
                End Select

                If lPermission <> -1 Then
                    Call oSBObob.SetSystemPermission(UserName, ActiveSheet.Cells(Row, 1), lPermission)
                    If oCompany.GetLastErrorCode <> 0 Then
                        ActiveSheet.Cells(Row, col).Color = "123456"
                    End If
                End If
            End If
            Row = Row + 1
        Loop
        col = col + 1
        oRsSUers.MoveNext
    Loop
    oCompany.Disconnect
    
End Sub

Una web que tomé como referencia fue ésta, pero realmente tiene unas líneas con errores, así que decidí hacer mi propia Macro, pero no estuvo de más la referencia.

Otro sitio interesante de ayuda es éste.

Por otro lado, bien recibida la ayuda del los amigos en el foro iberoamericano Ayuda SAP.

Posted in Excel, SAP, Windows | 4 Comments

Extraer IDs de permisos o autorizaciones de tabla en SAP Business One

Trabajando con SAP Business One e intentando facilitar un poco las tareas administrativas, he ido probando cuanta herramienta útil me ha funcionado en ambientes Software Libre, y vaya que me ha ido muy bien. Sin embargo, existen otras herramientas que también pueden hacer las labores de manera rápida.

La siguiente Macro, corresponde a una extracción de IDs de la tabla de permisos o autorizaciones de SAP Business One:

Sub conexion_ui()
'
' conexion_ui Macro
    Application.Goto Reference:="conexion_ui"
    Dim SboGuiApi As New SAPbouiCOM.SboGuiApi
    Dim SBO_App As SAPbouiCOM.Application
    Dim oCompany As New SAPbobsCOM.Company
    SboGuiApi.Connect ("0030002C0030002C00530041005000420044005F00440061007400650076002C0050004C006F006D0056004900490056")
    Set SBO_App = SboGuiApi.GetApplication()
    Set oCompany = SBO_App.Company.GetDICompany()
    SBO_App.ActivateMenuItem ("3332")
    Dim oForm As SAPbouiCOM.Form
    Set oForm = SBO_App.Forms.ActiveForm

    ' Cabeceras en Excel
    ActiveSheet.Cells(1, 1) = "ID"
    ActiveSheet.Cells(1, 2) = "Nombre"
    ActiveSheet.Cells(1, 3) = "Nivel"
    ActiveSheet.Cells(1, 4) = "Número de hijos"    

    oForm.Items.Item("13").Click (ct_Regular)
    Dim oMatrix As SAPbouiCOM.Matrix
    Set oMatrix = oForm.Items.Item("6").Specific
    Row = 1
    For i = 1 To oMatrix.VisualRowCount
        Dim oEditPermCode As SAPbouiCOM.EditText
        Dim oEditPermName As SAPbouiCOM.EditText
        Dim oEditPermLevel As SAPbouiCOM.EditText
        Dim oEditPermNumOfSons As SAPbouiCOM.EditText
        Set oEditPermCode = oMatrix.Columns.Item("0").Cells.Item(i).Specific
        Set oEditPermName = oMatrix.Columns.Item("1").Cells.Item(i).Specific
        Set oEditPermLevel = oMatrix.Columns.Item("7").Cells.Item(i).Specific
        Set oEditPermNumOfSons = oMatrix.Columns.Item("6").Cells.Item(i).Specific
        ActiveSheet.Cells(Row, 1) = oEditPermCode.String
        ActiveSheet.Cells(Row, 2) = oEditPermName.String
        ActiveSheet.Cells(Row, 3) = oEditPermLevel.String
        ActiveSheet.Cells(Row, 4) = oEditPermNumOfSons.String
        If oEditPermCode.String = "UP_MAIN_HEADER" Then Exit For
        Row = Row + 1
    Next
End Sub

Para que la conexión de la Macro sea efectiva, debemos tener abierta una sesión en la base de datos de SAP que deseamos alterar o modificar, una vez abierta, la línea:

SboGuiApi.Connect ("0030002C0030002C00530041005000420044005F00440061007400650076002C0050004C006F006D0056004900490056")

Es la que nos hará la conexión hacia dicha base de datos, este número de muchos dígitos, está dentro de las rutas de ejemplo del propio SAP, específicamente en:

C:\Program Files (x86)\SAP\SAP Business One SDK\Samples\UDO\BlanketAgreement\GUI

También debemos considerar el objeto de dónde se tomarán los datos, la siguiente línea, representa dicho objeto:

SBO_App.ActivateMenuItem ("3332")

Para que funcionen las clases de SAP dentro de nuestra Macro, debemos decirle al ambiente de VBA de Excel, en: Herramientas -> Referencias, que se lean las clases necesarias, en mi caso debió quedar de la siguiente manera:

librearia_sap

Una vez cargada la Macro y se ejecuta, el archivo Excel debería quedar algo parecido a lo siguiente:

permisos_sap

Posted in Excel, SAP, Windows | 2 Comments