web-dev-qa-db-fra.com

Modifier les autorisations sur -rwxr-xr-x

J'ai besoin d'aide pour résoudre un problème de devoirs afin de modifier les autorisations d'un fichier. Il veut que ce soit -rwxr-xr-x? Vous ne savez pas comment définir les autorisations utilisateur. Je vous remercie.

4
Rich

Permet d'analyser vos devoirs: -rwxr-xr-x, divisez-les en trois parties -rwx|r-x|r-x:

  1. rwxname__: lire, écrire et exécuter pour l'utilisateur ou le propriétaire
  2. r-x: read, no write et execute pour les membres du groupe
  3. r-x: idem que dans 2 mais cette fois pour toutes les autres personnes aka othersname__.

Non, vous devrez exécuter la commande en utilisant le programme de permission de modification chmodcomme suit:

chmod 755 filename

A expliqué:

  • changer l'autorisation à:

    - user: 7 => r(4), w(2), x(1)
    - group: 5 => r(4), -, x(1)
    - others: r(4), -, x(1)
    

Vous devez maintenant posséder ce fichier ou ce dossier pour pouvoir le faire ou faire partie du groupe Sudo.

13
George Udosen

Il existe également une version plus "bavarde" pour définir les autorisations:

 chmod u=rwx,g=rx,o=rx filename

Ça signifie:

  • donnez à l'utilisateur (u=) rwx des autorisations, et
  • donnez au groupe (g=) rx des autorisations, et
  • donnez aux autres (o=) rx des autorisations.

Vous pouvez omettre les parties que vous ne souhaitez pas modifier, par exemple:

 chmod u=rwx filename

définira les autorisations de l'utilisateur et laissera les autres tels qu'ils sont.

Vous pouvez même "ajouter" ou "soustraire" des autorisations:

 chmod g-x filename

supprimera l'autorisation x du groupe, et

chmod o+w filename

ajoutera l'autorisation d'écriture pour les autres.

Pour définir SUID, SGID et sticky bit, utilisez les autorisations s et t:

  • chmod u+s filename - définit le SUID
  • chmod g+s filename - définit le SGID
  • chmod a+t filename - définit le bit collant (a signifie "tous", c'est-à-dire u and g et o)
11
PerlDuck

Préambule obligatoire

La modification des autorisations de fichiers et de répertoires importants de votre système peut [briser les choses] . Si vous pensez qu'il est gênant de devoir réinstaller votre système ou de récupérer les données d'une session en direct, assurez-vous de tester les autorisations et la propriété en toute sécurité. Pendant que vous vous familiarisez avec le système de fichiers et les commandes de base, vous devriez éviter exécutant chmod et chown avec Sudo ou dans un shell racine . De cette façon, une erreur de permission vous indiquera que vous faites quelque chose de risqué et vous devriez vérifier la commande à nouveau.

Nous changeons les permissions sur les fichiers avec chmod. Cette commande a un indicateur récursif -R. Cet indicateur est souvent utilisé inutilement, et il est rarement utile, car nous ne voulons généralement pas que les répertoires aient les mêmes autorisations que les fichiers qu’ils contiennent. Les répertoires ont besoin d’une autorisation d’exécution, ils ne sont donc pas utiles sans elle. Les fichiers n’ont besoin d’autorisation d’exécution que s'il s'agit de programmes. Sans l'indicateur -R, chmod ne peut causer que des dommages limités et réparables, mais avec -R, vous pouvez créer un fouillis terrible de votre système en une seule commande. Si vous utilisez -R, déterminez si vous en avez vraiment besoin et vérifiez le chemin du fichier pour y rechercher des fautes de frappe.


Le mode qui vous a été demandé de donner le fichier est un mode commun

-rwxr-xr-x

Le tiret principal indique qu'il s'agit d'un fichier normal. Les bits x à trois endroits indiquent qu'il doit être exécutable par n'importe quel utilisateur. Donc, ce mode est approprié pour les programmes que tout le monde peut exécuter. La plupart des programmes de votre système ont ce mode, comme vous pouvez le constater en examinant les fichiers de /usr/bin, /bin et ainsi de suite (j'explique comment examiner les autorisations ultérieurement dans cette réponse). Il est important pour la sécurité que seul le propriétaire, root, puisse écrire (modifier) ​​ces fichiers, afin que les programmes que vous exécutez ne puissent pas être modifiés accidentellement (ou autrement) par des utilisateurs sans privilèges root.

Comme indiqué dans Réponse de George Udosen , les bits d'autorisation sont définis séparément pour l'utilisateur (le propriétaire du fichier), le groupe et les autres. Ceci est expliqué, par exemple, dans notre tag wiki pour chmod et dans de nombreux autres endroits sur Internet, et même sur votre système; vous pouvez en savoir plus en exécutant man chmod. Il vous a été demandé de rendre le fichier lisible, inscriptible et exécutable par son propriétaire, et lisible et inscriptible pour son groupe et d’autres. Vous pouvez voir le propriétaire et le groupe d'un fichier en exécutant ls -ld file (le -d n'est nécessaire que s'il s'agit d'un répertoire; sans cet indicateur, ls affiche le contenu du répertoire plutôt que le répertoire lui-même) ou si vous voulez des informations moins pertinentes, utilisez stat:

stat -c '%U %G' file

-c signifie contrôler la sortie. %U = propriétaire du fichier, %G = groupe. file doit être remplacé par le chemin du fichier dont vous souhaitez examiner les métadonnées. Si c'est dans le répertoire courant, son nom est suffisant, mais vous pouvez donner un chemin pour les fichiers ailleurs:

$ stat -c '%U %G' /var/log/syslog
syslog adm

La commande stat peut également afficher les autorisations de fichiers sous forme octale et "lisible par l'homme":

stat -c '%n %a %A' *

(J'ai utilisé %n pour afficher les noms de fichiers et * pour exécuter stat sur chaque fichier non caché du répertoire en cours.)

Ceci fournit une référence très utile si vous oubliez jamais quels bits de permission un nombre octal particulier représente pour chmod, bien que la réponse de vidarlo constitue un bon moyen de les rappeler.

Je recommande fortement d'examiner les autorisations de tous les fichiers qui vous intéressent avant de les modifier, car vous ne pouvez "réinitialiser" le mode d'origine que si vous le configurez manuellement.

D'autres réponses ont expliqué comment définir le mode de fichier dont vous avez besoin en notation octale. chmod accepte le mode de fichier en notation symbolique aussi bien qu'en octal, ce qui est utile lorsque vous souhaitez uniquement modifier un bit d'autorisation (une lettre dans cette chaîne rwxr-xr-x). Réponse de Perl Duck explique comment faire pour définir le mode souhaité.

Lorsque je crée un script et que je veux le rendre exécutable, ce qui est la raison principale pour laquelle j'utilise chmod, j'utilise la notation symbolique pour m'autoriser à exécuter et ne pas apporter d'autres modifications, avec cette commande:

chmod u+x file

Si le script doit être exécutable par tous les utilisateurs, je l’exécuterais sans u:

chmod +x file

Cela serait probablement suffisant dans votre situation actuelle, car les fichiers sont souvent créés par défaut avec des autorisations permettant au propriétaire de les lire et de les écrire et ne sont lisibles que par le groupe, mais il est également probable qu'ils aient été créés avec le droit d'écriture du groupe. Cela dépend du paramètre umask qu'un utilisateur a lorsqu'il crée le fichier. Créons un fichier et regardons-le!

$ touch somefile
$ stat -c '%a %A' somefile 
664 -rw-rw-r--

D'ACCORD. Donc, pour obtenir le mode 755, je dois supprimer le bit w de la section g et ajouter le bit x partout.

En notation symbolique, je peux le faire de cette façon:

$ chmod +x,g-w somefile 
$ stat -c '%a %A' somefile 
755 -rwxr-xr-x

Un autre moyen d'écrire +x dans chmod est a+x. a signifie tout, ce qui est supposé si aucune lettre n'est donnée. Important à noter: u signifie utilisateur, ce qui signifie le propriétaire, alors que o représente les autres ( et non propriétaire).

Vous pouvez également définir tous les bits pour aug ou o avec le signe =. Voici moi jouer avec des paramètres d'autorisation inutiles:

$ chmod =x somefile 
$ stat -c '%a %A' somefile 
111 ---x--x--x
$ chmod u=r,g=rwx,o= somefile 
$ stat -c '%a %A' somefile 
470 -r--rwx---

Vous pouvez utiliser les notations octale et symbolique pour ajouter des bits spéciaux tels que setuid (cela permet d'exécuter un programme en tant que propriétaire, donc est dangereux) et setgid (les fichiers créés dans un répertoire avec setgid hériteront ensuite de la propriété du groupe du répertoire, qui est utile car il vous permet de contrôler les autorisations d’un groupe d’utilisateurs situés dans un emplacement donné du système de fichiers sans avoir à le manipuler en permanence).

Certaines personnes aiment la notation octale, d'autres symbolique. Ce dernier est un peu plus souple et peut-être un peu plus intuitif pour certains. Je recommande de tester et d'apprendre les deux (en toute sécurité!) Afin que vous puissiez comprendre ce que toute commande chmod fera quand vous le verrez et résoudre tout problème de devoirs à ce sujet avec brio :)

TL; DR

  • Soyez prudent avec chmod. N'utilisez pas Sudo chmod sauf si vous savez ce que vous faites. Réfléchissez bien avant d'utiliser l'indicateur -R.
  • Regardez les autorisations existantes en premier. stat est votre ami
  • Apprenez la notation symbolique et la notation octale.
6
Zanna

Je trouve plus facile de penser en autorisations octales:

  • 1 égal à exécuter
  • 2 équivaut à écrire
  • 4 équivaut à lire

Cela se voit facilement en train de le configurer au niveau des bits:

r w x
0 0 1 #Execute = 1
0 1 0 #Write = 2
1 0 0 #Read = 4
1 0 1 #Read + Execute = 5
1 1 0 #Read + Write = 6
1 1 1 #All permissions = 7

Ceux-ci peuvent être ajoutés. Lire et exécuter est 4 + 1 = 5. Lisez, exécutez et écrivez est 7 (4 + 2 + 1), écrivez seulement est 2, et ainsi de suite.

Les autorisations sont composées de trois chiffres: utilisateur, groupe et autre. rwx pour l'utilisateur devient 7 (autorisations complètes) pour le premier chiffre. r-x pour le groupe devient 1 + 4 = 5, et r-x pour les autres devient 5. Ainsi, les autorisations sont égales à 755.

4
vidarlo

La syntaxe de la commande chmod est la suivante:

chmod [options] {permissions} file-name

Avant de définir les autorisations de fichier/dossier, vous devez vous trouver dans le Parent Directory du fichier/dossier.

 r(read) - 4 
 w(write) - 2
 x(execute) - 1

Maintenant, analysons l'ensemble de votre travail: (- rwxr-xr-x)

Divisez-le en quatre parties comme suit:

1. - File Type

2. rwx User

. r-x Group

4. r-x Others

Ainsi, enfin pour donner une permision à votre fichier:

2. rwx: 4 + 2 + 1 = 7

. r-x: 4 + 0 + 1 = 5

4. r-x: 4 + 0 + 1 = 5

Par conséquent, la commande est

  chmod 755 *filename*
4
BoRRis