sauvegarder/retrouver les droits d'un fichier sous unix

sauvegarder/retrouver les droits d'un fichier sous unix - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 07-08-2006 à 17:15:22    

Salut à tous,
Qq1 saurait-il comment je pourrais stocker le mode d'un fichier (r-x---rwx par exemple) sous forme réutilisable (qui puisse servir d'argument à chmod) ?
 
Je veux appliquer, dans un script, les droits d'un fichier A à un fichier B..
 
Autrement dit, comment traduire le r-x---rwx en 507 automatiquement ?
 
Merci.


Message édité par p-seeker23 le 07-08-2006 à 17:29:00
Reply

Marsh Posté le 07-08-2006 à 17:15:22   

Reply

Marsh Posté le 07-08-2006 à 17:22:51    

Je suis en train de chercher en faisant un "man ls".
 
Sinon, tu peux réaslier un script, qui te fournit le code correspondant, en utilisant :
 
ls -l nom_fichier |cut -d" " -f1


Message édité par kartnico le 07-08-2006 à 17:30:49
Reply

Marsh Posté le 07-08-2006 à 17:28:12    

Dis-moi quand tu trouveras !!
J'ai fait un script qui traduit les rwx en chiffres y a un an à peu près, mais je l'ai perdu..
l'horreur ! J'ai passé toute une journée à me battre avec des i et de j et des k, c'est beacoup plus ch**t que ça en a l'air !

Reply

Marsh Posté le 07-08-2006 à 17:56:37    

Je n'ai rien trouvé dans la documentation.
 
En ce qui concerne le script (je précise que je ne suis pas exellent dans ce domaine), tu peux essayer la méthode bourrin (2 minutes :D)
 

Code :
  1. #!/bin/sh
  2. DROITS=`ls -l $1 |cut -d" " -f1`
  3. case "$DROITS" in
  4. "-rwx------" )
  5. echo 700;;
  6. esac


 
Ensuite tu places tous les cas possibles dans ton case, "et lé tour est joué"


Message édité par kartnico le 07-08-2006 à 17:57:48
Reply

Marsh Posté le 07-08-2006 à 18:01:34    

pas mal !  
Effectivement, c bourrin, mais c efficace. en tous cas je préfère au jeu de devinettes-casse-tête des var pour gérer les r, w et x pour chacun des trois groupements !
 
Merci !  :jap:  

Reply

Marsh Posté le 08-08-2006 à 10:01:02    

J'ai trouvé mieux !
 

modeStr(){
 
    local mode
 
    [ ! -e $1 ] && echo "Error: (Internal) modeStr: $1 does not exist!" && return -1
    mode="$(ls -l $(dirname $1) | grep -w $(basename $1) | awk '{print $1}')"
    [ -z "$mode" ] && echo "Error: (Internal) modeStr: could not obtain mode of $1!" && return -2
 
    echo "u=$(echo $mode | cut -c2-4),g=$(echo $mode | cut -c5-7),o=$(echo $mode | cut -c8-10)"
    return 0
 
}


 
Cette fonction décrit le mode d'un fichier (ou répertoire) sous la forme "u=rwx,g=---,o=---", qui peut être passé en argument à chmod :
chmod u=rwx,g=---,o=--- fichier
 
Cdlt.

Message cité 1 fois
Message édité par p-seeker23 le 08-08-2006 à 10:01:47
Reply

Marsh Posté le 08-08-2006 à 11:33:18    

p-seeker23 a écrit :

J'ai trouvé mieux !
 

modeStr(){
 
    local mode
 
    [ ! -e $1 ] && echo "Error: (Internal) modeStr: $1 does not exist!" && return -1
    mode="$(ls -l $(dirname $1) | grep -w $(basename $1) | awk '{print $1}')"
    [ -z "$mode" ] && echo "Error: (Internal) modeStr: could not obtain mode of $1!" && return -2
 
    echo "u=$(echo $mode | cut -c2-4),g=$(echo $mode | cut -c5-7),o=$(echo $mode | cut -c8-10)"
    return 0
 
}


 
Cette fonction décrit le mode d'un fichier (ou répertoire) sous la forme "u=rwx,g=---,o=---", qui peut être passé en argument à chmod :
chmod u=rwx,g=---,o=--- fichier
 
Cdlt.


 
pas mal du tout! j'étais en train d'écrire une fonction capilotracté de converssion xrw en octal ... je vais me garder ça sous le coude au cas où...


Message édité par youx21 le 08-08-2006 à 11:35:55
Reply

Marsh Posté le 08-08-2006 à 14:02:52    

Je l'ai fait il y a un an et j'ai perdu le code (et qqes cheveux ce jour là). C horrible.  :non:  
.. jusqu'à ce que man chmod me donne cette idée  ;)  
 

Reply

Marsh Posté le 08-08-2006 à 14:30:51    

en plus simple pour avoir les droits d'un fichier en octal :

stat -c %a fichier


Message édité par Mjules le 08-08-2006 à 14:31:13

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 08-08-2006 à 14:53:58    

Très sympa !
Mais j'ai dû installer coreutils pour l'avoir (je suis sous Solaris..)..
Malheureusement je développe en env. professionnel, donc si l'outil n'est pas dispo en standard, j'y ai pas droit..  :cry:  

Reply

Marsh Posté le 08-08-2006 à 14:53:58   

Reply

Marsh Posté le 08-08-2006 à 14:57:13    

en tout cas, sous linux, coreutils amène ls, chmod et toute la clique (en plus de stat), on est obligé de l'avoir donc.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed