Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sudo python PermissionError [Errno 13] Permission denied

13 réponses
Avatar
pata...
bonjour,

voici un simple script Python qui teste si le fichier "/tmp/test" peut être ouvert et modifié :

$ cat /tmp/append
#!/usr/bin/python
with open('/tmp/test', 'a'): pass

le fichier n'existe pas encore :

$ chmod +x /tmp/append
$ ls -l /tmp/test
ls: cannot access '/tmp/test': No such file or directory

le script est démarré en tant que simple utilisateur :

$ /tmp/append
$ ls -l /tmp/test
-rw-r--r-- 1 user user 0 Dec 17 10:30 /tmp/test

tout est ok.
maintenant le script échoue s'il est démarré en tant qu'utilisateur root avec la commande sudo :

$ sudo /tmp/append
[sudo] password for user:
Traceback (most recent call last):
File "/tmp/append", line 2, in <module>
with open('/tmp/test', 'a'):
PermissionError: [Errno 13] Permission denied: '/tmp/test'

le problème persiste même si l'ouverture du fichier est faite en mode "'w'" ou si les commandes "sudo -i" ou "su -" sur utilisées.

aucun attribut particulier n'est positionné sur le fichier ou le sous-système de fichiers.

pourquoi le super-utilisateur root ne peut-il pas manipuler le fichier avec Python ?

lacsaP.

3 réponses

1 2
Avatar
pata...
seules deux actions sont avancées "rename" et "delete".
la page de manuel n'en dit pas plus :
$ man chmod
...
RESTRICTED DELETION FLAG OR STICKY BIT
The restricted deletion flag or sticky bit is a single bit, whose interpretation depends on the file type. For directories, it prevents unprivileged users from removing or renaming a file in the directory unless they own the file or the directory; this is called the restricted deletion flag for the directory, and is commonly found on world-writable directories like /tmp. For regular files on some older systems, the bit saves the program's text image on the swap device so it will load more quickly when run; this is called the sticky bit.
...
il faudrait peut être y ajouter l'action "modifier" pour être plus précis et y faire apparaÍ®tre cette particularité fs.protected_regular...
lacsaP.
Avatar
Alain Ketterlin
"" writes:
seules deux actions sont avancées "rename" et "delete".
la page de manuel n'en dit pas plus :
$ man chmod
...
RESTRICTED DELETION FLAG OR STICKY BIT
The restricted deletion flag or sticky bit is a single bit, whose
interpretation depends on the file type. For directories, it prevents
unprivileged users from removing or renaming a file in the directory
unless they own the file or the directory; this is called the
restricted deletion flag for the directory, and is commonly found on
world-writable directories like /tmp. For regular files on some older
systems, the bit saves the program's text image on the swap device so
it will load more quickly when run; this is called the sticky bit.
...
il faudrait peut être y ajouter l'action "modifier" pour être plus
précis

Ce n'est pas fait parce que rename/delete sont des opérations sur les
répertoires (et donc soumis au sticky bit sur le répertoire englobant),
alors que la modification est une opération sur les fichiers, pour
laquelle il faut disposer du bit "w" pertinent (selon qu'on est le
propriétaire, etc.) *sur le fichier*. Autrement dit :
- on peut avoir le droit de supprimer un fichier qu'on n'a pas le droit
de modifier (avec "w" sur la dir et pas de "w" sur le fichier)
- on peut avoir le droit de modifier un fichier qu'on n'a pas le droit
de supprimer (avec "w" sur le fichier et pas de "w" sur la dir)
Le sticky bit ajoute une restriction au premier cas, et
fs.protected_regular (et consorts) ajoute une restriction au second cas.
et y faire apparaÍ®tre cette particularité fs.protected_regular...

Effectivement, ce serait mieux que ce truc soit plus mis en avant,
surtout si c'est maintenant le comportement par défaut.
-- Alain.
P/S: comme tu le dis, c'est hors-sujet ici, j'arrête lÍ  de répondre dans
ce thread.
Avatar
pata...
merci pour ces précisions.
bonne année.
1 2