{"id":353646,"date":"2024-08-27T09:45:40","date_gmt":"2024-08-27T09:45:40","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/desactiver-des-comptes-utilisateurs-linux\/"},"modified":"2024-10-13T19:07:20","modified_gmt":"2024-10-13T19:07:20","slug":"desactiver-des-comptes-utilisateurs-linux","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/desactiver-des-comptes-utilisateurs-linux\/","title":{"rendered":"Guide complet pour d\u00e9sactiver des comptes utilisateurs sous Linux pour les professionnels de l&rsquo;informatique"},"content":{"rendered":"<p>La gestion des comptes d&rsquo;utilisateurs est un aspect crucial de l&rsquo;administration des syst\u00e8mes, en particulier lorsqu&rsquo;il s&rsquo;agit de garantir la s\u00e9curit\u00e9 et l&rsquo;int\u00e9grit\u00e9 d&rsquo;un environnement Linux. <strong>D\u00e9sactiver des comptes utilisateurs<\/strong> qui ne sont plus utilis\u00e9s ou qui sont potentiellement compromis est une pratique courante parmi les professionnels de l&rsquo;informatique et les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\" target=\"_blank\" rel=\"noopener\">fournisseurs de services g\u00e9r\u00e9s (MSP).<\/a><\/p>\n<p>Cet article pr\u00e9sente un script complet con\u00e7u pour d\u00e9sactiver les comptes d&rsquo;utilisateurs sous Linux, en fournissant une compr\u00e9hension approfondie de sa fonctionnalit\u00e9, des cas d&rsquo;utilisation et des bonnes pratiques.<\/p>\n<h2>Comprendre l&rsquo;importance de la gestion des comptes d&rsquo;utilisateurs<\/h2>\n<p>Dans toute infrastructure informatique, la gestion des comptes utilisateurs est primordiale pour <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/check-list-de-securite-informatique-pour-proteger-votre-entreprise\" target=\"_blank\" rel=\"noopener\">maintenir la s\u00e9curit\u00e9<\/a> et <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\" target=\"_blank\" rel=\"noopener\">l&rsquo;efficacit\u00e9<\/a> op\u00e9rationnelle. L&rsquo;acc\u00e8s non autoris\u00e9 ou l&rsquo;utilisation abusive des comptes d&rsquo;utilisateurs peut entra\u00eener des violations de donn\u00e9es, la perte d&rsquo;informations sensibles et une \u00e9ventuelle indisponibilit\u00e9 du syst\u00e8me. Par cons\u00e9quent, la d\u00e9sactivation des comptes d&rsquo;utilisateurs inactifs ou compromis est une mesure proactive pour prot\u00e9ger le syst\u00e8me.<\/p>\n<h2>Contexte du script<\/h2>\n<p>Le script que nous examinons est con\u00e7u pour d\u00e9sactiver un compte d&rsquo;utilisateur sp\u00e9cifi\u00e9 en rempla\u00e7ant son shell de connexion par \/sbin\/nologin et en verrouillant le compte. Ce processus emp\u00eache l&rsquo;utilisateur de se connecter tout en pr\u00e9servant le compte en vue d&rsquo;une \u00e9ventuelle r\u00e9activation ou \u00e0 des fins d&rsquo;audit. Cette approche est pr\u00e9f\u00e9r\u00e9e \u00e0 la suppression pure et simple, car elle permet de conserver intact l&rsquo;historique du compte et les fichiers associ\u00e9s.<\/p>\n<h2>Le script\u00a0:<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/usr\/bin\/env bash\r\n\r\n# Description: Disables a user account by changing its shell to \/sbin\/nologin and locking the account.\r\n#\r\n# Release Notes: Initial Release\r\n# By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n# Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n# Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n# Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n# Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n# Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n# Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n# EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#\r\n# Below are all the valid parameters for this script.\r\n#\r\n# Preset Parameter: \"ReplaceMeWithUsernameToDisable\"\r\n#   Username of the user you would like to disable.\r\n#\r\n\r\n# Help text function for when invalid input is encountered\r\nprint_help() {\r\n  printf '\\n### Below are all the valid parameters for this script. ###\\n'\r\n  printf '\\nPreset Parameter: \"ReplaceMeWithUsernameToDisable\" \\n'\r\n  printf '\\t%s\\n' \"Username of the user you would like to disable.\"\r\n}\r\n\r\n# Determines whether or not help text is nessessary and routes the output to stderr\r\ndie() {\r\n  local _ret=\"${2:-1}\"\r\n  echo \"$1\" &gt;&amp;2\r\n  test \"${_PRINT_HELP:-no}\" = yes &amp;&amp; print_help &gt;&amp;2\r\n  exit \"${_ret}\"\r\n}\r\n\r\n_arg_userToDisable=\r\n\r\n# Grabbing the parameters and parsing through them.\r\nparse_commandline() {\r\n  while test $# -gt 0; do\r\n    _key=\"$1\"\r\n    case \"$_key\" in\r\n    --help | -h)\r\n      _PRINT_HELP=yes die 0\r\n      ;;\r\n    --*)\r\n      _PRINT_HELP=yes die \"FATAL ERROR: Got an unexpected argument '$1'\" 1\r\n      ;;\r\n    *)\r\n      if [[ -z $_arg_userToDisable ]]; then\r\n        _arg_userToDisable=$1\r\n      else\r\n        _PRINT_HELP=yes die \"FATAL ERROR: Got an unexpected argument '$1' but user '$_arg_userToDisable' was already specified!\" 1\r\n      fi\r\n      ;;\r\n    esac\r\n    shift\r\n  done\r\n}\r\n\r\n# Parse the command-line arguments passed to the script.\r\nparse_commandline \"$@\"\r\n\r\nif [[ -n $usernameToDisable ]]; then\r\n  _arg_userToDisable=\"$usernameToDisable\"\r\nfi\r\n\r\n# Check if the username to disable is empty and display an error if it is.\r\nif [[ -z $_arg_userToDisable ]]; then\r\n  _PRINT_HELP=yes die \"[Error] The username of the user you would like to disable is required!'\" 1\r\nfi\r\n\r\n# Validate the username to ensure it only contains lowercase letters, digits, hyphens, and underscores.\r\nif [[ ! $_arg_userToDisable =~ ^[a-z0-9_-]+$ ]]; then\r\n  _PRINT_HELP=no die \"[Error] Invalid characters detected in '$_arg_userToDisable' usernames can only have a-z, 0-9 or -, _ characters!\" 1\r\nfi\r\n\r\n# Search for the user in the \/etc\/passwd file and ensure the user account is not already set to 'nologin'.\r\npasswdEntry=$(grep -w \"$_arg_userToDisable\" \/etc\/passwd)\r\nif [[ -z $passwdEntry ]]; then\r\n  _PRINT_HELP=no die \"[Error] User '$_arg_userToDisable' does not exist.\" 1\r\nfi\r\n\r\nunlockedaccount=$(passwd -S \"$_arg_userToDisable\" | cut -f2 -d \" \" | grep -v \"L\")\r\nnologin=$(grep -w \"$_arg_userToDisable\" \/etc\/passwd | cut -d \":\" -f7 | grep \"nologin\")\r\nif [[ -z $unlockedaccount &amp;&amp; -n $nologin ]]; then\r\n  _PRINT_HELP=no die \"[Error] User '$_arg_userToDisable' is already disabled. $nologin\" 1\r\nfi\r\n\r\n# Check if the 'sudo' command is available on the system.\r\nsudoAvailable=$(command -v sudo)\r\n\r\n# If 'sudo' is available, check if the specified user has sudo privileges and is not explicitly forbidden from using sudo.\r\nif [[ -n $sudoAvailable ]]; then\r\n  sudoAccess=$(sudo -l -U \"$_arg_userToDisable\" | grep -v \"is not allowed to run sudo\")\r\nfi\r\n\r\n# Initialize a flag to check for the availability of another administrative user.\r\nanotherAdminAvaliable=false\r\n\r\n# If the user to disable is 'root' or if they have sudo access, proceed to check for other admin users.\r\nif [[ \"$_arg_userToDisable\" == \"root\" || -n $sudoAccess ]]; then\r\n # Fetch all user accounts with UID &gt;= 1000 (typically regular users) and exclude the specified user and 'nobody'.\r\n  allAccounts=$(cut -d \":\" -f1,3 \/etc\/passwd | grep -v -w \"$_arg_userToDisable\" | grep -v \"nobody\" | awk -F ':' '$2 &gt;= 1000 {print $1}')\r\n\r\n  # If the user to disable is not 'root', add 'root' to the list of all accounts if it is enabled and not set to 'nologin'.\r\n  if [[ ! \"$_arg_userToDisable\" == \"root\" ]]; then\r\n    enabled=$(grep -w \"root\" \/etc\/passwd | grep -v \"nologin\")\r\n    if [[ -n $enabled ]]; then\r\n      allAccounts=$(echo \"$allAccounts\"; echo \"root\")\r\n    fi\r\n  fi\r\n\r\n  # Iterate over each account to check if there are other admin users available.\r\n  for account in $allAccounts; do\r\n    # Skip checking accounts if 'sudo' is not available.\r\n    if [[ -z $sudoAvailable ]]; then\r\n      continue\r\n    fi\r\n\r\n    # Check if the current account has sudo access.\r\n    sudoAccess=$(sudo -l -U \"$account\" | grep -v \"is not allowed to run sudo\")\r\n    if [[ -z $sudoAccess ]]; then\r\n      continue\r\n    fi\r\n\r\n    # Check if the current account is enabled (i.e., not set to 'nologin').\r\n    accountEnabled=$(grep -w \"$account\" \/etc\/passwd | grep -v \"nologin\")\r\n    if [[ -z $accountEnabled ]]; then\r\n      continue\r\n    fi\r\n\r\n    # If an admin account is available and enabled, set the flag to true.\r\n    anotherAdminAvaliable=\"true\"\r\n  done\r\n\r\n  # If no other admin users are available, output an error and suggest creating another admin account.\r\n  if [[ $anotherAdminAvaliable == \"false\" ]]; then\r\n    _PRINT_HELP=no die \"[Error] No other admins available. Please create another account to administer the system.\" 1\r\n  fi\r\nfi\r\n\r\n# Attempt to change the shell of the user to \/sbin\/nologin to disable login capabilities.\r\nif ! usermod \"$_arg_userToDisable\" -s \/sbin\/nologin; then\r\n  _PRINT_HELP=no die \"[Error] Failed to change the shell for '$_arg_userToDisable' to \/sbin\/nologin.\" 1\r\nfi\r\n\r\n# Attempt to lock the user account using usermod.\r\nif ! usermod -L \"$_arg_userToDisable\"; then\r\n  _PRINT_HELP=no die \"[Error] Failed to lock '$_arg_userToDisable' using usermod.\" 1\r\nfi\r\n\r\n# Check if the user has been successfully disabled by confirming 'nologin' is set.\r\ndisabledUser=$(grep -w \"$_arg_userToDisable\" \/etc\/passwd | grep \"nologin\")\r\nif [[ -n $disabledUser ]]; then\r\n  echo \"Successfully disabled '$_arg_userToDisable'.\"\r\nelse\r\n  _PRINT_HELP=no die \"[Error] Failed to disable '$_arg_userToDisable'.\" 1\r\nfi\r\n<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"blog-cta-new blog-cta-style-1\"><div class=\"cta-left\"><h2><\/h2><p><\/p><\/div><div class=\"cta-right\"><a class=\"button\" href=\"\"><\/a><\/div><\/div>\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<h3><em>Configuration initiale et analyse des param\u00e8tres<\/em><\/h3>\n<p>Le script commence par d\u00e9finir une fonction de texte d&rsquo;aide (print_help) et une fonction die (die) pour g\u00e9rer les erreurs et afficher les messages pertinents. La fonction parse_commandline traite les arguments de la ligne de commande pour identifier le nom d&rsquo;utilisateur du compte \u00e0 d\u00e9sactiver.<\/p>\n<h3><em>Validation du compte utilisateur<\/em><\/h3>\n<p>Le script v\u00e9rifie ensuite si le nom d&rsquo;utilisateur sp\u00e9cifi\u00e9 est valide et s&rsquo;il existe dans le syst\u00e8me. Il s&rsquo;assure que le nom d&rsquo;utilisateur ne contient que des caract\u00e8res autoris\u00e9s (lettres minuscules, chiffres, tirets et traits de soulignement) et v\u00e9rifie son existence dans le fichier \/etc\/passwd.<\/p>\n<h3><em>S&rsquo;assurer qu&rsquo;il n&rsquo;y a pas de conflit avec les comptes d&rsquo;administration<\/em><\/h3>\n<p>Le script v\u00e9rifie en outre si l&rsquo;utilisateur \u00e0 d\u00e9sactiver dispose de privil\u00e8ges administratifs. Il v\u00e9rifie s&rsquo;il existe d&rsquo;autres comptes d&rsquo;administration disponibles afin d&rsquo;\u00e9viter le verrouillage de l&rsquo;acc\u00e8s administratif essentiel.<\/p>\n<h3><em>D\u00e9sactivation du compte utilisateur<\/em><\/h3>\n<p>Enfin, le script d\u00e9sactive le compte utilisateur en rempla\u00e7ant le shell par \/sbin\/nologin et en verrouillant le compte. Il v\u00e9rifie le succ\u00e8s de ces op\u00e9rations et fournit un retour d&rsquo;information.<\/p>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Prenons l&rsquo;exemple d&rsquo;un professionnel de l&rsquo;informatique qui doit d\u00e9sactiver le compte d&rsquo;un employ\u00e9 qui a quitt\u00e9 l&rsquo;entreprise. Le script fournit une m\u00e9thode rationnelle et efficace pour s&rsquo;assurer que le compte est d\u00e9sactiv\u00e9 sans le supprimer. Cela permet \u00e0 l&rsquo;\u00e9quipe informatique de conserver les donn\u00e9es de l&rsquo;utilisateur et l&rsquo;historique de son compte \u00e0 des fins de conformit\u00e9 et d&rsquo;audit.<\/p>\n<h2>Comparaisons avec d&rsquo;autres m\u00e9thodes<\/h2>\n<p>L&rsquo;approche traditionnelle pour d\u00e9sactiver un compte d&rsquo;utilisateur peut impliquer de modifier manuellement le fichier \/etc\/passwd ou d&rsquo;ex\u00e9cuter plusieurs commandes. Ce script automatise le processus, r\u00e9duisant le risque d&rsquo;erreur humaine et garantissant la coh\u00e9rence entre les diff\u00e9rents syst\u00e8mes.<\/p>\n<h2>FAQ<\/h2>\n<h3>Q\u00a0: Ce script peut-il supprimer un compte d&rsquo;utilisateur ?<\/h3>\n<p>R\u00a0: Non, le script ne fait que d\u00e9sactiver le compte en modifiant le shell et en le verrouillant. La suppression d&rsquo;un compte n\u00e9cessiterait des commandes suppl\u00e9mentaires.<\/p>\n<h3>Q\u00a0: Est-il possible de d\u00e9sactiver le compte root en toute s\u00e9curit\u00e9 ?<\/h3>\n<p>R\u00a0: La d\u00e9sactivation du compte root peut rendre le syst\u00e8me ing\u00e9rable. Le script inclut des v\u00e9rifications pour s&rsquo;assurer qu&rsquo;un autre compte administrateur est disponible avant de poursuivre.<\/p>\n<h3>Q\u00a0: Que se passe-t-il si le compte d&rsquo;utilisateur est d\u00e9j\u00e0 d\u00e9sactiv\u00e9 ?<\/h3>\n<p>R\u00a0: Le script v\u00e9rifie l&rsquo;\u00e9tat du compte et notifie si le compte est d\u00e9j\u00e0 d\u00e9sactiv\u00e9, ce qui \u00e9vite les op\u00e9rations redondantes.<\/p>\n<h2>Implications pour la s\u00e9curit\u00e9 informatique<\/h2>\n<p>La d\u00e9sactivation des comptes d&rsquo;utilisateurs inactifs ou compromis est une mesure de s\u00e9curit\u00e9 essentielle. Il r\u00e9duit la surface d&rsquo;attaque et emp\u00eache les acc\u00e8s non autoris\u00e9s, am\u00e9liorant ainsi le niveau de s\u00e9curit\u00e9 global de l&rsquo;organisation.<\/p>\n<h2>Recommandations<\/h2>\n<p>Lorsque vous utilisez ce script, assurez-vous que<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\">Vous disposez d&rsquo;un autre compte administratif.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">R\u00e9visez et mettez \u00e0 jour r\u00e9guli\u00e8rement vos politiques de gestion des comptes d&rsquo;utilisateurs.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Testez le script dans un environnement de non-production avant de le d\u00e9ployer dans un environnement r\u00e9el.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>La <a href=\"https:\/\/www.ninjaone.com\/fr\/script-hub\/\" target=\"_blank\" rel=\"noopener\">gestion des comptes d&rsquo;utilisateurs<\/a> est un aspect fondamental de l&rsquo;administration des syst\u00e8mes. Ce script simplifie le processus de d\u00e9sactivation des comptes d&rsquo;utilisateurs sous Linux, en offrant une solution robuste et automatis\u00e9e. Des outils tels que <a href=\"https:\/\/www.ninjaone.com\/fr\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a> peuvent rationaliser davantage les op\u00e9rations informatiques, en fournissant des capacit\u00e9s de gestion et de surveillance compl\u00e8tes pour s&rsquo;assurer que vos syst\u00e8mes restent s\u00e9curis\u00e9s et efficaces.<\/p>\n<p>En suivant les bonnes pratiques et en utilisant des scripts automatis\u00e9s, les professionnels de l&rsquo;informatique peuvent maintenir un environnement Linux s\u00e9curis\u00e9 et bien g\u00e9r\u00e9, prot\u00e9geant ainsi leur infrastructure contre les menaces potentielles et garantissant une continuit\u00e9 op\u00e9rationnelle sans heurts.<\/p>\n","protected":false},"author":35,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"","_lmt_disable":""},"operating_system":[4211],"use_cases":[4289],"class_list":["post-353646","script_hub","type-script_hub","status-publish","hentry","script_hub_category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/353646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/comments?post=353646"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=353646"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=353646"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=353646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}