¿Habrá siempre un par de los mismos UID y GID?

11

Tengo que cambiar la propiedad del archivo / directorio usando chmod. Sé solo el nombre de usuario de los propietarios pero quiero cambiar el nombre de grupo predeterminado simultáneamente. En esta etapa, el nombre del grupo no está decidido, así que pongo el mismo nombre de usuario

chown -R username:username path_to_dir

El comando puede ejecutarse para varios sistemas / usuarios, así que mi preocupación es que linux siempre tenga un par de nombre de usuario (usuario): nombre de usuario (grupo) O en algún momento este nombre de grupo predeterminado puede dar error.

Aunque he empezado a encontrar GID del usuario pertenece

id username | tr '(=)' ':' | awk -F: '{print $3}

Pero por conocimiento quiero saber. Hasta ahora, el análisis de, /etc/passwd /etc/groupsexcepto pocos usuarios, como "apagar, detener, sincronizar, operar" o todos los usuarios también se han incluido en grupos.

EDITAR 1: id -gn nombre de usuario también es una buena opción

Akaks
fuente
3
En el segundo ejemplo, ¿estabas buscando id -g username?
user1686
1
O id -gn usernameque imprime el nombre en lugar de la ID.
Cristian Ciupitu
En Linux, también hay muchos "grupos de dispositivos", por ejemplo. disco, mem, kmem, audio, video, etc., que no tienen el usuario correspondiente.
Baard Kopperud

Respuestas:

20

No hay garantía de que groupname = usernameexistirá.

El escenario más común es que los administradores de sistemas usan en Linux crear un nuevo usuario localmente en el sistema sin una especificación explícita para el grupo, lo que significa que el grupo se creará de manera predeterminada igual que el nombre de usuario y se le asignará al usuario que tenga el GID predeterminado debe ser del grupo recién creado.

Esto no significa que otro administrador del sistema seguirá este procedimiento y si agrega otros servicios de nombres a la mezcla como NIS o LDAP, el grupo asignado por defecto probablemente no será el mismo que el nuevo GID con el nombre del grupo igual que el nombre de usuario.

Por lo tanto, no debe confiar en el hecho de que username = groupname

Karlson
fuente
También puede depender no solo de la política de administración local, sino también de las herramientas incluidas con varias distribuciones. Muchos sitios solo aceptarán los valores predeterminados utilizados por las herramientas proporcionadas. Si bien la mayoría de las distribuciones que he usado a lo largo de los años se envían con un useraddscript que por defecto crea un grupo con el mismo nombre, no todas tienen. La última vez que lo usé (hace muchos, muchos años), el script de creación de usuarios de slackware por defecto tenía un solo grupo del usersque todos los usuarios se hicieron miembros. docs.slackware.com/slackbook:users sugiere que este puede ser el caso.
Julio
11

Aunque el idioma de grupo privado del usuario a menudo se usa en los sistemas Linux modernos, * nix en realidad no requiere un grupo primario único para cada usuario, y es muy posible que varias cuentas de usuario compartan un grupo primario común como userso staff.

Incluso en los casos en que se aplica el idioma UPG, no hay una razón particular por la cual el GID numérico de un UPG particular deba ser igual al UID del propietario, aunque la mayoría de las herramientas de creación de cuentas intentarán asignar UID y GID en orden, si son disponible. Los ID pueden salirse fácilmente del paso si los usuarios y / o grupos necesitan ser consistentes en múltiples sistemas (por ejemplo, para acomodar recursos compartidos NFS preexistentes).

conductor de acero
fuente
6

Como Ramesh ha indicado por defecto, el UID y el GID son iguales para los usuarios comunes. Sin embargo, este no es siempre el caso, por lo que no debe hacer una suposición ya que esto puede causar estragos en su sistema. Asignar permisos de archivo / carpeta a un grupo incorrecto es algo desordenado, ¿no?

Entonces, la respuesta corta: no, UID no siempre es igual a GID. Aún así, /etc/passwdcontiene tanto el UID como el GID del grupo predeterminado en la misma línea, por lo que es bastante fácil extraerlos.

Erathiel
fuente
"por defecto, el UID y el GID son iguales para los usuarios comunes" - en realidad, esta declaración solo es cierta si agrega "en algunas distribuciones populares de Linux". Sí, Ubuntu et al. hacerlo de esta manera, pero consideraría que un grupo común de "usuarios" es más predeterminado.
jstarek
Sí, si nuestro objetivo es ser 100% precisos, tiene razón. Probablemente tendríamos que agregar una docena más de "ifs" diferentes para no perder nunca una sola excepción. Todas mis distribuciones basadas en Debian (LMDE, Crunchbang, Debian puro) se comportan de esta manera y también tengo un CentOS 6.5. Ten en cuenta que ya que no hay necesidad de que añada una enorme cantidad de usuarios que tienden a utilizar adduseren lugar de useraddy los valores por defecto en /etc/adduser.confse establecen en USERGROUPS=yeslo que crea un grupo para cada nuevo usuario. Sin embargo, estos grupos generalmente (no siempre) tienen el mismo GID que el UID del usuario para el que fueron creados.
Erathiel
2

Desde este enlace, veo la siguiente información.

Una identificación de usuario (UID) es un número entero positivo único asignado por un sistema operativo tipo Unix a cada usuario. Cada usuario se identifica con el sistema mediante su UID, y los nombres de usuario generalmente se usan solo como una interfaz para humanos.

Los UID se almacenan, junto con sus nombres de usuario correspondientes y otra información específica del usuario, en el /etc/passwdarchivo, que se puede leer con el comando cat de la siguiente manera:

cat /etc/passwd

El tercer campo contiene el UID, y el cuarto campo contiene el ID de grupo (GID), que por defecto es igual al UID para todos los usuarios comunes.

EDITAR

Sin embargo, como señala @Karlson, no es cierto que el UID sea igual a GID por defecto.

La declaración es verdadera solo si no se agregan grupos ordinarios por separado y no se especifican explícitamente grupos en ninguna creación de usuario . Por defecto gid para el siguiente usuario agregado = max(gid) + 1. No existe una correlación entre UID y GID requerida por ningún sistema * NIX, solo coinciden en algunos casos.

Más referencias

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users

Ramesh
fuente
La última declaración es completamente falsa. UID = GID solo en el caso de que el nuevo usuario se cree en el sistema local y GID no se asigne explícitamente a un grupo existente.
Karlson
No, no es completamente falso, ya que dice claramente "por defecto". Algunas aclaraciones serían muy apreciadas aquí.
Erathiel
1
@Erathiel Por defecto, GID es igual a GID asignado en la creación del usuario. Si el usuario se crea localmente y sin especificar GID en el -gindicador useradddel programa, se creará un grupo para usted y, a menos que se haya producido un cambio de GID, será = UID. Sin embargo, si no se conoce el método de creación, no puede confiar en el hecho de que este será el caso:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson
En algunos sistemas, useradd también crea un grupo del mismo nombre para la cuenta. Depende del sabor de Linux.
Pete
@Karlson, nunca mencioné que siempre será igual. Se especifica claramente que, de forma predeterminada, es igual al UID para todos los usuarios comunes .
Ramesh