Bases de Linux et points d'entretien à haute fréquence

utilisateurs, groupes d'utilisateurs, autorisations

Linux est un système d'exploitation multi-utilisateurs. Les utilisateurs généraux sont affectés à un groupe d'utilisateurs au début de la création et bénéficient d'autorisations générales. Un système d'exploitation n'a qu'un seul superutilisateur nommé root, qui appartient à un groupe racine et possède la plus haute autorité.
insérer la description de l'image ici

utilisateur

racine

De nombreuses autorisations avancées telles que useradd, chown et autres autorisations avancées ne peuvent être utilisées que par les utilisateurs root. À l'heure actuelle, si les utilisateurs ordinaires souhaitent ces autorisations avancées, ils doivent utiliser le mot-clé "sudo" pour indiquer que la commande est exécutée en tant que root .

Commandes pour les privilèges root communs

useradd + passwd Ajouter un utilisateur et modifier le mot de passe

useradd -m user_name
passwd user_name
  1. -m signifie créer un groupe d'utilisateurs nommé par nom_utilisateur lors de la création d'un nom_utilisateur commun, l'utilisateur est l'utilisateur initial du groupe et l'utilisateur ne peut pas quitter ce groupe, et initialiser son répertoire personnel /home/username avec le fichier sous /etc/skel /
  2. Il doit y avoir une commande passwd ! Sinon, le nouvel utilisateur ne pourra pas être utilisé normalement

userdel supprimer l'utilisateur

userdel user_name
userdel user_name -t 

Sans -t, seul le nom de l'utilisateur sera supprimé, et le dossier de l'utilisateur correspondant ne sera pas supprimé de /home. Avec -t, le dossier de l'utilisateur sera supprimé en même temps

usermod modifie le compte d'un utilisateur

Il est préférable de ne pas utiliser cette commande, car si certains logiciels ont été installés dans le répertoire personnel, cela entraînera des problèmes d'indexation des chemins logiciels ! ! !

  • -l Renommer l'utilisateur. Il convient de noter que le nom du répertoire personnel de l'utilisateur dans /home ne changera pas et devra être modifié manuellement.
  • -g modifie le groupe dans lequel se trouve l'utilisateur, par exemple usermod -g friends lion modifie le groupe de l'utilisateur lion en tant qu'amis.
  • -G permet à l'utilisateur d'ajouter plusieurs groupes à la fois, tels que usermod -G friends,foo,bar lion .
  • -a -G vous permettra de quitter le groupe d'origine. Si vous ne souhaitez pas faire cela, vous devez ajouter le paramètre -a, ce qui signifie ajouter.

su passer à un autre utilisateur

su user_name

groupe d'utilisateurs

Commandes pour les privilèges root communs

groupadd pour créer un groupe, groupdel pour supprimer un groupe, groups pour afficher le groupe de l'utilisateur

groupadd user_name
groupdel user_name
groups user_name

Note:

  1. Tous les noms d'utilisateurs et informations sur les groupes d'utilisateurs sont stockés dans le fichier /etc/passwd

    Format:

    user_name:passwd:user_id:group_id:description:home_path:login_shell_path
    

    Nom UID:0—root; 1 à 499 – utilisateur système ; 500~65535—utilisateur général ,L'utilisateur système ne peut pas bouger ! ! !

  2. Le répertoire personnel de l'utilisateur root est /root/ et le répertoire personnel de l'utilisateur normal est /home/username/

  3. Le fichier /etc/shadow enregistre les mots de passe de connexion de tous les utilisateurs

  4. Comment vérifier l'utilisateur actuel et les autorisations

    Le terminal shell commence par # en tant que super utilisateur, $ commence par un utilisateur normal et utilise whoami pour renvoyer le nom d'utilisateur actuel

Autorisations de fichiers

Commandes privilégiées non root

Afficher les autorisations de fichiers

ls -l dir_path-or-file_path

-l répertorie (au format une seule colonne) le mode de fichier, y compris le numéro de lien du fichier, le nom du propriétaire, le nom du groupe, la taille du fichier (en octets), les informations d'heure et le nom du fichier.

Par exemple output drwxr-xr-x 3 root root 17 May 6 00:14 .config, l’interprétation de ces informations est la suivante :

  • drwxr-xr-x : type de fichier et autorisation, le premier chiffre est le champ de type de fichier (y compris d : répertoire, - : fichier, l : fichier de lien), les 9 derniers chiffres sont le champ d'autorisation de fichier (chaque 3 chiffres est un groupe, un total de 3 groupes, chaque groupe représente les autorisations de fichier pour le propriétaire du fichier, le groupe auquel il appartient et d'autres personnes. Les 3 chiffres dans un groupe d'autorisations sont les autorisations r, w et x, indiquant les autorisations lisibles, inscriptible et exécutable)
  • 3 : Nombre de liens
  • racine : propriétaire du fichier
  • racine : le groupe auquel il appartient
  • 17 : taille du fichier
  • 6 mai 00h14 : heure à laquelle le fichier a été modifié pour la dernière fois
  • .config : nom du fichier

Commandes pour les privilèges root communs :

chgrp modifier le groupe du fichier

changer de groupe~

chgrp bar file.txt 

Indique que le groupe du fichier file.txt est remplacé par la barre de groupe

chown change le propriétaire du fichier

chown -R 用户名称:用户组名称 文件或目录
  • -R Définir de manière récursive les sous-répertoires et sous-fichiers sous le dossier cible

    Autrement dit, les autorisations de tous les fichiers et répertoires du sous-répertoire sont mises à jour pour cet utilisateur et ce groupe d'utilisateurs.

chmod modifie les autorisations du propriétaire du fichier, du groupe et des autres

chmod -R 655 /mnt/sda/smm/dataset/ScanNet/
chmod -R o+rw /mnt/sda/smm/dataset/ScanNet/

655 indique que l'autorisation de modifier tous les fichiers du dossier ScanNet est : propriétaire rw-, même groupe d'utilisateurs rx, autres rx

o+rw signifie que d'autres personnes augmentent les autorisations r et w

Description du paramètre :

  • Utiliser des lettres pour attribuer des autorisations

    u : L'abréviation de user, qui désigne l'utilisateur, indiquant le propriétaire.

    g : L'abréviation de groupe, la signification de groupe, signifie groupe d'utilisateurs.

    o : L'abréviation de other, qui désigne les autres utilisateurs.

    a : L'abréviation de all, qui désigne tous les utilisateurs.

    + : Signe plus, ce qui signifie ajouter une autorisation.

    - : Signe moins, indiquant la suppression des autorisations.

    = : Le signe égal signifie l'attribution d'autorisations.

  • Détermination des autorisations à l'aide de chiffres

    autorisations nombre
    r 4
    w 2
    X 1

    Les autorisations d'un répertoire sont des autorisations sur sa liste de fichiers. Par conséquent, l'autorisation r du répertoire signifie que la liste des fichiers peut être lue ; l'autorisation w signifie que la liste des fichiers peut être modifiée, notamment en ajoutant et en supprimant des fichiers et en modifiant le nom du fichier ; l'autorisation x peut faire du répertoire un répertoire de travail, et l'autorisation x est r Et la base des autorisations w, si vous ne pouvez pas faire d'un répertoire un répertoire de travail, vous ne pouvez pas lire la liste des fichiers et modifier la liste des fichiers

Édition et manipulation de fichiers

Rechercher des fichiers dans les répertoires, rechercher le contenu des fichiers dans les fichiers

find - Rechercher des fichiers dans un répertoire

Rechercher par nom de fichier et chemin racine

find -name "file.txt" --> 当前目录以及子目录下通过名称查找文件
find . -name "syslog" --> 当前目录以及子目录下通过名称查找文件
find /var/log -name "*syslog*" --> 查找包含syslog的文件 复制代码

Caractères spéciaux pouvant être utilisés dans les expressions régulières dans ""

Rechercher par taille de fichier

find /var -size +10M --> /var 目录下查找文件大小超过 10M 的文件

Rechercher par heure du dernier accès au fichier

find -name "*.txt" -atime -7  --> 近7天内访问过的.txt结尾的文件

Rechercher uniquement des répertoires ou des fichiers

find . -name "file" -type f  --> 只查找当前目录下的file文件find . -name "file" -type d  --> 只查找当前目录下的file目录复制代码

Action Trouver les résultats

find -name "*.txt" -printf "%p - %u" --> 找出所有后缀为txt的文件,并按照 %p - %u格式打印,其中%p=文件名,%u=文件所有者
find -name "*.jpg" -delete --> 删除当前目录以及子目录下所有.jpg为后缀的文件,不会有删除提示,因此要慎用
find -name "*.c" -exec chmod 600 {} ; --> 对每个.c结尾的文件,都进行 -exec 参数指定的操作,{} 会被查找到的文件替代,; 是必须的结尾
find -name "*.c" -ok chmod 600 {} ; --> 和上面的功能一直,会多一个确认提示复制代码

grep - correspond globalement à une expression régulière dans un fichier et imprime sur le shell

grep -E [Pp]ath /etc/profile

Indique d'imprimer le contenu du fichier de /etc/profile correspondant toujours au chemin ou au chemin d'accès au shell

Description du paramètre :

  • -E est suivi du contenu de l'expression régulière incluse dans "[]"

    * correspond à 0 ou plusieurs caractères

    ? correspond à n'importe quel caractère

    [liste] correspond à n'importe quel caractère de la liste

    [ ^list] correspond à n'importe quel caractère autre que n'importe quel caractère unique de la liste

    [c1-c2] correspond à n'importe quel caractère de c1-c2 tel que : [0-9]

    {string1,string2,…} correspond à l'un des string1 ou string2 (ou plus)

    {c1...c2} correspond à tous les caractères de c1-c2 tels que {1...10}

  • -i ignore la casse, grep -i chemin /etc/profile

  • -n affiche le numéro de ligne, grep -n chemin /etc/profile

  • -v affiche uniquement les lignes où le texte recherché ne se trouve pas, grep -v path /etc/profile

  • -r recherche récursive, grep -r bonjour /etc, il existe aussi une commande rgrep sous Linux, qui équivaut à grep -r

Liaison et suppression de fichiers

Comprenez comment les fichiers Linux sont stockés avant de comprendre les liens de fichiers. Le stockage d'un fichier Linux comprend trois parties : le nom du fichier, le contenu du fichier et l'autorisation. Chaque nom de fichier est lié au contenu du fichier via l'identifiant d'inode dans la liste des noms de fichier.

ln - établir un lien

Il existe deux types de liens sous Linux : les liens physiques (liens physiques) et les liens logiciels (liens symboliques).

insérer la description de l'image ici

  • Lien physique (lien d'entité)
ln file1 hard_ln1

Créez un lien physique nommé hard_ln1 pour créer un lien vers l'inode correspondant au fichier1. Lors de la suppression du contenu du fichier correspondant à hard_ln1, le contenu du fichier ne sera supprimé que lorsque le numéro de référence de l'inode correspondant est 0

  • Lien logiciel (lien symbolique)
ln -s file1 soft_ln1

Créez un lien symbolique nommé soft_ln1, lien vers fichier1, affichez le contenu du fichier1, mais en fait l'inode du fichier2 est différent de celui du fichier1. Si nous supprimons soft_ln1, file1 ne sera pas affecté, mais si nous supprimons file1, soft_ln1 deviendra un lien mort, car le fichier pointé a disparu.

rm - supprimer un fichier

Supprimer des fichiers et des répertoires. Comme il n'y a pas de corbeille sous Linux, il est très difficile de les récupérer une fois supprimés, vous devez donc être prudent.

rm file_path/file_name

【Paramètres communs】

  • -i Confirme à l'utilisateur s'il doit supprimer ;
  • -f suppression forcée du fichier ;
  • -r Supprimer des dossiers de manière récursive, la fameuse opération de suppression rm -rf.

réorienter

redirection d'entrée

A < B

Prenez B comme entrée de la commande A et utilisez le contenu de name.csv comme entrée de cat comme suit, et le résultat de son opération est le même que celui de cat name.csv

cat < name.csv

redirection de sortie

Couvert>, Non couvert>>

cut -d , -f 1 notes.csv > name.csv

La commande ci-dessus signifie couper le fichier notes.csv via "," et rediriger la première partie du résultat de la coupe vers le fichier name.csv. Si le fichier de sortie n'existe pas, il en créera un nouveau, si le fichier de sortie existe déjà, il sera écrasé.

cut -d , -f 1 notes.csv >> name.csv

La commande ci-dessus ajoutera le nom à name.csv.

redirection de canal

A | B signifie faire du résultat de l’instruction A la cible de l’instruction B :

grep log -Ir /var/log | cut -d : -f 1 | sort | uniq

La commande ci-dessus signifie rechercher le texte /var/log dans le dossier log, puis utiliser le texte du journal trouvé comme cible de la commande cut, et utiliser cut pour obtenir la première partie coupée comme cible de la commande uniq pour déduplication

Avis:

  1. Les paramètres de grep indiquent
    • -r signifie récursivité, -I est utilisé pour exclure les binaires

Installer à l'aide d'un référentiel de logiciels

Le suffixe du progiciel de la famille Red Hat est généralement .rpm, et le suffixe du progiciel de la famille Debian est .deb.

yum est l'outil de gestion de packages par défaut dans CentOS, adapté à la famille Red Hat.

apt est l'outil de gestion de paquets par défaut dans Ubuntu, adapté à la famille Debian.

Utilisez Cmake pour compiler le code source

Si vous souhaitez utiliser un logiciel qui ne se trouve pas dans l'entrepôt Yum, vous devez trouver vous-même le code source du logiciel, compiler et installer le code source pour l'utiliser.

Cmake est un outil de compilation avancé qui peut compiler le code source en fichiers binaires exécutables. Les étapes de compilation spécifiques sont les suivantes :

  1. Téléchargez le code source ou écrivez le vôtre

    Par exemple, un fichier hello.cpp avec "bonjour mot !" est le code source

  2. Écrivez CMakeLists.txt

    Équivalent à un fichier d'instructions, demandant à cmake d'exécuter les commandes dans CMakeLists.txt une par une

  3. Compilez et générez des fichiers exécutables avec la commande cmake

  4. Exécutez le fichier exécutable pour vérifier que le logiciel est installé avec succès

Comprendre CMakeLists.txt

Ce qui suit est un CMakeLists.txt

#  CMakeLists.txt
# top-level CMake configuration file
cmake_minimum_required(VERSION 3.5)

project(CUT_PURSUIT_SEG)


#------------------------------------------------------------------------------
# internal cmake settings
#------------------------------------------------------------------------------
set(CMAKE_COLOR_MAKEFILE ON)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
set(CMAKE_MACOSX_RPATH ON)
include(FeatureSummary)

#------------------------------------------------------------------------------
# General settings
#------------------------------------------------------------------------------
set (CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -std=c++11")

#------------------------------------------------------------------------------
# actual library
#------------------------------------------------------------------------------
add_subdirectory(src)

"cmake_minimum_required" est le mot-clé de l'instruction, "()" est la variable transmise

Ensuite, expliquez quelques mots-clés et paramètres de commande qui doivent être maîtrisés.

Mots-clés d'instruction impliqués dans CMakeLists.txt

PROJET

Il est utilisé pour spécifier le nom du projet et le langage pris en charge. L'exemple suivant indique que le nom du projet est HELLO et que les langages de compilation pris en charge sont C++ et JAVA.

PROJECT (HELLO CXX JAVA)

Avis:

  • Ce mot-clé définit implicitement deux variables PROJECT_BINARY_DIR et PROJECT_SOURCE_DIR . L'exemple définit les variables HELLO_BINARY_DIR et HELLO_SOURCE_DIR.

ENSEMBLE

Il permet d'afficher la variable spécifiée, comme le montre l'exemple suivant : 2 chemins de fichiers main.cpp et fun1.cpp sont stockés dans le paramètre SRC_LSIT

SET (SRC_LSIT main.cpp fun1.cpp)

Avis:

  • Si le fichier contient des caractères spéciaux, vous devez utiliser ""
  • Mots-clés d'instruction (variable 1, variable 2) -- les mots-clés d'instruction ne sont pas sensibles à la casse, les paramètres et les variables sont sensibles à la casse

MESSAGE

Il est utilisé pour spécifier de fournir des informations personnalisées aux utilisateurs finaux , comme le montre l'exemple suivant.

SATUS >> 在shell向用户输出前缀为 '--'的info, eg: '-- Generating done'
FATAL_ERROR >> 立即终止所有cmake过程
SEND_ERROR >> cmake过程产生错误, 过程被跳过

ADD_EXECUTABLE

Il est utilisé pour spécifier de générer un fichier exécutable à l'utilisateur , ce qui signifie regrouper tous les fichiers inclus dans la variable SRC_LIST et générer le fichier exécutable hello_exe.

ADD_EXECUTABLE(hello_exe ${SRC_LIST})

Avis:

  • ${} signifie prendre la valeur de la variable dans {}

ADD_SUBDIRECTORY

Utilisé pour spécifier le chemin du sous-dossier , ajouter ~/proj/src/ au répertoire du projet, compiler le fichier binaire ".bin" généré et le placer sous ~/proj/bin/

 ADD_SUBDIRECTORY(src bin)

Compiler le code source d'ingénierie

Si vous souhaitez simplement afficher « bonjour mot ! » à l'écran, vous pouvez complètement ignorer cette section, mais si vous souhaitez construire un projet à grande échelle, tel que le développement d'un logiciel de reconnaissance vocale, alors l'ingénierie du code source est indispensable. ayez du talent pour vous !

En supposant que tous vos fichiers de projet se trouvent dans le dossier ~/proj, la disposition suggérée de votre dossier est la suivante :

proj
	bin/  编译好的可执行
	src/  存放proj的源代码
	  CMakeLists.txt  编写编译要执行的指令
	doc/  放工程文档
	CMakeLists.txt  一般用来把目录src/添加到cmake编译查询路径中
	READMD.md
	run_proj.sh  运行项目的脚本文件

Si vous avez terminé tous les fichiers du projet, emballez simplement le dossier proj pour le client, une fois que le client a extrait le dossier proj, exécutez la commande suivante

cd proj
mkdir build && cd build
cmake .. -参数1= -参数2=  && make

proj/CMakeLists.txt est utilisé comme entrée de la commande cmake, et les résultats de la compilation make seront tous placés sous proj/build, formant la structure de répertoires suivante

proj
	build/
        - CMakeCache.txt 
        - cmake_install.cmake 
        - CMakeFiles/
        - Makefile
	bin/  编译好的可执行
	src/  存放proj的源代码
	    - CMakeLists.txt  编写编译要执行的指令
	doc/  放工程文档
	CMakeLists.txt  一般用来把目录src/添加到cmake编译查询路径中
	READMD.md
	run_proj.sh  运行项目的脚本文件

Connexion SSH au serveur distant

Supposons que le serveur intranet A et le serveur extranet B

Établissez une connexion SSH et connectez-vous au serveur sans mot de passe

En transmettant la clé publique ssh entre A et B, une connexion sans mot de passe peut être réalisée. Les étapes spécifiques sont les suivantes :

  1. Générer une clé sur A

    Entrez la commande suivante dans le shell de A pour générer la clé publique et la clé privée de SSH

ssh-keygen

Ensuite, le système demandera s'il doit utiliser le chemin par défaut pour générer, et le novice pourra appuyer jusqu'au bout sur "Entrée" pour terminer la génération.

  1. A générera la clé publique de B

    Entrez toujours la commande suivante dans le shell de A

ssh-copy-id [param] B_username@B_ip

Remarque : la signification de certains paramètres

  • -i - la clé générée par le chemin autre que celui par défaut

    par exemple : -i ~/.ssh/id_rsa.pub

  • -p - Le port SSH de B n'est pas 22

    par exemple : -p 3085

  1. Connectez-vous au serveur B sur A sans utiliser ssh
ssh B_username@B_ip

scp - copiez en toute sécurité des fichiers entre différents serveurs

Basé sur la connexion SSH, la transmission cryptée de fichiers entre deux serveurs peut être réalisée. La commande suivante peut réaliser le transfert de fichiers du serveur A vers le serveur B.

scp -P B_port_num -r A_file-path B_username@B_ip:B_target_dir

Note:

  1. paramètre scp
  • -P - le port du serveur cible

    -P 3085

  • -r - dossier de ressources

    -r chemin_répertoire

  1. Si l'erreur "Autorisation refusée" est signalée, cela peut être dû au fait que la connexion SSH entre AB et AB n'a pas été établie à l'avance. Vous pouvez consulter la section précédente pour établir d'abord une connexion SSH, puis scp pour transférer des fichiers.

    Entrez toujours la commande suivante dans le shell de A

ssh-copy-id [param] B_username@B_ip

Remarque : la signification de certains paramètres

  • -i - la clé générée par le chemin autre que celui par défaut

    par exemple : -i ~/.ssh/id_rsa.pub

  • -p - Le port SSH de B n'est pas 22

    par exemple : -p 3085

  1. Connectez-vous au serveur B sur A sans utiliser ssh
ssh B_username@B_ip

scp - copiez en toute sécurité des fichiers entre différents serveurs

Basé sur la connexion SSH, la transmission cryptée de fichiers entre deux serveurs peut être réalisée. La commande suivante peut réaliser le transfert de fichiers du serveur A vers le serveur B.

scp -P B_port_num -r A_file-path B_username@B_ip:B_target_dir

Note:

  1. paramètre scp
  • -P - le port du serveur cible

    -P 3085

  • -r - dossier de ressources

    -r chemin_répertoire

  1. Si l'erreur "Autorisation refusée" est signalée, cela peut être dû au fait que la connexion SSH entre AB et AB n'a pas été établie à l'avance. Vous pouvez consulter la section précédente pour établir d'abord une connexion SSH, puis scp pour transférer des fichiers.

(mis à jour continuellement)

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45549370/article/details/124937854
conseillé
Classement