Principio operativo de Shell y problemas de permisos en Linux

Tabla de contenido

1. El principio de funcionamiento de Shell.

2. El concepto de permisos de Linux.

2.1 Cambio de cuenta de usuario

2.2 Solo aumentar los permisos del comando actual

2.3 Agregar usuarios comunes a la lista de confianza

3. Gestión de permisos de Linux

3.1 Clasificación de los visitantes del archivo

3.2 Tipos de archivos y derechos de acceso

3.3 Método de representación del valor de permiso de carácter

3.3.1 Método de representación de caracteres

3.3.2 Representación octal

3.4 Métodos de configuración relacionados para permisos de acceso a archivos

3.4.1 Modificar los permisos de acceso a archivos

3.4.2 Modificar el propietario de un archivo

3.4.3 Modificar el grupo al que pertenece un archivo

3.4.4 Modificar máscara de archivo

3.5 permisos de directorio

3.6 Bit pegajoso


1. El principio de funcionamiento de Shell.

Windows usa la interfaz gráfica como modo interactivo, mientras que Linux usa la interfaz de línea de comandos como modo interactivo. Aunque los métodos de interacción de Windows y Linux son diferentes, son esencialmente los mismos: la interfaz gráfica y la interfaz de línea de comandos son para que los usuarios realicen operaciones relacionadas, y la interfaz gráfica y la interfaz de línea de comandos son "programas de shell".

Estrictamente hablando, Linux es un kernel del sistema operativo, llamado "kernel", pero los usuarios comunes no pueden usar el kernel directamente, sino comunicarse con el kernel a través del "programa shell" del kernel, es decir, Shell.

Shell es el " intérprete de línea de comando ":

  • Traducir comandos de usuario al kernel para su procesamiento.
  • Traducir los resultados del procesamiento central a los usuarios

En comparación con la interfaz gráfica (GUI) en Windows, operar Windows no opera directamente el kernel de Windows, sino que utiliza la interfaz gráfica para hacer clic para completar la operación. Shell tiene la misma función para Linux. Principalmente analiza las instrucciones del usuario y las pasa al kernel de Linux después del análisis. Los resultados de la retroalimentación luego se ejecutan a través del kernel y los resultados se analizan al usuario a través de Shell.

Principio de funcionamiento de la carcasa:

  • Cree un proceso hijo y deje que el proceso hijo interprete la línea de comando
  • Cualquier problema en el proceso hijo no afectará el proceso padre Shell

En comparación con Windows, cada vez que se ejecuta un programa, se crea un proceso secundario, como WeChat y QQ. Si ocurre algún problema en cualquiera de estos procesos secundarios, no afectará al proceso principal.

Nota:  Shell es sólo un término general para todos los programas de shell. Por ejemplo: el programa shell en CentOS 7 se llama bash

2. El concepto de permisos de Linux.

Hay dos tipos de usuarios en Linux: superusuario (root) y usuario normal. Los superusuarios pueden hacer cualquier cosa en Linux casi sin restricciones, mientras que los usuarios normales generalmente sólo pueden trabajar en su propio directorio de trabajo (/home/xxx) y realizar un trabajo limitado en el sistema. Se puede considerar que el concepto de permisos se utiliza para restringir a los usuarios normales y los superusuarios casi no tienen restricciones.

El símbolo del sistema para superusuario es "#" 

El símbolo del sistema para usuarios normales es "$" 

2.1 Cambio de cuenta de usuario

 Cuando los permisos son insuficientes, es necesario pasar de un usuario normal a un usuario root.

su 用户名

Para cambiar de un usuario normal a un usuario root, ingrese su root y luego ingrese la contraseña de la cuenta root. 

Cambie de una cuenta raíz a una cuenta normal sin ingresar la contraseña

Aviso:

  • Al cambiar de una cuenta normal a una cuenta raíz, la raíz en el comando se puede omitir porque solo hay una cuenta raíz.
  • Este comando también se puede utilizar para cambiar de un usuario común a otro, simplemente ingrese la contraseña de la cuenta del usuario que desea cambiar.
  • Después de cambiar de usuario, si desea volver al último usuario, puede usar Ctrl+D.

2.2 Solo aumentar los permisos del comando actual

Existe una alta probabilidad de que no tenga una cuenta raíz en la empresa, pero a veces, cuando no tiene suficientes permisos para realizar ciertas operaciones, necesita elevar temporalmente sus permisos.

Como usuario normal, cambiar la contraseña de otro usuario normal

Pero no todos los usuarios pueden utilizar el comando sudo. 

La figura anterior muestra que el usuario tmp no existe en el archivo sudoers, por lo que los permisos del comando no se pueden elevar. Solo después de que el usuario root los agregue a la lista de confianza se pueden elevar los permisos del comando.

2.3 Agregar usuarios comunes a la lista de confianza

Debes estar bajo la cuenta raíz para realizar esta operación.

Utilice el comando vim /etc/sudoers para abrir el archivo de configuración, busque %wheel ALL=(ALL) ALL y luego agréguelo según el caso en la imagen.

Una vez completada la adición, el usuario puede utilizar el comando sudo, lo que significa que tiene la capacidad de escalar privilegios.

3. Gestión de permisos de Linux

3.1 Clasificación de los visitantes del archivo

  • El propietario de archivos y directorios de archivos ( Propietario del archivo )
  • Usuario en el grupo del propietario del archivo ( el grupo al que pertenece el archivo )
  • otros usuarios ( otros )

Aviso:

  • Para un determinado archivo, su propietario, grupo y otros son reproducidos por el superusuario (root) y los usuarios normales.
  • En Linux, todos los usuarios pertenecen a un determinado grupo, incluso si el grupo tiene un solo usuario (en este caso, el grupo lleva el nombre del usuario)

Pertenencia al grupo

En una determinada empresa, hay dos equipos (Grupo A y Grupo B) desarrollando el mismo proyecto en el mismo servidor Linux (modo carrera de caballos), y tú eres miembro del Grupo A.

Si no existe el concepto de grupo, una vez creado un archivo, solo el propietario puede verlo o todos los demás pueden verlo. En situaciones reales, la esperanza es que el propietario y los miembros del grupo puedan verlo, pero otros no. Entonces existe el concepto de grupo de pertenencia: puede configurar el archivo para que sea visible para el propietario y el grupo al que pertenece, pero no para otros. Por lo tanto, la existencia del grupo es para una configuración de permisos más flexible para cumplir con la colaboración en equipo.

Puede utilizar el comando ll para ver el propietario y el grupo de un archivo o directorio de archivos.

3.2 Tipos de archivos y derechos de acceso

Usando el comando ll, puede ver que hay una cadena de caracteres delante, que representa el tipo y los atributos del archivo.

Esta cadena de caracteres consta de 10 caracteres. El primer carácter representa el tipo de archivo del archivo.

  • -: archivo ordinario
  • d: directorio
  • l: archivo de enlace (similar al acceso directo en Windows)
  • b: Bloquear archivos del dispositivo (como disco duro, unidad óptica, etc.)
  • p: archivo de tubería
  • c: archivo de dispositivo de caracteres
  • s: archivo de socket

Nota:  en Linux, el tipo de archivo no tiene nada que ver con el sufijo del archivo.

Los 9 caracteres restantes se agrupan en grupos de tres, lo que representa si el archivo tiene ciertos atributos en relación con su propietario, grupo y otros.

El primer carácter de cada grupo de tres caracteres representa si el archivo tiene un atributo legible, el segundo representa si tiene un atributo grabable y el tercero representa si tiene un atributo ejecutable. Si tiene un atributo legible, el carácter en la primera posición es r; si tiene un atributo escribible, el carácter en la segunda posición es w; si tiene un atributo ejecutable, el carácter en la tercera posición es x. Si una determinada posición es el carácter -, significa que no existe ningún atributo para la posición correspondiente.

Ejemplo

El archivo data.txt es un archivo normal. El propietario y el grupo al que pertenece el archivo pueden leerlo y escribirlo, pero otros miembros del archivo solo tienen derechos de lectura. 

3.3 Método de representación del valor de permiso de carácter

3.3.1 Método de representación de caracteres

El método de representación cuando el comando ll imprime el valor del permiso del archivo es la representación de caracteres.

3.3.2 Representación octal

La posición de cada carácter en la representación de caracteres representa solo dos resultados posibles (verdadero o falso), por lo que estos tres caracteres se pueden convertir en tres bits binarios y luego convertirse en un número octal para su representación.

3.4 Métodos de configuración relacionados para permisos de acceso a archivos

3.4.1 Modificar los permisos de acceso a archivos

método de configuración de símbolos

chmod [who] [+-=] [mode] 文件名

Opciones de uso común : -R modifica recursivamente los permisos de los archivos del directorio

  • +: agregue el permiso representado por el código de permiso al alcance del permiso
  • -: Cancelar el permiso representado por el código de permiso del rango de permisos
  • =: Asigne el permiso representado por el código de permiso al alcance del permiso.

modo :

  • tu: dueño
  • g: grupo al que pertenece
  • o: otro
  • a: todos los usuarios

Agregue otros archivos grabables al archivo tmp.txt

 método de configuración digital

chmod [numbers] filename

Convierta el número octal correspondiente a binario y luego establezca el valor de permiso correspondiente

  • 0: sin permiso
  • 1: ejecutar permisos
  • 2: permiso de escritura
  • 4: permiso de lectura

Establezca permisos para el archivo stat1.cpp en -rw-rw-r--

3.4.2 Modificar el propietario de un archivo

chown 文件所有者 文件名

Opciones de uso común:  -R modifica recursivamente el propietario de los archivos del directorio 

Modifique el propietario del archivo stat1.cpp a gg-bruse

Nota:  Para modificar el propietario del archivo se requiere un usuario root, si es un usuario común, los permisos deben ser elevados.

3.4.3 Modificar el grupo al que pertenece un archivo

chown 文件所有者:文件所属组 文件名
chgrp 文件所属组 文件名

Modifique el propietario y el grupo del archivo stat1.cpp a gg-bruse

Modifique el grupo de archivos de stat1.cpp a gg-bruse

3.4.4 Modificar máscara de archivo

Ver archivos y directorios recién creados, cada uno con sus propios permisos predeterminados

Los permisos predeterminados para archivos nuevos son 0666 y los permisos predeterminados para directorios nuevos son 0777. El primer 0 está relacionado con permisos especiales, no es necesario entrar en detalles aquí, los siguientes tres dígitos son la representación numérica octal de los permisos, que se traducen en representaciones de caracteres.

Sin embargo, los valores de permiso de los archivos y directorios realmente creados no son los mismos que los valores traducidos. La razón es que la creación de archivos y directorios también se ve afectada por umask. Suponiendo que el permiso predeterminado es máscara, los archivos y directorios realmente creados Los permisos de archivo son: máscara&(~umask)

umask 权限值 #使用umask指令可以查看或修改文件掩码

Los valores de permiso de los archivos y directorios realmente creados requieren una mayor conversión. Primero convierta los últimos tres dígitos octales de la máscara a binario y luego inviértalos bit a bit.

Luego realice una operación AND bit a bit en los valores de permiso predeterminados anteriores del nuevo archivo y el valor de permiso predeterminado del nuevo directorio, respectivamente, lo que obtenemos son los valores de permiso de los archivos y directorios que creamos.

También se puede entender que los bits de permiso que aparecen en la umask no aparecerán en los permisos finales.

Nota:  La máscara predeterminada para superusuarios es 0022 y la máscara predeterminada para usuarios normales es 0002.

3.5 permisos de directorio

  • Permisos de lectura:  si el usuario no tiene permisos de lectura para el directorio, el contenido del archivo en el directorio no se puede ver mediante el comando ls.
  • Permisos de escritura:  si el usuario no tiene permisos de escritura para el directorio, no puede crear ni eliminar archivos en el directorio mediante una serie de instrucciones.
  • Permisos ejecutables:  si el usuario no tiene permisos ejecutables para el directorio, no puede ingresar al directorio mediante el comando cd.

En este momento, surge un problema: siempre que el usuario tenga permisos de escritura para un determinado directorio, el archivo en el directorio se puede eliminar, independientemente de si el usuario tiene permisos de escritura para el archivo, lo que obviamente no es razonable. Como se muestra a continuación, tengo permisos de escritura para el directorio actual pero no tengo permisos de escritura para el archivo test.txt, pero la eliminación aún se realizó correctamente.

Para resolver este problema irrazonable, Linux introdujo el concepto de bits adhesivos.

3.6 Bit pegajoso

chmod +t 目录名

Después de agregar el bit adhesivo a un directorio, el último dígito del valor de permiso del directorio se convierte en el carácter "t".

En este momento, incluso si otro usuario tiene permisos de escritura para el directorio, no puede eliminar los archivos del directorio.

Cuando un directorio está configurado en el bit fijo, solo se puede acceder a los archivos del directorio mediante:

  • Eliminación de superusuario
  • Se elimina el propietario del directorio.
  • Se elimina el propietario del archivo.

Nota:  Aunque el bit adhesivo se agrega al directorio, si el usuario tiene permisos de escritura para el directorio, no afectará la creación de archivos en el directorio.

Supongo que te gusta

Origin blog.csdn.net/GG_Bruse/article/details/131706942
Recomendado
Clasificación