Mostrando las entradas con la etiqueta unix. Mostrar todas las entradas

¿Así que hackers vendedores de gorditas?

Sonaré muy fuera de época o algo así. Pero hace unos 10 o 15 años cuando comencé a experimentar las cosas de Linux, consideraba hackers a personas de la altura de Richard Stallman, Eric Raymond no sin mencionar a Dennis Ritchie o al que identifiqué como alguien que me daría la pauta posible de que en México se pueden lograr cosas grandes: Miguel de Icaza.

Personas que construían lenguajes de programación, compiladores antes de una carrera universitaria, sistemas operativos. Obviamente había muchas áreas todavía sin explorar, así que se podían crear muchas cosas en esa época con relativa facilidad. Incluso +Jonathan Hernandez cuando apareció en slashdot contó como un hack de relevancia. Permitía almacenar los posts de jaws en gmail. Nota original acá: http://beta.slashdot.org/story/49421

Una captura de pantalla en aquel 2004
Quince años después, en el año 2015, me hace un poco de corto circuito que la chaviza se autoproclame "hacker" cuando hacen una aplicación de chat, o una página social, o cualquier cosa social. Si yo fuera un vendedor de gorditas en un puesto, ser "hacker" de gorditas equivaldría a vender gorditas en platos de aluminio, en platos recortados en forma de triángulo, gorditas con formas nunca antes vistas. Pero a fin de cuenta gorditas.

El viejo y aún válido hacker howto, por si nunca tuvieron oportunidad de leerlo.

Usar el último argumento de tu último comando y otras combinaciones

Estaba haciendo algunas talachas en la shell y me encontré con la necesidad de usar el último argumento de mi último comando ejecutado de manera frecuente. Así que un clavadín a las redes sociales y la respuesta la podrán encontrar por acá en developerworks.

Using the last argument from your last command and some other combinations

Por fin pude quitarme esa pulga del tr*sero

En pleno 2013 y aunque parezca increíble, les juro que hay aún sistemas de control de versiones CVS corriendo en el día a día. Y un issue que tenía desde hace algunas semanas, pude resolverlo.

cvs [commit aborted]: out of memory; can not reallocate 52962371 bytes

Restaurar un servidor AIX con código 555 desde NIM y HMC

Bueno, dado que esta información me podrá ser de ayuda en un futuro. La dejaré para la posteridad y uso futuro. Si a alguien más le sirve, adelante, sirvase con confianza.

El problema: Led code 555 en un equipo AIX, o sea, muerto, no arranca

La solución: Entrar en modo mantenimiento, fsck'ear los filesystems y reiniciar

Lo que no les contaron: El equipo está virtualizado y se encuentra en otro lugar del mundo

Con un poco de acceso mediante HMC y un NIM server hay que hacer lo siguiente:

Desde el NIM server:

foo1:foonim:/root# lsnim -l fooserver
fooserver:
   class          = machines
   type           = standalone
   comments       = 2CPU 8GB
   connect        = nimsh
   platform       = chrp
   netboot_kernel = 64
   if1            = foo1_126-254 fooserver.bar.com 0
   cable_type1    = bnc
   mgmt_profile1  = foo-hmc-1 9 Server-9117-570-123ABCDEF
   Cstate         = in the process of booting
   prev_state     = not running
   Mstate         = currently running
   boot           = boot
   spot           = 531105spot
   cpuid          = 12345ABCDEF1
   control        = master


Lo que sigue es actualizar la MAC address en la posición que marqué en amarillo y letra roja:


foo1:foonim:/root# getmacs fooserver
Using an adapter type of "ent".
Attempting to use dsh method to collect MAC addresses.

# Node::adapter_type::interface_name::MAC_address::location::media_speed::adapter_duplex::UNUSED::install_gateway::ping_status::machine_type::netaddr::subnet_mask

fooserver::ent_v::en1::ABCDEF123456::::::::::111.222.333.444::::secondary::111.222.333.444::255.255.254.0


Finalmente hay que actualizar el nim server con la información para bootear al cliente nim desde el nim server

nim -o change -a if1="foo1_126-254 fooserver.bar.com ABCDEF123456" fooserver

El resto se los continuaré en otro post por que ya me dió hueva seguirle... xD

El extraño caso del crontab no permitido

Sucede que un usuario fulano no podía editar el crontab a pesar de tener los debidos permisos de grupo y las debidas configuraciones en cron.allow y cron.deny.

La cosa es que para debuggear este problema al ejecutar un crontab desde usuario se puede echar mano de la herramienta truss para ver que archivos se abren, leen, etc. Algo así:

# truss crontab -l 2> /tmp/foo
# grep "(\"/" /tmp/foo | grep open

kopen("/unix", O_RDONLY|O_LARGEFILE)            = 3
kopen("/usr/lib/security/methods.cfg", O_RDONLY) = 3
kopen("/etc/passwd", O_RDONLY)                  = 3
kopen("/etc/security/passwd", O_RDONLY)         = 4
kopen("/etc/security/login.cfg.idx", O_RDONLY)  = -1
kopen("/etc/security/login.cfg", O_RDONLY)      = 5
kopen("/etc/security/login.cfg", O_RDONLY)      = 5
kopen("/etc/security/login.cfg", O_RDONLY)      = 5
kopen("/etc/passwd.id.idx", O_RDONLY)           = -1
kopen("/etc/passwd", O_RDONLY)                  = 5
kopen("/etc/passwd", O_RDONLY)                  = 5
kopen("/etc/security/user.idx", O_RDONLY)       = -1
kopen("/etc/security/user", O_RDONLY)           = 3
kopen("/etc/security/user", O_RDONLY)           = 3
kopen("/etc/security/user", O_RDONLY)           = 3
kopen("/var/adm/cron/cron.deny", O_RDONLY)      = 3
kopen("/var/spool/cron/crontabs", O_RDONLY)     = 3


¡Queobo! De ahí sacan mas pistas del problema. A la Sherlock Holmes.

¿Qué es el Unix Time?

En cosas obvias de sistemas, el día de hoy presentamos:

¿Qué es UNIX Time o Tiempo UNIX?

"se define como la cantidad de segundos transcurridos desde la medianoche UTC1 de enero de 1970"

También se le puede encontrar como "epoch" 

Obsérvese la segunda columna TIMESTAMP, el cual es UNIX Time

Si se sienten muy "geeks" orale, pues en vez de traer un reloj binario o de manecillas, usen un reloj con UNIX Time en sus muñecas. Si por el contrario necesitan ayuda de alguna herramienta, aquí tienen una para hacer conversiones a tiempo gregoriano.

Filesets rejegos y soluciones frescas

Al intentar instalar AIX 6.1 TL7 un fileset empezó a dar problemas, por lo cual todo el TL no se podía aplicar.

El fileset en cuestión era ICU4C.rte.

Los logs de smit mostraban lo siguiente:

ar: 0707-108 File ./usr/lib/libicui18n.a.new is not an archive file.
inurest: Failure on system call to execute command OBJECT_MODE=32_64 /usr/ccs/bin/ar -or ./usr/lib/libicui18n.a.new ./usr/lib/inst_updt/libicui18n.a/shr.o ./usr/lib/inst_updt/li
bicui18n.a/shr_64.o.

Una búsqueda de google no arrojó absolutamente nada, cero, nain.
Pregunté en linkedin en el grupo IBM - AIX. Me recomendaban abrir un ticket con IBM para el problema.
Hoy ya con la mente mas fresca se me ocurrió de esas soluciones simples que quizá pudieran funcionar:

eliminar el fileset y reinstalarlo.

Installation Summary
--------------------
Name                        Level           Part        Event       Result
-------------------------------------------------------------------------------
ICU4C.rte                   6.1.4.0         USR         APPLY       SUCCESS
ICU4C.rte                   6.1.7.0         USR         APPLY       SUCCESS

EUREKA!

installp: An error occurred during bosboot verification processing.

¿Problemas al hacer la instalación de un TL de AIX?

Vía smit si obtienen el mensaje:
installp:  An error occurred during bosboot verification processing.

Pueden dar click a esta página para ver la explicación detallada o ejecutar lo siguiente:

bootlist -om normal
hdiskNN


ln -f /dev/rhdiskNN /dev/ipldevice

sshd[11366] Authentication refused

sshd[11366]: Authentication refused: bad ownership or modes for directory 

Si la autenticación por llave anda fallando, pues hay que revisar en los logs del servidor remoto
De paso también hacer un ssh -vvv hostRemoto para ver que tanto sale

Finalmente el problema con esto era lo siguiente:


chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Cambiar ulimit

Cambiar los ulimits (limites de uso de recursos) sobre AIX.

Editar /etc/security/limits y usar los parámetros que contiene el archivo. Vienen muy explícitos los valores al inicio:

* Sizes are in multiples of 512 byte blocks, CPU time is in seconds
*
* fsize      - soft file size in blocks
* core       - soft core file size in blocks
* cpu        - soft per process CPU time limit in seconds
* data       - soft data segment size in blocks
* stack      - soft stack segment size in blocks
* rss        - soft real memory usage in blocks
* nofiles    - soft file descriptor limit
* fsize_hard - hard file size in blocks
* core_hard  - hard core file size in blocks
* cpu_hard   - hard per process CPU time limit in seconds
* data_hard  - hard data segment size in blocks
* stack_hard - hard stack segment size in blocks
* rss_hard   - hard real memory usage in blocks
* nofiles_hard - hard file descriptor limit


Hay otros modos según se.

Incrementar paging space en AIX

De esas tareas talacheras; incrementar el tamaño del paging space (es el equivalente a la swap de otros sistemas *nix) en AIX.

La tarea es relativamente sencilla, el detalle es que generalmente esto se pide o se hace en base a tamaños y las definiciones de los paging spaces están dadas en Logical Partitions. Por ejemplo: Me puedes aumentar el paging space de 1GB a 4GB?

El paso 1: Verificar el nombre actual del paging space:
# lsps -a
Page Space      Physical Volume   Volume Group    Size %Used Active  Auto  Type
paging00        hdisk10           rootvg        1024MB     1   yes   yes    lv
hd6             hdisk10           rootvg         256MB     4   yes   yes    lv
hd6             hdisk12           rootvg         256MB     4   yes   yes    lv
hd6             hdisk16           rootvg        3072MB     4   yes   yes    lv


Paso 2: determinar el tamaño de la partición física (PP) y el tamaño total del paging space
# lslv paging00
LOGICAL VOLUME:     paging00               VOLUME GROUP:   rootvg
LV IDENTIFIER:      00c5e69d00004c0000000124cef67ef3.11 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       opened/syncd
TYPE:               paging                 WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        64 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                16                     PPs:            64
STALE PPs:          0                      BB POLICY:      non-relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       center                 UPPER BOUND:    32
MOUNT POINT:        N/A                    LABEL:          None
MIRROR WRITE CONSISTENCY: off
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO

Tamaño del paging space: 16(LPs) x 64(PP Size) = 1024MB. Aunque esto también se puede determinar en el paso número 1.

Paso 3: Determinar cuantas particiones lógicas (LPs) extra necesitamos para alcanzar los 4GB. Algebra simple.
3 x 1024(MB) =  3072MB
3072(MB)/64(MB) = 48(LPs)

Paso 4: Incrementar el tamaño del paging00
# chps -s 48 paging00

Paso 5: Verificar el tamaño final de paging00
# lsps -a
Page Space      Physical Volume   Volume Group    Size %Used Active  Auto  Type
paging00        hdisk10           rootvg        1024MB     1   yes   yes    lv
paging00        hdisk11           rootvg        1024MB     1   yes   yes    lv
paging00        hdisk12           rootvg         128MB     1   yes   yes    lv
paging00        hdisk9            rootvg        1920MB     1   yes   yes    lv
(1024 + 1024 + 128 + 1920) = 4096 = 4GB

o

# lslv paging00
LOGICAL VOLUME:     paging00               VOLUME GROUP:   rootvg
LV IDENTIFIER:      00c5e69d00004c0000000124cef67ef3.11 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       opened/syncd
TYPE:               paging                 WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        64 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                64                     PPs:            64
STALE PPs:          0                      BB POLICY:      non-relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       center                 UPPER BOUND:    32
MOUNT POINT:        N/A                    LABEL:          None
MIRROR WRITE CONSISTENCY: off
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO


64(LPs) X 64(PP Size) = 4096MBs = 4GB


Fin. El sysadmin talachero es feliz.

Fuentes:
Increasing AIX paging space
Logical Volume Manager (LVM) Commands for AIX