web-dev-qa-db-fra.com

Comment vérifier si en cours d'exécution en tant que root? Ne pas demander sudo

Je suis un nouvel utilisateur Ubuntu et je m'habitue toujours au système d'exploitation. Je l'utilise principalement pour tester localement un site que je développe. J'ai téléchargé la pile de lampe pour cela.

Lorsque j'ai téléchargé Ubuntu pour la première fois, chaque fois que je modifiais les fichiers que je développais, je devais entrer Sudo nano filename. Ce n’était pas le cas pour les fichiers de mon répertoire personnel, mais uniquement pour ceux où j’étais en train de tester.

Lorsque je me suis connecté aujourd'hui, je n'ai pas eu à saisir Sudo, j'ai simplement pu saisir nano filename et modifier les fichiers. Je ne sais pas si j'ai désactivé le besoin d'un mot de passe Sudo, ce que je ne voudrais pas faire.

J'ai exécuté grep root /etc/passwd puis grep root /etc/shadow qui a refusé l'accès sans entrer Sudo. Quand j'ai fait, root:! a montré. D'après ce que j'ai lu, cela signifie que le compte est désactivé.

Je ne sais pas si cela signifie que j'ai désactivé le mot de passe ou si le compte est verrouillé et tout va bien.

Existe-t-il un moyen de s’assurer que je ne suis pas en train d’exécuter en tant que root et si je le fais actuellement, comment le désactiver afin que je ne fonctionne que comme administrateur.

Aussi, pourquoi le mot de passe Sudo a-t-il soudainement cessé d'être saisi pour la modification de mes fichiers?

Merci pour vos réponses, si ma question n’est pas claire, merci de me le faire savoir afin que je puisse essayer de le clarifier.

5
Chris

Si vous utilisez bash (par défaut), votre invite vous dira si vous agissez en tant que root. Si elle se termine par un '$', vous utilisez un utilisateur normal. Si elle se termine par un '#', vous êtes exécuté en tant que root.

Aditionellement,

whoami

montrera qui vous êtes.

Si vous pouvez soudainement modifier des fichiers qui nécessitaient auparavant un accès à Sudo, mon premier soupçon serait que vous ayez réussi à modifier les autorisations sur un fichier. Si vous tapez:

ls -l <filename>

et examinez les résultats, les sections rwx indiquent les autorisations.

-rw-rw-r--  1 user user     77338 Oct 21 17:59 filename.odt
|\ /\ /\ /
| |  |  +-- permissions for "other": every user on the system.
| |  +----- permissions for "group"
| +-------- permissions for "owner"
+---------- filetype (- is regular file)

Si vous appartenez à un groupe disposant d'autorisations en écriture ou si "autre" dispose d'autorisations en écriture, vous n'avez pas besoin d'un accès Sudo pour écrire dans le fichier.

Vous pouvez lire ne introduction aux autorisations linux pour plus de détails sur les autorisations de fichiers.

10
goofdad

Il vous suffit d’utiliser root pour éditer les fichiers appartenant à root ou à d’autres utilisateurs. Tous les fichiers que vous créez ou que vous possédez peuvent être édités par vous sans utiliser root .

Par exemple. lancer les commandes suivantes

cd $HOME
touch test.txt
nano test.txt

Les commandes ci-dessus ont accédé à votre répertoire personnel (votre espace personnel), créé un fichier appelé test.txt, puis entré le fichier à l’aide d’un éditeur appelé nano.

Maintenant, si vous essayez:

nano /etc/apt/sources.list

Vous devriez pouvoir voir le fichier mais recevoir un avertissement vous indiquant que vous ne pouvez pas éditer le fichier.

enter image description here C'est parce que même si le fichier ne vous appartient pas, il a un accès en lecture pour tout le monde. Cela peut être montré dans l'image ci-dessous:

enter image description here

Pour visualiser facilement les autorisations dans Ubuntu, tapez simplement:

ll /path/to/parent/directory

ou alternativement pour d'autres systèmes tels que debian

ls -al /path/to/directory

Il existe de nombreux didacticiels en ligne permettant de lire sur les autorisations des utilisateurs, comme celle-ci , que je recommande de lire. Je vois souvent des gens faire des bêtises, telles que tout définir dans/var/www sur 777 pour que leur serveur Web "fonctionne" car ils ne comprennent pas les autorisations Linux et leurs serveurs sont donc moins sécurisés.

Je suis un nouvel utilisateur d'ubuntu ...

Bonne chance et bienvenue sur Linux! Passez le mot.

4
Programster

Pour vous montrer en détail "qui vous êtes", vous pouvez utiliser la commande idname __:

$ id
uid=1000(alphawolf) gid=1000(alphawolf) groups=1000(alphawolf),4(adm),24(cdrom),25(floppy),27(Sudo),29(audio),30(dip),44(video),46(plugdev),107(netdev),113(lpadmin),128(sambashare),132(wireshark),2000(humans-bc-aw)

Comme vous le voyez, la sortie peut être assez longue en fonction de votre compte.

  • Il n’affiche pas seulement votre nom d’utilisateur et votre identifiant "uid=1000(alphawolf)",
  • mais aussi le nom et l'ID de votre groupe principal "gid=1000(alphawolf)"
  • et les noms et identifiants de tous les autres groupes dont votre compte est membre. Cette liste ne contient par défaut que le groupe principal si vous êtes un utilisateur normal/restreint, et une liste plus longue contenant au moins admet Sudosi vous êtes un administrateur.

    groups=1000(alphawolf),4(adm),24(cdrom),25(floppy),27(Sudo),29(audio),30(dip),44(video),46(plugdev),107(netdev),113(lpadmin),128(sambashare),132(wireshark),2000(humans-bc-aw)
    

Maintenant, comment pouvons-nous déterminer nos autorisations sur un fichier avec cette information?

Nous prenons la sortie de ls -l /path/to/file-or-directory, comme par exemple:

$ ls -l /usr/bin/dumpcap
-rwxr-xr-- 1 root wireshark 85632 Aug 16 01:43 /usr/bin/dumpcap*

Ce fichier est un exécutable utilisé par Wireshark pour capturer les packages réseau dotés de privilèges élevés. Je l'ai choisi en raison des autorisations de propriétaire et de groupe différentes.
Regardons les détails importants:

  • Propriétaire:rootname__
    Il s’agit de l’utilisateur propriétaire du fichier.

  • Groupe:wiresharkCeci est le groupe d'utilisateurs auquel ce fichier est assigné.

  • Chaîne d'autorisation:-rwxr-xr-- Ce sont les autorisations de fichier pour l'utilisateur , le groupe et tous les autres. , comme décrit ci-dessous:

    - rwx r-x r--
    | \ / \ / \ /
    |  V   V   V
    |  |   |    \__ Other permissions: [r] 'r'ead access granted
    |  |   |                           [-] 'w'rite access denied
    |  |   |                           [-] e'x'ecuting denied
    |  |    \__ Group permissions: [r] 'r'ead access granted
    |  |                           [-] 'w'rite access denied
    |  |                           [x] e'x'ecuting granted
    |  \__ Owner permissions: [r] 'r'ead access granted
    |                         [w] 'w'rite access granted
    |                         [x] e'x'ecuting granted
    \__ File type: [-] normal file 
                       (alternatives: 'd'irectory, sym'l'ink,
                       'c'haracter device, 'b'lock device, ...)
    

Maintenant, que peut faire mon utilisateur alphawolfavec le idci-dessus avec ce fichier?

  • Je suis pas l'utilisateur rootqui possède les autorisations complètes rname__ead, wname__rite et exname__ecute.
  • Mais , je suis membre du groupe wiresharkname__; par conséquent, je dispose des autorisations définies pour le groupe de fichiers: je peux rname__ead le fichier et exname__cute le, mais je ne le modifie pas (no wname__rite access).
  • D'autres ne pouvaient que rname__ead the file, mais ni wname__rite, ni exname__ecute.

Cela vous aidera à déterminer vos autorisations sur différents fichiers système.

3
Byte Commander

C'est possible dans la plupart des coquilles

if [ $USER = root ] ; then echo Im root; fi

Bash soutient également cette

if [ $UID = 0 ] ; then echo Im root; fi
1
Kjeld Flarup