<metaname="viewport"content="width=device-width, initial-scale=1, user-scalable=no"><title>Linux, gestion des utilisateurs ,permissions des fichiers et répertoires d’un serveur web - YannStatic</title>
<metaname="description"content="gestion des utilisateurs et des permissions d’un serveur web">
<!-- start custom main top snippet --><divid="results-container"class="search-result js-search-result"></div>
<!-- end custom main top snippet -->
<articleitemscopeitemtype="http://schema.org/Article"><divclass="article__header"><header><h1style="color:Tomato;">Linux, gestion des utilisateurs ,permissions des fichiers et répertoires d’un serveur web</h1></header></div>
<metaitemprop="headline"content="Linux, gestion des utilisateurs ,permissions des fichiers et répertoires d’un serveur web">
</details><p><em>gestion des utilisateurs et des permissions d’un serveur web</em></p>
<h1id="gérer-les-utilisateurs-à-partir-de-la-ligne-de-commande-sous-linux">Gérer les utilisateurs à partir de la ligne de commande sous Linux</h1>
<p>L’une des responsabilités principales de l’administration Linux est la gestion des utilisateurs. Grâce à l’utilisation de la ligne de commande, la création d’utilisateur peut être complétée à distance ou par programme. Une fois que vous avez créé un utilisateur, vous pouvez ensuite l’ajouter à des groupes ou leur attribuer des privilèges plus élevés. De plus, vous pouvez garder une trace d’audit sur ce qui a été fait sur votre serveur et sur tout problème potentiel.</p>
<p>Si vous avez développé un logiciel ou programmé pour le Web, vous connaissez peut-être la politique de ne jamais faire confiance aux utilisateurs. Le même principe s’applique dans d’autres domaines de l’utilisation des ordinateurs en ce qui concerne la participation des utilisateurs. Ne donnez accès qu’à ceux qui en ont besoin et quand ils en ont besoin. Une délégation généreuse de privilèges pourrait permettre un accès non spécifié et non autorisé aux informations et aux données de base de tiers.
Voir les utilisateurs existants</p>
<p>L’un des moyens les plus rapides de visualiser les utilisateurs consiste à utiliser les commandes cat (concaténer) ou more (pager) pour afficher la liste des utilisateurs du système. Le fichier que vous devez afficher est le fichier «/ etc / passwd». Ce fichier stocke tous les comptes d’utilisateur et les informations de connexion de l’utilisateur.</p>
<h3id="utilisation-de-la-commande-useradd">Utilisation de la commande useradd</h3>
<p><codeclass="language-plaintext highlighter-rouge">useradd</code> est un binaire de bas niveau disponible sur la plupart des distributions. Cette commande est généralement moins utilisée en raison de son caractère moins convivial et intuitif par rapport à la commande <codeclass="language-plaintext highlighter-rouge">adduser</code> . Cependant, il y a très peu de différences et l’une ou l’autre peut être utilisée.</p>
<p>Pour en savoir plus sur useradd, exécutez la commande man ou ajoutez –help pour obtenir un aperçu rapide.</p>
<spanclass="nt">-p</span>, <spanclass="nt">--password</span> PASSWORD encrypted password of the new account
<spanclass="nt">-r</span>, <spanclass="nt">--system</span> create a system account
<spanclass="nt">-R</span>, <spanclass="nt">--root</span> CHROOT_DIR directory to <spanclass="nb">chroot </span>into
<spanclass="nt">-P</span>, <spanclass="nt">--prefix</span> PREFIX_DIR prefix directory where are located the /etc/<spanclass="k">*</span> files
<spanclass="nt">-s</span>, <spanclass="nt">--shell</span> SHELL login shell of the new account
<spanclass="nt">-u</span>, <spanclass="nt">--uid</span> UID user ID of the new account
<spanclass="nt">-U</span>, <spanclass="nt">--user-group</span> create a group with the same name as the user
</code></pre></div></div>
<p>Pour ajouter un utilisateur à l’aide de <codeclass="language-plaintext highlighter-rouge">useradd</code> , tapez useradd et le nom du login que vous souhaitez créer.</p>
<p>Dans le cas ci-dessus, l’utilisateur “testuser” sera créé. Par défaut, cette commande ne créera que l’utilisateur et rien d’autre. Si vous avez besoin d’un répertoire de base pour cet utilisateur, ajoutez l’indicateur <codeclass="language-plaintext highlighter-rouge">--create-home</code> pour créer le répertoire de base de l’utilisateur.</p>
<h3id="utilisation-de-la-commande-adduser">Utilisation de la commande adduser</h3>
<p>La commande <codeclass="language-plaintext highlighter-rouge">adduser</code> est un script Perl qui créera l’utilisateur de la même façon que la commande useradd . La différence réside dans le fait qu’il s’agit d’une commande interactive qui vous invitera à définir le mot de passe, le chemin du répertoire personnel, etc. Notez que sur certaines distributions, telles que Red Hat et CentOS, adduser est un lien symbolique vers useradd, et Sur d’autres distributions comme Arch Linux, adduser est fourni sous forme de paquet qui n’est pas installé par défaut.</p>
<p>L’utilisation de cette commande créera un groupe pour l’utilisateur en utilisant son identifiant par défaut. Les autres valeurs par défaut se trouvent généralement dans le fichier useradd à l’adresse “/etc/default”.</p>
<p>Dans ce fichier, vous pouvez modifier les paramètres par défaut pour les utilisateurs créés avec useradd, tels que le shell et le répertoire de base.</p>
<p>Cela vous indiquera les valeurs par défaut que vous souhaitez définir et vous demandera le mot de passe.</p>
<h3id="mots-de-passe-et-sécurité">Mots de passe et sécurité</h3>
<p>L’ajout d’un mot de passe pour un utilisateur nécessitera l’exécution de la commande <codeclass="language-plaintext highlighter-rouge">passwd</code>.</p>
<p>Sans les privilèges de super-utilisateur, exécuter passwd ne changera que le mot de passe de l’utilisateur connecté. Cette commande testera la complexité du mot de passe. Sous Ubuntu, les exigences en matière de mot de passe sont définies dans le fichier de mot de passe commun situé dans «/ec/pam.d». Pour plus d’informations sur la mise à jour de la complexité, reportez-vous à la page de manuel relative à pam-auth-update.</p>
<h3id="mise-à-jour-des-informations-utilisateur">Mise à jour des informations utilisateur</h3>
<p>Une fois qu’un utilisateur est sur le système, vous pouvez consulter le fichier «/etc/passwd» pour afficher les informations de l’utilisateur et le mot de passe crypté. Si vous devez apporter des modifications à un utilisateur, vous devrez utiliser la commande <codeclass="language-plaintext highlighter-rouge">usermod</code> .</p>
<p>Veillez à ne pas modifier les informations critiques telles que le nom de connexion ou, comme dans ce cas, l’ID utilisateur. Consultez la page de manuel de usermod pour savoir ce que vous devrez faire si ces éléments sont modifiés.</p>
</blockquote>
<h3id="ajout-dutilisateurs-au-groupe">Ajout d’utilisateurs au groupe</h3>
<p>Il arrive parfois que vous deviez ajouter des utilisateurs à un groupe afin qu’ils disposent des autorisations nécessaires pour exécuter certaines tâches.</p>
<p>Pour ajouter un utilisateur à un groupe:</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>sudo usermod -a -G groupname username
</code></pre></div></div>
<blockquote>
<p>Notez que l’indicateur -a est nécessaire pour «ajouter» le groupe à l’utilisateur. Sinon, vous risquez de retirer l’utilisateur du groupe «sudo» s’il est supposé avoir l’autorisation de superutilisateur.</p>
</blockquote>
<p>Vous pouvez également utiliser la commande <codeclass="language-plaintext highlighter-rouge">gpasswd</code> pour ajouter/supprimer un utilisateur au/du groupe.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>sudo gpasswd -a username groupname
<p>Comme pour les autres commandes utilisateur, la suppression d’un utilisateur est précédée de «user» et de l’action. Dans ce cas, vous devrez utiliser la commande <codeclass="language-plaintext highlighter-rouge">userdel</code></p>
<p>Prenez note que <codeclass="language-plaintext highlighter-rouge">userdel</code> ne supprimera pas un utilisateur s’il existe des processus utilisant son compte.</p>
<h3id="affichage-des-journaux-utilisateurs">Affichage des journaux utilisateurs</h3>
<p>Selon votre distribution, vous pourrez consulter le journal d’authentification ou le journal sécurisé situé dans «/var/log» pour vérifier les identifiants de connexion des utilisateurs. Ce fichier journal vous donnera les identifiants sur votre système dès qu’ils se produisent. Il s’agit d’un élément essentiel de la surveillance des événements en cas de violation et du simple fait de s’assurer que tout fonctionne comme prévu.</p>
<p>La gestion des utilisateurs est un élément crucial de la gestion des serveurs Linux si plusieurs personnes utilisent votre système. L’utilisation de la ligne de commande vous permettra d’administrer rapidement les utilisateurs et de disposer d’un historique de création et de modification de compte. L’une des meilleures utilisations serait peut-être d’automatiser la création à l’aide d’un script shell si plusieurs comptes sont nécessaires à la fois.</p>
<p>Dans les deux cas, veillez à consulter régulièrement vos comptes et à supprimer les comptes devenus inutiles. Assurez-vous que l’accès n’est accordé qu’à ceux qui en ont actuellement besoin et surveille fréquemment vos journaux.</p>
<h2id="permissions-des-fichiers-et-répertoires-dun-serveur-web">Permissions des fichiers et répertoires d’un serveur web</h2>
<ul>
<li><ahref="https://tech.feub.net/2014/06/permissions-des-fichiers-et-repertoires-dun-serveur-web/">Permissions des fichiers et répertoires d’un serveur web (<strong>Article original</strong>)</a></li>
</ul>
<p>Un serveur HTTP peut contenir plusieurs sites, les fichiers de ceux-ci peuvent être gérés par plusieurs utilisateurs, un utilisateur A ayant accès aux fichiers du site A, mais pas à ceux du site B, alors qu’un utilisateur C, aura accès aux fichiers des site A, B et C par exemple.</p>
<p>Ce qui suit ne s’adresse pas à un type de serveur particulier, mais suppose une machine GNU/Linux et un serveur Nginx ou Apache.</p>
<h3id="les-permissions">Les permissions</h3>
<p>Normalement sous Linux, lorsqu’un fichier est créé, il hérite du groupe de l’utilisateur qui l’a créé. Dans le cas de fichiers et répertoires relatifs à un serveur web, il est préférable que lorsqu’un fichier est créé il hérite du groupe du répertoire parent (en général <codeclass="language-plaintext highlighter-rouge">/var/www</code>), pour faire ceci il faut activer le bit <ahref="#droit-sgid">SGID</a> (Set Group ID) du répertoire parent.
Pour se rafraichir un peu les neurones au niveau du concept de permissions sous Linux, voir <ahref="http://feub.net/2008/03/setuid-setgid-et-sticky-bit/">ce billet</a>.</p>
<p>D’un autre coté, pour travailler convenablement avec ses collaborateurs, il faut prendre soin de modifier le <ahref="https://fr.wikipedia.org/wiki/Umask">umask</a>, le masque de création de fichier par l’utilisateur, qui est général placé à <codeclass="language-plaintext highlighter-rouge">022</code> par défaut, c’est-à-dire que lorsqu’un fichier est créé il aura comme permissions <codeclass="language-plaintext highlighter-rouge">755</code>, ce fichier n’étant pas éditable par le groupe. Changer le umask en <codeclass="language-plaintext highlighter-rouge">002</code> va placer les permissions d’un nouveau fichier en <codeclass="language-plaintext highlighter-rouge">775</code>.</p>
<h3id="principes-de-base">Principes de base</h3>
<p>Dans un fonctionnement typique, nous voulons que les utilisateurs aient le droit de lire et écrire sur les fichiers. Ils doivent également avoir le droit d’exécution sur les répertoires, ce droit permettant à un utilisateur de traverser un répertoire, donc de lister ce qu’il contient.
De son coté le serveur web doit pouvoir lire et exécuter les fichiers. A noter qu’il n’a pas besoin d’avoir le droit d’exécution x car ceci ne s’applique en général qu’aux binaires, or un script PHP est un fichier texte interprété. Le serveur HTTP doit également pouvoir lire et « exécuter » les répertoires (entendre: il doit pouvoir les traverser). Enfin certains répertoires peuvent avoir le droit d’écriture pour donner le droit d’uploader des fichiers par exemple.</p>
<h3id="configuration">Configuration</h3>
<p>La configuration sera la suivante : un groupe par site sera créé, les utilisateurs seront ajoutés aux groupes désirés afin d’y avoir accès et tous les fichiers et répertoires appartiendront à l’utilisateur root. La notion d’utilisateur n’étant plus importante dans notre cas, on ne fait qu’accroitre la sécurité du serveur web en attribuant la propriété des fichiers à l’utilisateur root (on est certain qu’aucun utilisateur du système n’aura les privilèges de modifier ces fichiers).</p>
<li>Tous les répertoires doivent avoir les droits <codeclass="language-plaintext highlighter-rouge">2775</code> (<ahref="#sticky-bit">Sticky Bit</a>) :</li>
</ul>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>find /var/www -type d -exec chmod 2775 {} +
</code></pre></div></div>
<ul>
<li>Tous les fichiers eux doivent être en 0664 :</li>
</ul>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>find /var/www -type f -exec chmod 0664 {} +
</code></pre></div></div>
<p>Pour finir, il faut changer le umask en 0002, cela diffère suivant le système. Sous Debian 7.4 ou Fedora 20, il est possible de changer la ligne UMASK du fichier /etc/login.defs.</p>
<h3id="note-sur-les-dangers-du-chmod-777">Note sur les dangers du chmod 777</h3>
<p>Un fichier ayant les droits 777 est accessible par tous les utilisateurs, n’importe lequel peut modifier et supprimer ce fichier. Ceci reste local aux utilisateurs existants sur la machine, c’est une question de confiance aux collègues. Plus important, des fichiers en 777 sont également modifiables par le serveur web lui-même, donc toute faille dans un script peut être catastrophique, une régle de base est de n’accorder qu’une confiance minimum à tout script, car aucun programme n’est à l’abri d’une vulnérabilité.</p>
Ce droit fonctionne comme le droit SUID, mais appliqué aux groupes. Il donne à un utilisateur les droits du groupe auquel appartient le propriétaire de l’exécutable et non plus les droits du propriétaire.</p>
<p><strong>Répertoires</strong><br>
Ce droit a une tout autre utilisation s’il est appliqué à un répertoire. Normalement, lorsqu’un fichier est créé par un utilisateur, il en est propriétaire, et un groupe par défaut lui est appliqué (généralement users si le fichier a été créé par un utilisateur, et root ou wheel s’il a été créé par root). Cependant, lorsqu’un fichier est créé dans un répertoire portant le droit SGID, alors ce fichier se verra attribuer par défaut le groupe du répertoire. De plus, si c’est un autre répertoire qui est créé dans le répertoire portant le droit SGID, ce sous-répertoire portera également ce droit.</p>
<p><strong>Notation</strong><br>
Comme le droit SUID, il vient remplacer le flag x, mais celui des droits du groupe, et la capitale indique le droit d’exécution x caché, elle est présente s’il n’est pas alloué.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code> ------s--- ou ------S---
Exemple : <codeclass="language-plaintext highlighter-rouge">- r w x r - S r - -</code> correspond à 2744.</p>
<h3id="sticky-bit">Sticky Bit</h3>
<p>Ce droit (traduction bit collant) est utilisé pour manier de façon plus subtile les droits d’écriture d’un répertoire. En effet, le droit d’écriture signifie que l’on peut créer et supprimer les fichiers de ce répertoire. Le sticky bit permet de faire la différence entre les deux droits.</p>
<p><strong>Définition</strong><br>
Lorsque ce droit est positionné sur un répertoire, il interdit la suppression d’un fichier qu’il contient à tout utilisateur autre que le propriétaire du fichier. Néanmoins, il est toujours possible pour un utilisateur possédant les droits d’écriture sur ce fichier de le modifier (par exemple de le transformer en un fichier vide). La création de nouveaux fichiers est toujours possible pour tous les utilisateurs possédant le droit d’écriture sur ce répertoire. Remarquons que c’est le même principe que les pages de Wikipédia, elles sont modifiables mais on ne peut pas les supprimer.</p>
<p>Pour les fichiers, l’utilisation est tout autre. Le bit collant (sticky bit) indique alors que ce fichier doit encore rester en mémoire vive après son exécution. Le but était, à l’époque, d’améliorer les performances en évitant de charger/décharger un fichier de la mémoire (par exemple, un exécutable ou une bibliothèque logicielle). Le terme sticky (collant) voulait dire que le fichier restait collé en mémoire. Cette fonctionnalité n’est toutefois gérée que sur un faible nombre de systèmes Unix comme HP-UX. Aucune version de Linux ne gère cette fonctionnalité du sticky bit.</p>
<p><strong>Notation</strong><br>
Son flag est le t ou T, qui vient remplacer le droit d’exécution x des autres utilisateurs que le propriétaire et ceux appartenant au groupe du fichier, de la même façon que les droits SUID et SGID. La capitale fonctionne aussi de la même façon, elle est présente si le droit d’exécution x caché n’est pas présent.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code> ---------t ou ---------T
Le droit sticky bit possède la valeur octale 1000.<br>
Exemple : <codeclass="language-plaintext highlighter-rouge">- r w x r - x r - t</code> correspond à 1755.<br>
Exemple d’utilisation</p>
<p>Sur certains systèmes UNIX, le sticky bit est utilisé pour le répertoire /tmp, qui doit être accessible en écriture par tous les utilisateurs, sans que ceux-ci se suppriment leurs fichiers les uns les autres :</p>
<h2id="modifier-utilisateur-répertoire-et-groupe">Modifier Utilisateur Répertoire et Groupe</h2>
<p>en mode sudo, modifier le fichier de configuration <codeclass="language-plaintext highlighter-rouge">sshd_config</code> pour autoriser la connexion en root</p>
<p>Linux fournit un outil nommé <codeclass="language-plaintext highlighter-rouge">usermod</code> spécifiquement pour faire des modifications aux comptes d’utilisateurs. Dans ce cas, nous l’utilisons pour renommer un compte utilisateur, ce qui est fait en utilisant le drapeau <codeclass="language-plaintext highlighter-rouge">-l</code>.</p>
<pclass="warning">L’indicateur <codeclass="language-plaintext highlighter-rouge">-l</code> ne changera que le nom de l’utilisateur. Toutes les autres choses attachées à l’utilisateur ne seront pas affectées, comme le répertoire personnel et l’UID.</p>
<p>Pour modifier le répertoire d’origine de l’utilisateur, nous utilisons à nouveau la commande <codeclass="language-plaintext highlighter-rouge">usermod</code>. Cependant, cette fois, nous devons effectuer deux actions : changer le répertoire personnel en un nouveau chemin et déplacer le contenu de l’ancien chemin vers le nouveau.</p>
<p>Nous définissons le chemin du nouveau répertoire personnel en utilisant l’option <codeclass="language-plaintext highlighter-rouge">-d</code> ou <codeclass="language-plaintext highlighter-rouge">--home</code> avec le chemin du nouveau répertoire. Nous devons également utiliser l’option <codeclass="language-plaintext highlighter-rouge">-m</code> pour copier le contenu de l’ancien répertoire personnel dans le nouveau.</p>
<h3id="renommer-groupe-dun-utilisateur">Renommer groupe d’un utilisateur</h3>
<p>Chaque utilisateur sur un système Linux est créé avec un groupe du même nom. Lorsque nous changeons le nom d’un utilisateur, le nom de son groupe reste inchangé. C’est une bonne idée de changer également le nom du groupe primaire de l’utilisateur.</p>
<p>Pour changer le nom du groupe primaire d’un utilisateur, nous utilisons la commande <codeclass="language-plaintext highlighter-rouge">groupmod</code> avec l’option <codeclass="language-plaintext highlighter-rouge">-n</code>. Nous devons fournir l’ancien nom et un nouveau nom.</p>
<p>Cela change le nom, le groupe, le répertoire d’origine et la propriété et le groupe de ce répertoire pour les nouveaux, ainsi que tous les fichiers. Vous vous retrouvez avec un utilisateur qu’il est impossible de distinguer de celui qui a été créé à l’origine sous le nom de “ustarter”.</p>
<h2id="renommer-utilisateur-groupe-et-home">Renommer utilisateur, groupe et home</h2>
<h3id="préambule">Préambule</h3>
<p>Pour pouvoir renommer un utilisateur, il faut que celui-ci ne soit pas connecté. De plus, il faut s’assurer qu’aucun processus ou aucune tache ne s’exécute en son nom. Bien entendu, toutes les opérations décrites dans ce tutorial devront être exécutées dans un terminal en mode administrateur (root).</p>
<h3id="modification-du-groupe">Modification du groupe</h3>
<p>Nous allons tout d’abord modifier le nom du groupe correspondant à l’utilisateur. Par défaut, un utilisateur a un groupe qui porte son nom, nous souhaitons donc le renommer également. Pour cela, il faut exécuter la commande :
<p>Pour se convaincre que la modification a bien été effectuée, on peut vérifier que le dossier personnel de l’utilisateur (/home/<nom-de-l’utilisateur>) appartient bien au groupe renommé.</p>
<h3id="modification-nom-utilisateur">Modification nom utilisateur</h3>
<p>La commande de modification du nom de l’utilisateur est plus complexe. En effet, il ne suffit pas de changer le nom, comme pour le groupe, mais d’autres opérations sont nécessaires comme :</p>
<ul>
<li>Créer un dossier d’utilisateur sous le nouveau nom</li>
<li>Transférer tous les fichiers de l’utilisateur dans le nouveau dossier</li>
<li>Modifier le nom complet de l’utilisateur (le cas échéant)</li>
</ul>
<p>La commande à exécuter pour effectuer toutes ces opérations est la suivante :
<p>Il n’est pas rare que les fichiers de configuration de l’utilisateur comportent en dur le chemin vers le dossier de l’utilisateur ou tout autre paramètre faisant référence au nom de l’utilisateur. Il peut donc être intéressant de modifier directement les fichiers pour rétablir les chemins qui auraient été cassés par le changement de nom de dossier. Cependant, j’attire votre attention sur le fait qu’il est absolument nécessaire de faire des sauvegarde, car modifier manuellement les fichiers de configuration peut être hasardeux et peut engendrer des instabilités.</p>
<h1id="the-complete-guide-to-useradd-command-in-linux">The Complete Guide to “useradd” Command in Linux</h1>
<p>We all are aware about the most popular command called ‘useradd‘ or ‘adduser‘ in Linux. There are times when a Linux System Administrator asked to create user accounts on Linux with some specific properties, limitations or comments.</p>
<p>In Linux, a ‘useradd‘ command is a low-level utility that is used for adding/creating user accounts in Linux and other Unix-like operating systems. The ‘adduser‘ is much similar to useradd command, because it is just a symbolic link to it.
<p>In some other Linux distributions, useradd command may comes with lightly difference version. I suggest you to read your documentation, before using our instructions to create new user accounts in Linux.</p>
<p>When we run ‘useradd‘ command in Linux terminal, it performs following major things:</p>
<ul>
<li>It edits /etc/passwd, /etc/shadow, /etc/group and /etc/gshadow files for the newly created User account.</li>
<li>Creates and populate a home directory for the new user.</li>
<li>Sets permissions and ownerships to home directory.</li>
<p>In this article we will show you the most used 15 useradd commands with their practical examples in Linux. We have divided the section into two parts from Basic to Advance usage of command.</p>
<ul>
<li>Part I: Basic usage with 10 examples</li>
<li>Part II: Advance usage with 5 examples</li>
</ul>
<h2id="part-i--10-basic-usage-of-useradd-commands">Part I – 10 Basic Usage of useradd Commands</h2>
<h3id="1-how-to-add-a-new-user-in-linux">1. How to Add a New User in Linux</h3>
<p>To add/create a new user, all you’ve to follow the command ‘useradd‘ or ‘adduser‘ with ‘username’. The ‘username’ is a user login name, that is used by user to login into the system.
Only one user can be added and that username must be unique (different from other username already exists on the system).
For example, to add a new user called ‘tecmint‘, use the following command.</p>
<p>When we add a new user in Linux with ‘useradd‘ command it gets created in locked state and to unlock that user account, we need to set a password for that account with ‘passwd‘ command.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>Changing password for user tecmint.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
</code></pre></div></div>
<p>Once a new user created, it’s entry automatically added to the ‘/etc/passwd‘ file. The file is used to store users information and the entry should be.</p>
<p>The above entry contains a set of seven colon-separated fields, each field has it’s own meaning. Let’s see what are these fields:</p>
<ul>
<li>Username: User login name used to login into system. It should be between 1 to 32 charcters long.</li>
<li>Password: User password (or x character) stored in /etc/shadow file in encrypted format.</li>
<li>User ID (UID): Every user must have a User ID (UID) User Identification Number. By default UID 0 is reserved for root user and UID’s ranging from 1-99 are reserved for other predefined accounts. Further UID’s ranging from 100-999 are reserved for system accounts and groups.</li>
<li>Group ID (GID): The primary Group ID (GID) Group Identification Number stored in /etc/group file.</li>
<li>User Info: This field is optional and allow you to define extra information about the user. For example, user full name. This field is filled by ‘finger’ command.</li>
<li>Home Directory: The absolute location of user’s home directory.</li>
<li>Shell: The absolute location of a user’s shell i.e. /bin/bash.</li>
</ul>
<h3id="2-create-a-user-with-different-home-directory">2. Create a User with Different Home Directory</h3>
<p>By default ‘useradd‘ command creates a user’s home directory under /home directory with username. Thus, for example, we’ve seen above the default home directory for the user ‘tecmint‘ is ‘/home/tecmint‘.<br>
However, this action can be changed by using ‘-d‘ option along with the location of new home directory (i.e. /data/projects). For example, the following command will create a user ‘anusha‘ with a home directory ‘/data/projects‘.</p>
<h3id="3-create-a-user-with-specific-user-id">3. Create a User with Specific User ID</h3>
<p>In Linux, every user has its own UID (Unique Identification Number). By default, whenever we create a new user accounts in Linux, it assigns userid 500, 501, 502 and so on…<br>
But, we can create user’s with custom userid with ‘-u‘ option. For example, the following command will create a user ‘navin‘ with custom userid ‘999‘.</p>
<h3id="6-add-a-user-without-home-directory">6. Add a User without Home Directory</h3>
<p>In some situations, where we don’t want to assign a home directories for a user’s, due to some security reasons. In such situation, when a user logs into a system that has just restarted, its home directory will be root. When such user uses su command, its login directory will be the previous user home directory.<br>
To create user’s without their home directories, ‘-M‘ is used. For example, the following command will create a user ‘shilpi‘ without a home directory.</p>
ls: cannot access /home/shilpi: No such file or directory
</code></pre></div></div>
<h3id="7-create-a-user-with-account-expiry-date">7. Create a User with Account Expiry Date</h3>
<p>By default, when we add user’s with ‘useradd‘ command user account never get expires i.e their expiry date is set to 0 (means never expired).<br>
However, we can set the expiry date using ‘-e‘ option, that sets date in YYYY-MM-DD format. This is helpful for creating temporary accounts for a specific period of time.<br>
Here in this example, we create a user ‘aparna‘ with account expiry date i.e. 27th April 2014 in YYYY-MM-DD format.</p>
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
</code></pre></div></div>
<h3id="8-create-a-user-with-password-expiry-date">8. Create a User with Password Expiry Date</h3>
<p>The ‘-f‘ argument is used to define the number of days after a password expires. A value of 0 inactive the user account as soon as the password has expired. By default, the password expiry value set to -1 means never expire.
Here in this example, we will set a account password expiry date i.e. 45 days on a user ‘tecmint’ using ‘-e‘ and ‘-f‘ options.</p>
<h3id="9-add-a-user-with-custom-comments">9. Add a User with Custom Comments</h3>
<p>The ‘-c‘ option allows you to add custom comments, such as user’s full name, phone number, etc to /etc/passwd file. The comment can be added as a single line without any spaces.<br>
For example, the following command will add a user ‘mansi‘ and would insert that user’s full name, Manis Khurana, into the comment field.</p>
<h3id="10-change-user-login-shell">10. Change User Login Shell</h3>
<p>Sometimes, we add users which has nothing to do with login shell or sometimes we require to assign different shells to our users. We can assign different login shells to a each user with ‘-s‘ option.<br>
Here in this example, will add a user ‘tecmint‘ without login shell i.e. ‘/sbin/nologin‘ shell.</p>
<h2id="part-ii--5-advance-usage-of-useradd-commands">Part II – 5 Advance Usage of useradd Commands</h2>
<h3id="11-add-a-user-with-specific-home-directory-default-shell-and-custom-comment">11. Add a User with Specific Home Directory, Default Shell and Custom Comment</h3>
<p>The following command will create a user ‘ravi‘ with home directory ‘/var/www/tecmint‘, default shell /bin/bash and adds extra information about user.</p>
<p>In the above command ‘-m -d‘ option creates a user with specified home directory and the ‘-s‘ option set the user’s default shell i.e. /bin/bash. The ‘-c‘ option adds the extra information about user and ‘-U‘ argument create/adds a group with the same name as the user.</p>
<h3id="12-add-a-user-with-home-directory-custom-shell-custom-comment-and-uid-gid">12. Add a User with Home Directory, Custom Shell, Custom Comment and UID GID</h3>
<p>The command is very similar to above, but here we defining shell as ‘/bin/zsh‘ and custom UID and GID to a user ‘tarunika‘. Where ‘-u‘ defines new user’s UID (i.e. 1000) and whereas ‘-g‘ defines GID (i.e. 1000).</p>
<h3id="13-add-a-user-with-home-directory-no-shell-custom-comment-and-user-id">13. Add a User with Home Directory, No Shell, Custom Comment and User ID</h3>
<p>The following command is very much similar to above two commands, the only difference is here, that we disabling login shell to a user called ‘avishek‘ with custom User ID (i.e. 1019).<br>
Here ‘-s‘ option adds the default shell /bin/bash, but in this case we set login to ‘/usr/sbin/nologin‘. That means user ‘avishek‘ will not able to login into the system.</p>
<h3id="14-add-a-user-with-home-directory-shell-custom-skell-comment-and-user-id">14. Add a User with Home Directory, Shell, Custom Skell Comment and User ID</h3>
<p>The only change in this command is, we used ‘-k‘ option to set custom skeleton directory i.e. /etc/custom.skell, not the default one /etc/skel. We also used ‘-s‘ option to define different shell i.e. /bin/tcsh to user ‘navin‘.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin
</code></pre></div></div>
<h3id="15-add-a-user-without-home-directory-no-shell-no-group-and-custom-comment">15. Add a User without Home Directory, No Shell, No Group and Custom Comment</h3>
<p>This following command is very different than the other commands explained above. Here we used ‘-M‘ option to create user without user’s home directory and ‘-N‘ argument is used that tells the system to only create username (without group). The ‘-r‘ arguments is for creating a system user.</p>
<p>Only the root or a user with sudo privileges can create new groups.</p>
<p>When invoked, groupadd creates a new group using the options specified on the command line plus the default values specified in the /etc/login.defs file.</p>
<h3id="creating-a-group-in-linux">Creating a Group in Linux</h3>
<p>To create a new group type groupadd followed by the new group name.<br>
For example, to create a new group named mygroup you would run:</p>
<p>The command adds an entry for the new group to the /etc/group and /etc/gshadow files.<br>
Once the group is created, you can start adding users to the group .<br>
If the group with the same name already exist, the system will print an error message like the following:</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>groupadd: group 'mygroup' already exists
</code></pre></div></div>
<p>To suppress the error message if the group exist and to make the command exit successfully, use the <codeclass="language-plaintext highlighter-rouge">-f (--force)</code> option:</p>
<h3id="creating-a-system-group">Creating a System Group</h3>
<p>There is no real technical difference between the system and regular (normal) groups. Usually, system groups are used for some special system operation purposes, like creating backups or doing system maintenance.</p>
<p>System groups GIDs are chosen from the range of system group UDs specified in the login.defs file, which is different than the range used for regular groups.</p>
<p>Use the <codeclass="language-plaintext highlighter-rouge">-r (--system)</code> option to create a system group. For example, to create a new system group named mysystemgroup you would run:</p>
<p>The <codeclass="language-plaintext highlighter-rouge">-K (--key)</code> option followed by KEY=VAL allows you to override the default values specified in the /etc/login.defs file.</p>
<p>Basically, all you can override are the maximum and minimum values of the normal and system group IDs for automatic GID selection when creating a new group.</p>
<p>Let’s say you want to create a new group with GID in the range between 1200 and 1500. To do that, specify the min/max values as shown below:</p>
<h3id="creating-a-system-group-with-password">Creating a System Group with Password</h3>
<p>Adding a password to a group has no practical use and may cause a security problem since more than one user will need to know the password.</p>
<p>The <codeclass="language-plaintext highlighter-rouge">-p (--password)</code> option followed by password allows you to set a password for the new group:</p>