Quiero decir, si dos usuarios tienen el mismo nombre, ¿cómo sabe el sistema que en realidad son usuarios diferentes cuando impone permisos de archivo?
Se me ocurrió esta duda cuando estaba considerando cambiar el nombre de mi casa /home/old-arch
antes de reinstalar el sistema (tengo /home
en su propia partición y no la formateo), para poder tener una nueva, impecable /home/arch
. Me preguntaba si el nuevo sistema me daría los viejos permisos en mis archivos o si me reconocería como diferente arch
.
permissions
users
authentication
multiuser
Arch Stanton
fuente
fuente
ls -n
./home/old-arch
antes de reinstalar el sistema (tengo/home
en su propia partición y no la formateo), para poder tener una nueva, impecable/home/arch
. Me preguntaba si retendría los mismos permisos en mis archivos o si el sistema me reconocería como diferentearch
.Respuestas:
En Unix, los usuarios se identifican por su ID (uid), que debe ser única (en el ámbito del sistema local). Entonces, incluso si fuera posible crear 2 usuarios diferentes con el mismo nombre (adduser en mi sistema se niega a hacer esto, vea esta pregunta para obtener más información ¿Pueden las cuentas de Unix separadas compartir un nombre de usuario pero tienen contraseñas separadas? ), Tendrían que obtener diferentes uids. Si bien es posible que pueda manipular archivos que contienen la información del usuario para que coincida con sus criterios, cada programa se basa en el supuesto de que los uids son únicos en el sistema, por lo que dichos usuarios serían idénticos.
EDITAR: La otra respuesta demostró un caso en el que tiene 2 nombres de usuario diferentes para el mismo uid; sin embargo, en lo que respecta al sistema, esto es como tener dos nombres diferentes para el mismo usuario, por lo que se deben evitar construcciones como esta si es posible , a menos que desee específicamente crear un alias para un usuario en el sistema (consulte la pregunta sobre alias de usuario de Unix en serverfault para obtener más información sobre los aspectos técnicos).
El sistema usa estos uid para imponer permisos de archivo. El uid y el gid (id. De grupo) del usuario al que pertenece el archivo se escriben en los metadatos del archivo. Si lleva el disco a otra computadora con un usuario diferente que comparte aleatoriamente el mismo uid, el archivo pertenecerá repentinamente a este usuario en ese sistema. Sabiendo que los uids generalmente no son más de enteros de 16 bits en un sistema unix, esto muestra que los uids no están destinados a ser globalmente únicos, solo únicos en el alcance del sistema local.
fuente
Si obliga a que existan múltiples usuarios con el mismo nombre de usuario, habrá múltiples entradas
/etc/{shadow,passwd}
con el mismo nombre:Si intenta iniciar sesión como ese usuario, iniciará sesión como la primera coincidencia.
No habrá forma de iniciar sesión como el segundo usuario con el mismo nombre.
Tenga en cuenta que Linux rastrea a los usuarios por su uid, no por su nombre de usuario.
Sin embargo, sería posible que dos nombres de usuario diferentes fueran la misma ID de usuario. Considere una versión diferente de
/etc/passwd
:Tenga en cuenta que para ambos nombres de usuario
a
yb
, la tercera columna es 1001, esa es la identificación de usuario / usuario. Ahora, si el usuarioa
o el usuariob
inician sesión (incluso con diferentes contraseñas), ambos serán "usuario 1001" y se mostrarán como usuariosa
desde la perspectiva del sistema operativo. Aquí también, la primera entrada coincidente es la que se devuelve (en la mayoría de los casos):Ambos
a
yb
son uid1001
y tendrán acceso a los recursos disponibles para uid1001
.fuente
useradd
arrojará un ajuste si intenta agregar un usuario existente, por lo que por 'forzar' aquí Andy prácticamente significa 'editar manualmente/etc/passwd
y/etc/shadow
que es muy importante No intente esto en el territorio local.setuid
con el segundo UID? O inclusosudo -u '#<uid>' bash
?Si tiene un sistema de usuario único y realiza una reinstalación con la misma distribución o una distribución similar, es muy probable que su cuenta de usuario tenga la misma identificación de usuario y, por lo tanto, sea el mismo usuario desde la perspectiva del núcleo. Por ejemplo, el usuario creado durante la instalación ha sido UID 1000 en sistemas Debian hasta donde puedo recordar. Otros sistemas pueden usar algún otro número, pero es muy probable que sea un número entero pequeño que sea el mismo en cada instalación.
Lo mismo se aplica a otros usuarios también (si tiene alguno) ya que los UID generalmente se asignan secuencialmente. Es probable que el tercer usuario creado tenga el mismo UID que el tercer usuario creado en otro sistema. Debería tomar medidas de antemano para asegurarse de que los UID no se reutilicen en ambos sistemas.
Por razones similares, cualquier cosa que use NFS deberá tener una base de datos de usuario compartida.
Pero en este caso, dado que es su sistema personal, puede iniciar sesión como root y ejecutarlo
chown newuser. -R /home/olduser
incluso si el UID fuera diferente.(Los sistemas Windows son diferentes, generan esa cadena de identificación más larga que es más aleatoria. Allí, si mueve un disco a otra máquina, los archivos serán vistos como propiedad de un usuario desconocido, y no tendrá acceso sin usar poderes de administrador.
Además, dije "probable" mucho en lo anterior. No se sabe si alguna distribución se comporta de manera diferente. Linux moderno también admite UID de 32 bits, por lo que si bien no es tan largo como los SID de Windows, todavía hay algo de espacio para usar si se quiere tener, por ejemplo, UID aleatorios. Por lo general, no hay mucho uso para eso, sin embargo. Se supone que el administrador del sistema debe saber qué discos conectan al sistema y ajustar la propiedad de los archivos en consecuencia, o hacer que el punto de montaje sea inaccesible para otros usuarios).
fuente
Unix es un sistema muy antiguo, una era donde las capacidades de almacenamiento eran muy pequeñas, y todo, así como los archivos como usuarios, se identificaban por números . Los nombres llegaron más tarde , después de que el almacenamiento había crecido un poco.
Una virtud de este sistema es que los nombres son solo etiquetas enganchadas a los identificadores reales: las ID numéricas. Por lo tanto, puede tener varios nombres para un usuario (en edición / etc / passwd directamente), así como varios nombres para un archivo (útil para almacenar el archivo solo una vez, pero verlo en varias ubicaciones).
Los límites son el sistema para el usuario y la partición para el archivo.
Lo digo solo para aclarar, para explicar por qué las cosas son lo que son .
Debo confesar que nunca he intentado lo contrario, un mismo nombre con diferentes ID, siempre pensé que no era posible. ¿Lo es? No como un error?
fuente