{"id":353743,"date":"2024-08-26T10:59:33","date_gmt":"2024-08-26T10:59:33","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/disabilitare-gli-account-utente-linux\/"},"modified":"2024-10-13T19:07:24","modified_gmt":"2024-10-13T19:07:24","slug":"disabilitare-gli-account-utente-linux","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/it\/script-hub\/disabilitare-gli-account-utente-linux\/","title":{"rendered":"Guida completa per professionisti IT per disabilitare gli account utente in Linux"},"content":{"rendered":"<p>La gestione degli account utente \u00e8 un aspetto cruciale dell&#8217;amministrazione del sistema, soprattutto quando si tratta di garantire la sicurezza e l&#8217;integrit\u00e0 di un ambiente Linux. <strong>Disabilitare gli account utente<\/strong> non pi\u00f9 in uso o potenzialmente compromessi \u00e8 una pratica standard tra i professionisti IT e i <a href=\"https:\/\/www.ninjaone.com\/it\/cos-e-un-msp\" target=\"_blank\" rel=\"noopener\">fornitori di servizi gestiti (MSP)<\/a>.<\/p>\n<p>In questo articolo analizzeremo uno script completo progettato per disabilitare gli account utente in Linux, fornendo una spiegazione approfondita della sua funzionalit\u00e0, dei casi d&#8217;uso e delle best practice correlate.<\/p>\n<h2>Capire l&#8217;importanza della gestione degli account utente<\/h2>\n<p>In qualsiasi infrastruttura IT, la gestione degli account utente \u00e8 fondamentale per <a href=\"https:\/\/www.ninjaone.com\/it\/blog\/checklist-della-sicurezza-informatica-per-proteggere-le-aziende\/\" target=\"_blank\" rel=\"noopener\">mantenere la sicurezza<\/a> e l&#8217;<a href=\"https:\/\/www.ninjaone.com\/it\/efficienza-it\" target=\"_blank\" rel=\"noopener\">efficienza<\/a> operativa. L&#8217;accesso non autorizzato o l&#8217;uso improprio degli account utente pu\u00f2 portare a violazioni dei dati, perdita di informazioni sensibili e potenziali interruzioni del sistema. Pertanto, disabilitare gli account utente inattivi o compromessi \u00e8 una misura proattiva per salvaguardare il sistema.<\/p>\n<h2>Il background dello script per disabilitare gli account utente in Linux<\/h2>\n<p>Lo script che stiamo esaminando \u00e8 progettato per disabilitare un account utente specificato, cambiando la sua shell di login in \/sbin\/nologin e bloccando l&#8217;account. Questo processo impedisce all&#8217;utente di accedere, conservando l&#8217;account per una potenziale riattivazione o per scopi di verifica. Questo approccio \u00e8 preferibile all&#8217;eliminazione totale, in quanto mantiene intatta la cronologia dell&#8217;account e i file correlati.<\/p>\n<h2>Lo script per disabilitare gli account utente in Linux:<\/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>Analisi dettagliata dello script per disabilitare gli account utente in Linux<\/h2>\n<h3><em>Impostazione iniziale e parsing dei parametri<\/em><\/h3>\n<p>Lo script per disabilitare gli account utente in Linux inizia con la definizione di una funzione di testo di aiuto (print_help) e di una die per gestire gli errori e visualizzare i relativi messaggi. La funzione parse_commandline elabora gli argomenti della riga di comando per identificare il nome utente dell&#8217;account da disattivare.<\/p>\n<h3><em>Convalida dell&#8217;account utente<\/em><\/h3>\n<p>Lo script per disabilitare gli account utente in Linux controlla quindi se il nome utente specificato \u00e8 valido ed esiste nel sistema. Si assicura che il nome utente contenga solo i caratteri consentiti (lettere minuscole, cifre, trattini e trattini bassi) e ne verifica l&#8217;esistenza nel file \/etc\/passwd.<\/p>\n<h3><em>Garantire l&#8217;assenza di conflitti con gli account di amministrazione<\/em><\/h3>\n<p>Lo script per disabilitare gli account utente in Linux controlla inoltre se l&#8217;utente da disabilitare ha privilegi amministrativi. Verifica se ci sono altri account di amministrazione disponibili per evitare di bloccare l&#8217;accesso amministrativo essenziale.<\/p>\n<h3><em>Disabilitazione dell&#8217;account utente<\/em><\/h3>\n<p>Infine, lo script disabilita l&#8217;account utente cambiando la shell in \/sbin\/nologin e bloccando l&#8217;account. Verifica il successo di queste operazioni e fornisce un feedback.<\/p>\n<h2>Casi d&#8217;uso potenziali<\/h2>\n<p>Immagina uno scenario in cui un professionista IT deve disabilitare un account per un dipendente che ha lasciato l&#8217;azienda. Lo script per disabilitare gli account utente in Linux fornisce un metodo rapido ed efficiente per garantire che l&#8217;account venga disabilitato ma non eliminato. Ci\u00f2 consente al team IT di conservare i dati e la cronologia dell&#8217;account dell&#8217;utente ai fini della conformit\u00e0 e della revisione.<\/p>\n<h2>Confronto con altri metodi<\/h2>\n<p>L&#8217;approccio tradizionale per disabilitare un account utente pu\u00f2 comportare la modifica manuale del file \/etc\/passwd o l&#8217;esecuzione di pi\u00f9 comandi. Questo script automatizza il processo per disabilitare gli account utente in Linux, riducendo il rischio di errore umano e garantendo la coerenza tra i diversi sistemi.<\/p>\n<h2>Domande frequenti<\/h2>\n<h3>D: Questo script per disabilitare gli account utente in Linux pu\u00f2 eliminare un account utente?<\/h3>\n<p>R: No, lo script disabilita l&#8217;account solo cambiando la shell e bloccandolo. L&#8217;eliminazione di un account richiederebbe ulteriori comandi.<\/p>\n<h3>D: \u00c8 sicuro disabilitare l&#8217;account di root?<\/h3>\n<p>R: Disabilitare un account root pu\u00f2 rendere il sistema ingestibile. Lo script per disabilitare gli account utente in Linux include controlli per verificare che sia disponibile un altro account amministratore prima di procedere.<\/p>\n<h3>D: Cosa succede se l&#8217;account utente \u00e8 gi\u00e0 disabilitato?<\/h3>\n<p>R: Lo script per disabilitare gli account utente in Linux controlla lo stato dell&#8217;account e notifica se l&#8217;account \u00e8 gi\u00e0 disabilitato, evitando operazioni ridondanti.<\/p>\n<h2>Implicazioni per la sicurezza informatica<\/h2>\n<p>Disabilitare gli account utente inattivi o compromessi \u00e8 una misura di sicurezza fondamentale. Riduce la superficie di attacco e impedisce l&#8217;accesso non autorizzato, migliorando cos\u00ec la sicurezza generale dell&#8217;organizzazione.<\/p>\n<h2>Raccomandazioni<\/h2>\n<p>Quando utilizzi questo script per disabilitare gli account utente in Linux, assicurati:<\/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\">Che sia disponibile un altro account amministrativo.<\/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\">Di controllare e aggiornare regolarmente i criteri di gestione degli account utente.<\/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\">Di testare lo script per disabilitare gli account utente in Linux in un ambiente non di produzione prima di distribuirlo in un ambiente live.<\/li>\n<\/ul>\n<h2>Considerazioni finali<\/h2>\n<p><a href=\"https:\/\/www.ninjaone.com\/it\/script-hub\/\" target=\"_blank\" rel=\"noopener\">La gestione degli account utente<\/a> \u00e8 un aspetto fondamentale dell&#8217;amministrazione del sistema. Questo script semplifica il processo per disabilitare gli account utente in Linux, offrendo una soluzione affidabile e automatizzata. Strumenti come <a href=\"https:\/\/www.ninjaone.com\/it\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a> possono semplificare ulteriormente le operazioni IT, fornendo funzionalit\u00e0 complete di gestione e monitoraggio per garantire che i sistemi rimangano sicuri ed efficienti.<\/p>\n<p>Seguendo le best practice e sfruttando script automatizzati come quello per disabilitare gli account utente in Linux, i professionisti IT possono mantenere un ambiente Linux sicuro e ben gestito, salvaguardando l&#8217;infrastruttura da potenziali minacce e garantendo una continuit\u00e0 operativa senza problemi.<\/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":[4277],"class_list":["post-353743","script_hub","type-script_hub","status-publish","hentry","script_hub_category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub\/353743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/comments?post=353743"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media?parent=353743"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/operating_system?post=353743"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/use_cases?post=353743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}