¿Cómo funciona el comando useradd en Linux?

DYI: Crear usuario de Linux a mano

Sabes cómo crear una cuenta de usuario de Linux con useradd y passwd. Pero, ¿sabes cómo crearla sin usarla? No, no puede usar adduser, que no es más que un enlace simbólico para ‘ useradd

¿Por qué necesitamos esto? ¡Creemos que Linux System-Admin debería poseer un conocimiento profundo de las cosas, en lugar de solo depender de unos pocos binarios! Entonces, si quieres saber qué sucede detrás de escena. Aquí vamos: Nuestra tarea es crear un usuario llamado giis y configurar la contraseña.

Vamos a actualizar primero el /etc/passwd con la siguiente entrada

echo “giis: x: 25000: 25000: Giis: / home / giis: / bin / bash” >> / etc / passwd

Como puede ver, hay 7 campos separados por: donde cada campo se refiere a

Campo 1: giis – Nombre de inicio de sesión
Campo2: x: marcador de posición de contraseña
Campo3: 25000 – ID de usuario único
Campo 4: 25000 – ID de grupo
Campo 5: giis – Nombre real
Field6: / home / giis – Directorio de inicio
Field7: / bin / bash – Tipo de shell

El resumen de esta entrada sería: después de verificar la contraseña del usuario giis en el archivo / etc / shadow , permita que el usuario giis inicie sesión y colóquelo en / home / giis con bash como tipo de shell. Para un inicio de sesión válido, estos campos deben ser sanos. La entrada anterior se encarga de los campos 1, 3, 5 y 7. Necesitamos restaurar la cordura para los campos 2, 4 y 6.

Podemos configurar Field-4 (group-id) creando group-id en /etc/group file como

echo “giis: x: 25000” >> / etc / group

Arriba coloca una entrada en el archivo de grupo que asigna, nombre de grupo giis con Id. De grupo (también conocido como gid) 25000 Ahora necesitamos aportar algo de cordura al campo 6 (directorio de inicio) ejecutando un comando:

mkdir / inicio / giis

que crea el directorio de inicio y establecemos su permiso adecuadamente con chown

Chis giis: giis / inicio / giis

Como puede ver a continuación, el nuevo directorio de inicio creado tiene rwx para giis propios y no se puede escribir para agrupar / otros.

# ls -ld / home / giis
drwxr-xr-x. 2 giis giis 4096 25 de septiembre 22:38 / inicio / giis

Finalmente nos ocupamos del campo 2. Es poco complejo que otros. Para cualquier contraseña de usuario válida, debe almacenarse en formato cifrado. Usemos la siguiente declaración de Python para crear una contraseña secret897 y encriptada con el algoritmo sha256 usando salt $6$salt1234 El resultado final será una cadena encriptada de secret897 con slat, que se almacenará en / etc / shadow file. Almacenamos la contraseña encriptada en la variable de shell temporal llamada pass

pass = `python -c ‘import crypt; print crypt.crypt (\ “secret897 \”, \ “$ 6 $ salt1234 \”) ”

cambiar el permiso del archivo de sombra como escribible por root

chmod 600 / etc / shadow

y solo agregue la contraseña encriptada junto con el nombre de usuario giis en el archivo sombra

echo “giis: $ {pass} :::::::” >> / etc / shadow

luego revierta el permiso

chmod 000 / etc / shadow

Ahora es el momento de iniciar sesión en la nueva cuenta giis con password secret897 . Pase al indicador de login escriba su nombre de usuario y contraseña, luego debería ubicarlo debajo de / home / giis con bash prompt como

bash-4.2$

Ahora verifique su identidad de inicio de sesión usando

whoami

y directorio de inicio usando

pwd
Todo bien! ¿derecho?

Fuente: DYI: Crear usuario de Linux a mano

Cuando useradd se ejecuta en una máquina Linux, lee ciertos archivos de configuración, como skel, nsswitch, useradd default y luego vuelve a escribir en el archivo passwd y crea el directorio de inicio y la bandeja de entrada del correo. Vea el bloque de código a continuación para ver el strace. Entenderás cómo va.

[ [correo electrónico protegido] ~] # userdel -r test
[ [correo electrónico protegido] ~] # strace -o /tmp/useradd.strace useradd test
[ [correo electrónico protegido] ~] # wc -l /tmp/useradd.strace
1061 /tmp/useradd.strace
[ [correo electrónico protegido] ~] # egrep “abrir \ (| cerrar \ (| leer \ (| escribir \ (” /tmp/useradd.strace
abierto (“/ etc / ld.so.cache”, O_RDONLY) = 3
cerca (3) = 0
abierto (“/ lib64 / libaudit.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ [correo electrónico protegido] ) `&? \ 0 \ 0 \ 0″ …, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libselinux.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0PY \ 340%? \ 0 \ 0 \ 0 “…, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libsemanage.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0 \ 200 \ 261 \ 240%? \ 0 \ 0 \ 0 “…, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libacl.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0 \ 200 \ 36 ,? \ 0 \ 0 \ 0 “…, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libattr.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0 \ 200 \ 23 \ 340 (? \ 0 \ 0 \ 0 “…, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libc.so.6”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 3 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0000 \ 356a $? \ 0 \ 0 \ 0 “…, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libdl.so.2”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0 \ 340 \ r \ 340 $? \ 0 \ 0 \ 0 “…, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libsepol.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0 \ 200> & ? \ 0 \ 0 \ 0 “…, 832) = 832
cerca (3) = 0
abierto (“/ lib64 / libbz2.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0000 \ 26` * ? \ 0 \ 0 \ 0 “…, 832) = 832
cerrar (3) = 0
abierto (“/ usr / lib64 / libustr-1.0.so.1”, O_RDONLY) = 3
leer (3, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0 \ 360 \ 222 `%? \ 0 \ 0 \ 0” …, 832) = 832
cerca (3) = 0
abierto (“/ usr / lib / locale / locale-archive”, O_RDONLY) = 3
cerrar (3) = 0
abierto (“/ proc / sys / kernel / ngroups_max”, O_RDONLY) = 4
leer (4, “65536 \ n”, 31) = 6
cerrar (4) = 0
abierto (“/ etc / default / useradd”, O_RDONLY) = 4
leer (4, “# useradd archivo predeterminado \ nGROUP = 10” …, 4096) = 119
cerrar (5) = 0
cerrar (5) = 0
abierto (“/ etc / nsswitch.conf”, O_RDONLY | O_CLOEXEC) = 5
leer (5, “# \ n # /etc/nsswitch.conf\n#\n# An ex” …, 4096) = 1688
leer (5, “”, 4096) = 0
cerrar (5) = 0
abierto (“/ etc / ld.so.cache”, O_RDONLY) = 5
cerrar (5) = 0
abierto (“/ lib64 / libnss_files.so.2”, O_RDONLY) = 5
leer (5, “\ 177ELF \ 2 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0> \ 0 \ 1 \ 0 \ 0 \ 0 \ 360! \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 “…, 832) = 832
cerrar (5) = 0
abierto (“/ etc / group”, O_RDONLY | O_CLOEXEC) = 5
leer (5, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 4096) = 783
cerrar (5) = 0
leer (4, “”, 4096) = 0
cerrar (4) = 0
abierto (“/ etc / login.defs”, O_RDONLY) = 4
leer (4, “# \ n # Tenga en cuenta que el parámetro” …, 4096) = 1847
leer (4, “”, 4096) = 0
cerrar (4) = 0
cerrar (4) = 0
cerrar (4) = 0
abierto (“/ etc / passwd”, O_RDONLY | O_CLOEXEC) = 4
leer (4, “raíz: x: 0: 0: raíz: / raíz: / bin / bash \ n” …, 4096) = 1703
leer (4, “”, 4096) = 0
cerrar (4) = 0
abierto (“/ etc / group”, O_RDONLY | O_CLOEXEC) = 4
leer (4, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 4096) = 783
leer (4, “”, 4096) = 0
cerrar (4) = 0
abierto (“/ etc / .pwd.lock”, O_WRONLY | O_CREAT | O_CLOEXEC, 0600) = 4
abierto (“/ etc / passwd.22643”, O_WRONLY | O_CREAT | O_EXCL, 0600) = 5
escribir (5, “22643 \ 0”, 6) = 6
cerrar (5) = 0
abierto (“/ etc / passwd”, O_RDWR | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW) = 5
leer (5, “raíz: x: 0: 0: raíz: / raíz: / bin / bash \ n” …, 4096) = 1703
leer (5, “”, 4096) = 0
abierto (“/ etc / group.22643”, O_WRONLY | O_CREAT | O_EXCL, 0600) = 6
escribir (6, “22643 \ 0”, 6) = 6
cerca (6) = 0
abierto (“/ etc / group”, O_RDWR | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW) = 6
leer (6, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 4096) = 783
leer (6, “”, 4096) = 0
abierto (“/ etc / gshadow.22643”, O_WRONLY | O_CREAT | O_EXCL, 0600) = 7
escribir (7, “22643 \ 0”, 6) = 6
cerca (7) = 0
abierto (“/ etc / gshadow”, O_RDWR | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW) = 7
read (7, “root ::: \ nbin ::: bin, daemon \ ndaemon:” …, 4096) = 640
leer (7, “”, 4096) = 0
abierto (“/ etc / passwd”, O_RDONLY | O_CLOEXEC) = 8
leer (8, “raíz: x: 0: 0: raíz: / raíz: / bin / bash \ n” …, 4096) = 1703
leer (8, “”, 4096) = 0
cerrar (8) = 0
abierto (“/ etc / shadow.22643”, O_WRONLY | O_CREAT | O_EXCL, 0600) = 8
escribir (8, “22643 \ 0”, 6) = 6
cerrar (8) = 0
abierto (“/ etc / shadow”, O_RDWR | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW) = 8
leer (8, “raíz: $ 6 $ Wwcp4FMsT1HljwyM $ rPBwiR9” …, 4096) = 1510
leer (8, “”, 4096) = 0
abierto (“/ etc / group”, O_RDONLY | O_CLOEXEC) = 9
leer (9, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 4096) = 783
leer (9, “”, 4096) = 0
cerca (9) = 0
abierto (“/ etc / localtime”, O_RDONLY) = 9
leer (9, “TZif2 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 4 \ 0 \ 0 \ 0 \ 4 \ 0 \ 0 \ 0 \ 0 “…, 4096) = 267
leer (9, “TZif2 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 5 \ 0 \ 0 \ 0 \ 5 \ 0 \ 0 \ 0 \ 0 “…, 4096) = 157
cerca (9) = 0
abierto (“/ etc / passwd”, O_RDONLY | O_CLOEXEC) = 10
leer (10, “raíz: x: 0: 0: raíz: / raíz: / bin / bash \ n” …, 4096) = 1703
leer (10, “”, 4096) = 0
cerca (10) = 0
abierto (“/ var / log / lastlog”, O_RDWR) = 10
escribir (10, “\ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 “…, 292) = 292
cerca (10) = 0
abierto (“/ proc / self / task / 22643 / attr / current”, O_RDONLY) = 10
leer (10, “unconfined_u: unconfined_r: unconf” …, 4095) = 54
cerca (10) = 0
abierto (“/ etc / selinux / config”, O_RDONLY) = 10
read (10, “\ n # Este archivo controla el estado” …, 4096) = 457
leer (10, “”, 4096) = 0
cerca (10) = 0
abierto (“/ etc / selinux / targeted / contexts / files / file_contexts.subs”, O_RDONLY) = -1 ENOENT (No existe tal archivo o directorio)
abierto (“/ etc / selinux / targeted / contexts / files / file_contexts”, O_RDONLY) = 10
abierto (“/ etc / selinux / targeted / contexts / files / file_contexts.homedirs”, O_RDONLY) = 11
abierto (“/ etc / selinux / targeted / contexts / files / file_contexts.local”, O_RDONLY) = -1 ENOENT (No existe tal archivo o directorio)
leer (10, “/.*\tsystem_u:object_r:default_t:”…, 4096) = 4096
leer (10, “ib_t: s0 \ n / usr /(.*/)? lib (64)? (/.*)”…, 4096) = 4096
leer (10, “t_r: removable_device_t: s0 \ n / dev / p” …, 4096) = 4096
leer (10, “_r: ipsec_exec_t: s0 \ n / usr / lib (64)?” …, 4096) = 4096
leer (10, “lib (64)? / gnupg / gpgkeys. * \ t– \ tsyst” …, 4096) = 4096
leer (10, “64)? / libx264 \\. so (\\. [^ /] *) * \ t– \ tsy” …, 4096) = 4096
leer (10, “ib_t: s0 \ n / usr / lib (64)? / chromium-b” …, 4096) = 4096
leer (10, “stublibs / dllnums \\. so \ t– \ tsystem_u” …, 4096) = 4096
read (10, “lib (64)? / nagios / plugins / check_ov” …, 4096) = 4096
leer (10, “t_r: bin_t: s0 \ n / usr / lib (64)? / [^ /] *” …, 4096) = 4096
leer (10, “f (/.*)? \ tsystem_u: object_r: soundd” …, 4096) = 4096
leer (10, “tc / nginx (/.*)? \ tsystem_u: object_r” …, 4096) = 4096
leer (10, “u: object_r: var_log_t: s0 \ n / etc / dbu” …, 4096) = 4096
leer (10, “_u: object_r: initrc_exec_t: s0 \ n / sb” …, 4096) = 4096
leer (10, “_t: s0 \ n / var / run / ppp (/.*)? \ tsystem_” …, 4096) = 4096
leer (10, “: xdm_var_lib_t: s0 \ n / var / log / mail (“…, 4096) = 4096
leer (10, “t_r: rhsmcertd_log_t: s0 \ n / var / run /” …, 4096) = 4096
leer (10, “\ tsystem_u: object_r: rpcd_exec_t: s” …, 4096) = 4096
leer (10, “)? \ tsystem_u: object_r: ctdbd_var_l” …, 4096) = 4096
leer (10, “/mysql(-files|-keyring)?(/.*)?\ts”…, 4096) = 4096
leer (10, “ar / log / z-push (/.*)? \ tsystem_u: obj” …, 4096) = 4096
leer (10, “/lib/zabbix(/.*)?\tsystem_u:objec”…, 4096) = 4096
leer (10, “/var/run/tomcat6?\\.pid\t–\tsystem”…, 4096) = 4096
leer (10, “r: qmail_spool_t: s0 \ n / var / lib / quan” …, 4096) = 4096
leer (10, “g. * \ t– \ tsystem_u: object_r: Red” …, 4096) = 4096
leer (10, “ib_t: s0 \ n / var / run / matahari (/.*)? \ t” …, 4096) = 4096
leer (10, “_r: dhcpd_exec_t: s0 \ n / usr / sbin / eth” …, 4096) = 4096
leer (10, “cluster_var_run_t: s0 \ n / etc / syscon” …, 4096) = 4096
leer (10, “he / cracklib (/.*)? \ tsystem_u: objec” …, 4096) = 4096
leer (10, “java_exec_t: s0 \ n / usr / lib / ruby ​​/ gem” …, 4096) = 4096
leer (10, “: s0 \ n / usr / NX / home / nx / \\. ssh (/.*)? \ t” …, 4096) = 4096
leer (10, “: object_r: rpm_var_lib_t: s0 \ n / usr /” …, 4096) = 4096
leer (10, “system_u: object_r: httpd_log_t: s0” …, 4096) = 4096
leer (10, “t_r: abrt_retrace_spool_t: s0 \ n / var” …, 4096) = 4096
leer (10, “: object_r: bin_t: s0 \ n / var / lib / glus” …, 4096) = 4096
leer (10, “. * \ t– \ tsystem_u: object_r: qdiskd_v” …, 4096) = 4096
leer (10, “\ tsystem_u: object_r: var_auth_t: s0” …, 4096) = 4096
leer (10, “t: s0 \ n / usr / share / system-config-ne” …, 4096) = 4096
leer (10, “ploads (/.*)? \ tsystem_u: object_r: h” …, 4096) = 4096
leer (10, “g \ tc \ tsystem_u: object_r: kmsg_devi” …, 4096) = 4096
leer (10, “-c \ tsystem_u: object_r: fixed_disk_” …, 4096) = 4096
leer (10, “_t: s0 \ n / usr / bin / slim \ t– \ tsystem_u:” …, 4096) = 4096
leer (10, “sbin / lpd \ t– \ tsystem_u: object_r: lp” …, 4096) = 4096
leer (10, “- \ tsystem_u: object_r: fsadm_exec_” …, 4096) = 4096
leer (10, “0 \ n / sbin / mcstransd \ t– \ tsystem_u: ob” …, 4096) = 4096
leer (10, “\ tsystem_u: object_r: games_exec_t:” …, 4096) = 4096
leer (10, “ejecutar / atd \\. pid \ t– \ tsystem_u: object_” …, 4096) = 4096
leer (10, “system_u: object_r: wine_exec_t: s0” …, 4096) = 4096
leer (10, “- \ tsystem_u: object_r: fail2ban_exe” …, 4096) = 4096
leer (10, “ar / run / lircd \\. pid \ tsystem_u: objec” …, 4096) = 4096
leer (10, “iconfig \ t– \ tsystem_u: object_r: exe” …, 4096) = 4096
leer (10, “tem_u: object_r: admin_passwd_exec” …, 4096) = 4096
leer (10, “stem_u: object_r: oracleasm_exec_t” …, 4096) = 4096
leer (10, “rc_exec_t: s0 \ n / usr / sbin / rotatelog” …, 4096) = 4096
leer (10, “dules_exec_t: s0 \ n / usr / sbin / userhe” …, 4096) = 4096
leer (10, “nyhosts \\. py \ t– \ tsystem_u: object_r” …, 4096) = 4096
leer (10, “trc_exec_t: s0 \ n / usr / lib / cgi-bin / c” …, 4096) = 4096
leer (10, “: openvswitch_exec_t: s0 \ n / usr / sbin” …, 4096) = 4096
leer (10, “em_u: object_r: abrt_dump_oops_exe” …, 4096) = 4096
leer (10, “run_t: s0 \ n / usr / share / vdsm / respawn” …, 4096) = 4096
read (10, “amass-milter \ t– \ tsystem_u: object_” …, 4096) = 4096
leer (10, “m_u: object_r: cobbler_var_lib_t: s” …, 4096) = 4096
leer (10, “.d / init \\. d / rpcidmapd \ t– \ tsystem_u” …, 4096) = 4096
leer (10, “it \\. d / snmptrapd \ t– \ tsystem_u: obje” …, 4096) = 4096
leer (10, “_u: object_r: smbd_var_run_t: s0 \ n / v” …, 4096) = 4096
leer (10, “abbix_proxy_pgsql \ t– \ tsystem_u: ob” …, 4096) = 4096
leer (10, “s \ t– \ tsystem_u: object_r: bin_t: s0 \ n” …, 4096) = 4096
leer (10, “/usr/share/shorewall/compiler\\.p”…, 4096) = 4096
leer (10, “ugins / irqstats \ t– \ tsystem_u: objec” …, 4096) = 4096
leer (10, “enstack-vistazo-api \ t– \ tsystem_u: o” …, 4096) = 4096
leer (10, “usr / local / Zend / lib / ZendExtension” …, 4096) = 4096
read (10, “ot / etc / named \\. caching-nameserver” …, 4096) = 1952
leer (10, “”, 4096) = 0
read (11, “# \ n # \ n # Contexto de archivo específico del usuario” …, 4096) = 4096
leer (11, “/auto(/.*)?\tunconfined_u:object_”…, 4096) = 2309
leer (11, “”, 4096) = 0
leer (10, “/.*\tsystem_u:object_r:default_t:”…, 4096) = 4096
leer (10, “ib_t: s0 \ n / usr /(.*/)? lib (64)? (/.*)”…, 4096) = 4096
leer (10, “t_r: removable_device_t: s0 \ n / dev / p” …, 4096) = 4096
leer (10, “_r: ipsec_exec_t: s0 \ n / usr / lib (64)?” …, 4096) = 4096
leer (10, “lib (64)? / gnupg / gpgkeys. * \ t– \ tsyst” …, 4096) = 4096
leer (10, “64)? / libx264 \\. so (\\. [^ /] *) * \ t– \ tsy” …, 4096) = 4096
leer (10, “ib_t: s0 \ n / usr / lib (64)? / chromium-b” …, 4096) = 4096
leer (10, “stublibs / dllnums \\. so \ t– \ tsystem_u” …, 4096) = 4096
read (10, “lib (64)? / nagios / plugins / check_ov” …, 4096) = 4096
leer (10, “t_r: bin_t: s0 \ n / usr / lib (64)? / [^ /] *” …, 4096) = 4096
leer (10, “f (/.*)? \ tsystem_u: object_r: soundd” …, 4096) = 4096
leer (10, “tc / nginx (/.*)? \ tsystem_u: object_r” …, 4096) = 4096
leer (10, “u: object_r: var_log_t: s0 \ n / etc / dbu” …, 4096) = 4096
leer (10, “_u: object_r: initrc_exec_t: s0 \ n / sb” …, 4096) = 4096
leer (10, “_t: s0 \ n / var / run / ppp (/.*)? \ tsystem_” …, 4096) = 4096
leer (10, “: xdm_var_lib_t: s0 \ n / var / log / mail (“…, 4096) = 4096
leer (10, “t_r: rhsmcertd_log_t: s0 \ n / var / run /” …, 4096) = 4096
leer (10, “\ tsystem_u: object_r: rpcd_exec_t: s” …, 4096) = 4096
leer (10, “)? \ tsystem_u: object_r: ctdbd_var_l” …, 4096) = 4096
leer (10, “/mysql(-files|-keyring)?(/.*)?\ts”…, 4096) = 4096
leer (10, “ar / log / z-push (/.*)? \ tsystem_u: obj” …, 4096) = 4096
leer (10, “/lib/zabbix(/.*)?\tsystem_u:objec”…, 4096) = 4096
leer (10, “/var/run/tomcat6?\\.pid\t–\tsystem”…, 4096) = 4096
leer (10, “r: qmail_spool_t: s0 \ n / var / lib / quan” …, 4096) = 4096
leer (10, “g. * \ t– \ tsystem_u: object_r: Red” …, 4096) = 4096
leer (10, “ib_t: s0 \ n / var / run / matahari (/.*)? \ t” …, 4096) = 4096
leer (10, “_r: dhcpd_exec_t: s0 \ n / usr / sbin / eth” …, 4096) = 4096
leer (10, “cluster_var_run_t: s0 \ n / etc / syscon” …, 4096) = 4096
leer (10, “he / cracklib (/.*)? \ tsystem_u: objec” …, 4096) = 4096
leer (10, “java_exec_t: s0 \ n / usr / lib / ruby ​​/ gem” …, 4096) = 4096
leer (10, “: s0 \ n / usr / NX / home / nx / \\. ssh (/.*)? \ t” …, 4096) = 4096
leer (10, “: object_r: rpm_var_lib_t: s0 \ n / usr /” …, 4096) = 4096
leer (10, “system_u: object_r: httpd_log_t: s0” …, 4096) = 4096
leer (10, “t_r: abrt_retrace_spool_t: s0 \ n / var” …, 4096) = 4096
leer (10, “: object_r: bin_t: s0 \ n / var / lib / glus” …, 4096) = 4096
leer (10, “. * \ t– \ tsystem_u: object_r: qdiskd_v” …, 4096) = 4096
leer (10, “\ tsystem_u: object_r: var_auth_t: s0” …, 4096) = 4096
leer (10, “t: s0 \ n / usr / share / system-config-ne” …, 4096) = 4096
leer (10, “ploads (/.*)? \ tsystem_u: object_r: h” …, 4096) = 4096
leer (10, “g \ tc \ tsystem_u: object_r: kmsg_devi” …, 4096) = 4096
leer (10, “-c \ tsystem_u: object_r: fixed_disk_” …, 4096) = 4096
leer (10, “_t: s0 \ n / usr / bin / slim \ t– \ tsystem_u:” …, 4096) = 4096
leer (10, “sbin / lpd \ t– \ tsystem_u: object_r: lp” …, 4096) = 4096
leer (10, “- \ tsystem_u: object_r: fsadm_exec_” …, 4096) = 4096
leer (10, “0 \ n / sbin / mcstransd \ t– \ tsystem_u: ob” …, 4096) = 4096
leer (10, “\ tsystem_u: object_r: games_exec_t:” …, 4096) = 4096
leer (10, “ejecutar / atd \\. pid \ t– \ tsystem_u: object_” …, 4096) = 4096
leer (10, “system_u: object_r: wine_exec_t: s0” …, 4096) = 4096
leer (10, “- \ tsystem_u: object_r: fail2ban_exe” …, 4096) = 4096
leer (10, “ar / run / lircd \\. pid \ tsystem_u: objec” …, 4096) = 4096
leer (10, “iconfig \ t– \ tsystem_u: object_r: exe” …, 4096) = 4096
leer (10, “tem_u: object_r: admin_passwd_exec” …, 4096) = 4096
leer (10, “stem_u: object_r: oracleasm_exec_t” …, 4096) = 4096
leer (10, “rc_exec_t: s0 \ n / usr / sbin / rotatelog” …, 4096) = 4096
leer (10, “dules_exec_t: s0 \ n / usr / sbin / userhe” …, 4096) = 4096
leer (10, “nyhosts \\. py \ t– \ tsystem_u: object_r” …, 4096) = 4096
leer (10, “trc_exec_t: s0 \ n / usr / lib / cgi-bin / c” …, 4096) = 4096
leer (10, “: openvswitch_exec_t: s0 \ n / usr / sbin” …, 4096) = 4096
leer (10, “em_u: object_r: abrt_dump_oops_exe” …, 4096) = 4096
leer (10, “run_t: s0 \ n / usr / share / vdsm / respawn” …, 4096) = 4096
read (10, “amass-milter \ t– \ tsystem_u: object_” …, 4096) = 4096
leer (10, “m_u: object_r: cobbler_var_lib_t: s” …, 4096) = 4096
leer (10, “.d / init \\. d / rpcidmapd \ t– \ tsystem_u” …, 4096) = 4096
leer (10, “it \\. d / snmptrapd \ t– \ tsystem_u: obje” …, 4096) = 4096
leer (10, “_u: object_r: smbd_var_run_t: s0 \ n / v” …, 4096) = 4096
leer (10, “abbix_proxy_pgsql \ t– \ tsystem_u: ob” …, 4096) = 4096
leer (10, “s \ t– \ tsystem_u: object_r: bin_t: s0 \ n” …, 4096) = 4096
leer (10, “/usr/share/shorewall/compiler\\.p”…, 4096) = 4096
leer (10, “ugins / irqstats \ t– \ tsystem_u: objec” …, 4096) = 4096
leer (10, “enstack-vistazo-api \ t– \ tsystem_u: o” …, 4096) = 4096
leer (10, “usr / local / Zend / lib / ZendExtension” …, 4096) = 4096
read (10, “ot / etc / named \\. caching-nameserver” …, 4096) = 1952
leer (10, “”, 4096) = 0
read (11, “# \ n # \ n # Contexto de archivo específico del usuario” …, 4096) = 4096
leer (11, “/auto(/.*)?\tunconfined_u:object_”…, 4096) = 2309
leer (11, “”, 4096) = 0
cerca (10) = 0
cerca (11) = 0
abierto (“/ usr / lib64 / gconv / gconv-modules.cache”, O_RDONLY) = 10
cerca (10) = 0
abierto (“/ selinux / context”, O_RDWR) = 10
escribir (10, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
leer (10, “system_u: object_r: etc_t: s0 \ 0”, 4095) = 27
cerca (10) = 0
abierto (“/ selinux / mls”, O_RDONLY) = 10
leer (10, “1”, 19) = 1
cerca (10) = 0
cerca (10) = 0
cerca (10) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 10
escribir (10, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
cerca (10) = 0
abierto (“/ etc / passwd-“, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 10
leer (5, “raíz: x: 0: 0: raíz: / raíz: / bin / bash \ n” …, 4096) = 1703
leer (5, “”, 4096) = 0
escribir (10, “raíz: x: 0: 0: raíz: / raíz: / bin / bash \ n” …, 1703) = 1703
cerca (10) = 0
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
leer (5, “system_u: object_r: etc_t: s0 \ 0”, 4095) = 27
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
cerrar (5) = 0
abierto (“/ etc / passwd +”, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 5
escribir (5, “raíz: x: 0: 0: raíz: / raíz: / bin / bash \ n” …, 1740) = 1740
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
leer (5, “system_u: object_r: shadow_t: s0 \ 0”, 4095) = 30
cerrar (5) = 0
cerrar (5) = 0
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
cerrar (5) = 0
abierto (“/ etc / shadow-“, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 5
leer (8, “raíz: $ 6 $ Wwcp4FMsT1HljwyM $ rPBwiR9” …, 4096) = 1510
leer (8, “”, 4096) = 0
escribir (5, “raíz: $ 6 $ Wwcp4FMsT1HljwyM $ rPBwiR9” …, 1510) = 1510
cerrar (5) = 0
cerrar (8) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
leer (5, “system_u: object_r: shadow_t: s0 \ 0”, 4095) = 30
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
cerrar (5) = 0
abierto (“/ etc / shadow +”, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 5
escribir (5, “raíz: $ 6 $ Wwcp4FMsT1HljwyM $ rPBwiR9” …, 1537) = 1537
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
leer (5, “system_u: object_r: etc_t: s0 \ 0”, 4095) = 27
cerrar (5) = 0
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
cerrar (5) = 0
abierto (“/ etc / group-“, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 5
leer (6, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 4096) = 783
leer (6, “”, 4096) = 0
escribir (5, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 783) = 783
cerrar (5) = 0
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
leer (5, “system_u: object_r: etc_t: s0 \ 0”, 4095) = 27
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “system_u: object_r: etc_t: s0 \ 0”, 27) = 27
cerrar (5) = 0
abierto (“/ etc / group +”, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 5
escribir (5, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 795) = 795
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
leer (5, “system_u: object_r: shadow_t: s0 \ 0”, 4095) = 30
cerrar (5) = 0
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
cerrar (5) = 0
abierto (“/ etc / gshadow-“, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 5
read (7, “root ::: \ nbin ::: bin, daemon \ ndaemon:” …, 4096) = 640
leer (7, “”, 4096) = 0
escribir (5, “root ::: \ nbin ::: bin, daemon \ ndaemon:” …, 640) = 640
cerrar (5) = 0
cerca (7) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
leer (5, “system_u: object_r: shadow_t: s0 \ 0”, 4095) = 30
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “system_u: object_r: shadow_t: s0 \ 0”, 30) = 30
cerrar (5) = 0
abierto (“/ etc / gshadow +”, O_WRONLY | O_CREAT | O_TRUNC, 0666) = 5
escribir (5, “root ::: \ nbin ::: bin, daemon \ ndaemon:” …, 649) = 649
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
cerrar (4) = 0
abierto (“/ selinux / context”, O_RDWR) = 4
escribir (4, “nonfined_u: object_r: user_home_” …, 41) = 41
leer (4, “nonfined_u: object_r: user_home_” …, 4095) = 41
cerrar (4) = 0
cerrar (4) = 0
cerrar (4) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 4
escribir (4, “nonfined_u: object_r: user_home_” …, 41) = 41
cerrar (4) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 4
escribir (4, NULL, 0) = 0
cerrar (4) = 0
abierto (“/ etc / skel”, O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC) = 4
abierto (“/ etc / skel / .bash_logout”, O_RDONLY) = 5
abierto (“/ selinux / context”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
leer (6, “nonfined_u: object_r: user_home_” …, 4095) = 37
cerca (6) = 0
cerca (6) = 0
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
cerca (6) = 0
abierto (“/ home / test / .bash_logout”, O_WRONLY | O_CREAT | O_TRUNC, 0644) = 6
read (5, “# ~ / .bash_logout \ n \ n”, 1024) = 18
write (6, “# ~ / .bash_logout \ n \ n”, 18) = 18
leer (5, “”, 1024) = 0
cerrar (5) = 0
cerca (6) = 0
abierto (“/ selinux / context”, O_RDWR) = 5
escribir (5, “nonfined_u: object_r: mozilla_ho” …, 40) = 40
leer (5, “nonfined_u: object_r: mozilla_ho” …, 4095) = 40
cerrar (5) = 0
cerrar (5) = 0
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, “nonfined_u: object_r: mozilla_ho” …, 40) = 40
cerrar (5) = 0
abierto (“/ etc / skel / .mozilla”, O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC) = 5
abierto (“/ selinux / context”, O_RDWR) = 6
escribir (6, “unconfined_u: object_r: mozilla_ho” …, 40) = 40
leer (6, “Unfined_u: object_r: mozilla_ho” …, 4095) = 40
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, “unconfined_u: object_r: mozilla_ho” …, 40) = 40
cerca (6) = 0
abierto (“/ etc / skel / .mozilla / plugins”, O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC) = 6
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, NULL, 0) = 0
cerca (6) = 0
abierto (“/ selinux / context”, O_RDWR) = 6
escribir (6, “unconfined_u: object_r: mozilla_ho” …, 40) = 40
leer (6, “Unfined_u: object_r: mozilla_ho” …, 4095) = 40
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, “unconfined_u: object_r: mozilla_ho” …, 40) = 40
cerca (6) = 0
abierto (“/ etc / skel / .mozilla / extensiones”, O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC) = 6
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, NULL, 0) = 0
cerca (6) = 0
cerrar (5) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 5
escribir (5, NULL, 0) = 0
cerrar (5) = 0
abierto (“/ etc / skel / .kshrc”, O_RDONLY) = 5
abierto (“/ selinux / context”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
leer (6, “nonfined_u: object_r: user_home_” …, 4095) = 37
cerca (6) = 0
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
cerca (6) = 0
abierto (“/ home / test / .kshrc”, O_WRONLY | O_CREAT | O_TRUNC, 0644) = 6
leer (5, “# .kshrc \ n \ n # Fuente global defini” …, 1024) = 171
escribir (6, “# .kshrc \ n \ n # Fuente global defini” …, 171) = 171
leer (5, “”, 1024) = 0
cerrar (5) = 0
cerca (6) = 0
abierto (“/ etc / skel / .bashrc”, O_RDONLY) = 5
abierto (“/ selinux / context”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
leer (6, “nonfined_u: object_r: user_home_” …, 4095) = 37
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
cerca (6) = 0
abierto (“/ home / test / .bashrc”, O_WRONLY | O_CREAT | O_TRUNC, 0644) = 6
leer (5, “# .bashrc \ n \ n # Fuente global defin” …, 1024) = 124
escribir (6, “# .bashrc \ n \ n # Fuente global defin” …, 124) = 124
leer (5, “”, 1024) = 0
cerrar (5) = 0
cerca (6) = 0
abierto (“/ etc / skel / .bash_profile”, O_RDONLY) = 5
abierto (“/ selinux / context”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
leer (6, “nonfined_u: object_r: user_home_” …, 4095) = 37
cerca (6) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 6
escribir (6, “nonfined_u: object_r: user_home_” …, 37) = 37
cerca (6) = 0
abierto (“/ home / test / .bash_profile”, O_WRONLY | O_CREAT | O_TRUNC, 0644) = 6
read (5, “# .bash_profile \ n \ n # Obtenga el alias” …, 1024) = 176
write (6, “# .bash_profile \ n \ n # Obtenga el alias” …, 176) = 176
leer (5, “”, 1024) = 0
cerrar (5) = 0
cerca (6) = 0
cerrar (4) = 0
abierto (“/ proc / self / task / 22643 / attr / fscreate”, O_RDWR) = 4
escribir (4, NULL, 0) = 0
cerrar (4) = 0
abierto (“/ var / spool / mail / test”, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, 0) = 4
abierto (“/ etc / group”, O_RDONLY | O_CLOEXEC) = 5
leer (5, “raíz: x: 0: \ nbin: x: 1: bin, daemon \ ndae” …, 4096) = 795
cerrar (5) = 0
cerrar (4) = 0

Esta es una salida desordenada de strace para ver lo que todas las llamadas read (), write (), open () y close () se ejecutan en segundo plano cuando el usuario se crea usando useradd!

El comando useradd es básicamente una interfaz de shell para una llamada al sistema Linux. El comando actualizará ciertas estructuras de datos a través de llamadas del sistema en el sistema para crear una nueva entrada de usuario.
Para “cómo” usar el comando, consulte el enlace que Sundeep compartió.

Para agregar un usuario normal / ordinario en Linux, primero debe iniciar sesión como root. Luego solo ejecuta el siguiente comando

Useradd nameofuser

Luego para asignar contraseña, ejecute

Passwd nameofuser

Será como ingresar la contraseña dos veces. Y ese usuario se agregará y los archivos de configuración / etc / passwd, / etc / group, / etc / shadow se actualizarán.

Vea el tutorial completo … Enlace que se muestra a continuación

La guía completa para el comando “useradd” en Linux

También verifique el comando adduser (¿Qué hace adduser que useradd no hace?)

More Interesting

¿Los pequeños contratistas civiles contratan ingenieros civiles?

¿Por qué me intimidan las personas fuertes y poderosas en mi lugar de trabajo?

Cómo perseguir el periodismo después de mi B.Tech. la licenciatura

¿Qué haces cuando eres explotado (más trabajo y menos beneficios) en tu lugar de trabajo y el líder de tu sindicato no está de tu lado?

Hace 2 años que trabajo en Infosys y me han pedido que me mude a México para un proyecto. ¿Cómo está allí y es un buen lugar para mudarse para asignaciones de proyectos?

Cuando el correo electrónico llegó por primera vez a las oficinas, ¿cómo respondieron los trabajadores? ¿Mucha gente se resistió a usarlo o pensó que era una pérdida de tiempo o una moda?

¿Cómo debo trabajar para el desarrollo de OLQ?

¿Cómo podría estudiar si estoy trabajando a tiempo completo?

Cómo obtener un permiso de turno nocturno para un BPO internacional en India

Cómo resolver lo que está cavando en su patio por la noche

¿Te vuelves más o menos cínico sobre el trabajo con la edad?

¿Son reales los trabajos desde casa?

Recientemente me hicieron una oferta por la cantidad de dinero que quería. Sin embargo, probablemente podría negociar un poco más, pero siento que no estaría tan motivado o trabajaría tan duro si ganara más de lo que quería. ¿Qué tengo que hacer?

Admisiones de pregrado de LNMIIT: ¿Es fructífero trabajar en proyectos de LUSIP en mi primer año?

¿Qué tipo de trabajo hace un JE (civil) en CPWD?