En Linux, cada proceso tiene varios bits de ID de usuario. ¿Cómo estos ID de usuario establecen permisos para el acceso a archivos? Este artículo toma UNIX como ejemplo para presentar brevemente cómo UNIX establece el bit de ID de usuario.
con una función de estadísticas para obtener información de estado del archivo, tales prototipos son:
int stat (const char * camino, struct stat * buf);
La estructura de la estructura stat:
struct stat {
dev_t st_dev; /* ID del dispositivo que contiene el archivo * /
ino_t st_ino; /* número de inodo * /
mode_t st_mode; /* protection * /
nlink_t st_nlink; /* número de enlaces duros * /
uid_t st_uid; /* ID de usuario del propietario * /
gid_t st_gid; /* ID de grupo del propietario * /
dev_t st_rdev; /* ID de dispositivo (si es un archivo especial) * /
off_t st_size; /* tamaño total, en Bytes * /
blksize_t st_blksize; /* blocksize para E /S del sistema de archivos * /
blkcnt_t st_blocks; /* número de 512B bloques asignados * /
time_t st_atime; /* hora del último acceso * /
time_t st_mtime; /* hora de la última modificación * /
time_t st_ctime; /* hora del último cambio de estado * /
};
parámetro buf del grupo saliente ID puede ser utilizado para obtener ST_UID, propietario del archivo ID st_gid representación, y los archivos de los propietarios.
También hay varios conjuntos de conceptos de ID en el proceso UNIX. Son el ID de usuario real, el ID de grupo de usuarios real, el ID de usuario válido, el ID de grupo de usuarios efectivo, etc. Cuando iniciamos un proceso, generalmente el ID de usuario efectivo de este proceso es el ID real del proceso (por ejemplo, inicio sesión con el usuario eric, este usuario válido es el ID correspondiente a mi eric). Sin embargo, cuando el "bit de ID de usuario establecido" está activado, la ID válida es la ID del propietario correspondiente al archivo de programa del proceso.
$ ls -l 1.txt
-rw ------- 1 root root 16 de abril 29 14:31 1.txt
Debajo del directorio actual Hay un archivo " 1.txt " es la raíz del propietario, y solo la raíz tiene permisos de lectura y escritura.
1 int main ()
2 {
3 int fd;
4 if ((fd = open (" 1.txt ", O_RDONLY)) == -1)
5 {
6 printf (" Error de apertura. \\ N ");
7 exit (-1);
8}
9 char buf [1024] = {0};
10 lecturas (fd, buf, 1024);
11 printf (buf);
12 printf (" \\ n ");
13}
Primero uso el comando su en el terminal para usar el usuario root. Gcc read.c -dominio. Consigue el programa principal.
# gcc read.c -omain
# exit
exit
$ main
No se pudo abrir.
Obviamente, el propietario de main también es root, pero el programa principal aún no puede abrir "1.txt", esto se debe a que el ID efectivo del proceso después del inicio principal es el ID de usuario real del proceso (es decir, el ID de la cuenta eric), y " 1.txt " solo tiene acceso de lectura y escritura al usuario root, por lo que la apertura falla.
Abra el bit de ID de usuario principal para abrir el comando de shell: chmod u + s main
Utilizo el programa c, el código principal es el siguiente:
1 struct stat Buf = {0};
2 stat (" main ", &buf);
3 buf.st_mode
Si el sistema Linux está comprometido, es probable que se filtren datos de privacidad personal y el
Durante la operación del sistema Linux, el borrado periódico de los archivos caducados puede liberar
En el sistema Linux, a veces está enchufado en el disco u, pero no se puede identificar, creo que mu
Al realizar la operación del sistema Linux, no habrá ninguna indicación de espacio
¿Qué puedo hacer si no puedo acceder a mysql en Linux?
Paso Linux desconexión manual Firewall
Cómo configurar yum.conf bajo el sistema Linux
Configuración de Ubuntu10.10 método de entorno R
¿Cómo hacer una captura de pantalla en la interfaz de inicio de sesión del sistema Linux?
RHEL6 cambio asm nombre del disco por el método de udev
¿Cómo usa Linux las herramientas para cifrar datos?
Linux reiniciar oracle database tres consejos
Usando psensor para monitorear la temperatura de Linux
Cómo cerrar la sesión del usuario de inicio de sesión en Linux
Linux /Ubuntu 11.10 Cómo crear el entorno de desarrollo Android4.0.3
Obtenga fácilmente varios idiomas en Windows 8
Aparece la pantalla azul del sistema WinScreen. Solución de código de error BlueScreen
¿Has oído hablar de los nuevos trucos de Google?
Problemas relacionados con el sistema dual: cómo iniciar
Cómo configurar el tema del escritorio en Windows XP