Je dois définir le même chmod, comment obtenir le numéro pour -rw-r - r-- ?
chmodsupports --reference: “--reference = RFILE utilisez le mode RFILE au lieu des valeurs MODE” - man chmod.
                Je dois définir le même chmod, comment obtenir le numéro pour -rw-r - r-- ?
chmodsupports --reference: “--reference = RFILE utilisez le mode RFILE au lieu des valeurs MODE” - man chmod.
                Réponses:
S'il vous plaît vérifier la statsortie:
# stat .xsession-errors 
  File: ‘.xsession-errors’
  Size: 839123          Blocks: 1648       IO Block: 4096   regular file
Device: 816h/2070d      Inode: 3539028     Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/     lik)   Gid: ( 1000/     lik)
Access: 2012-05-30 23:11:48.053999289 +0300
Modify: 2012-05-31 07:53:26.912690288 +0300
Change: 2012-05-31 07:53:26.912690288 +0300
 Birth: -
              stat -c %a /path/to/fileest le tour de magie dont vous avez besoin.
                    Le numéro du mode de permission complet est un nombre octal à 4 chiffres, bien que la plupart du temps, vous n'utilisiez que les 3 chiffres les moins significatifs. Ajoutez chaque groupe dans la chaîne des autorisations, en prenant r = 4, w = 2, x = 1. Par exemple:
 421421421
-rwxr-xr--
 \_/        -- r+w+x = 4+2+1 = 7
    \_/     -- r+_+x = 4+0+1 = 5
       \_/  -- r+_+_ = 4+0+0 = 4     => 0754
Maintenant, parfois, vous verrez un étrange modestring comme ceci:
-rwsr-xr-T
Le quatrième chiffre est surchargé sur les xbits du modestring. Si vous voyez une lettre autre que celle- xci, cela signifie qu'un de ces bits "spéciaux" à quatrième chiffre est défini, et si la lettre est en minuscule, xcette position est également définie. Donc la traduction pour celui-ci est:
   4  2  1
 421421421
-rwsr-xr-T
   +  +  +  -- s+_+T = 4+0+1 = 5  
 \_/        -- r+w+s = 4+2+1 = 7  (s is lowercase, so 1)
    \_/     -- r+_+x = 4+0+1 = 5
       \_/  -- r+_+T = 4+0+0 = 4  (T is uppercase, so 0)   => 05754
La méthode UNIX standard pour montrer qu'un nombre est octal est de le démarrer avec un zéro. De toute façon, GNU chmodsupposera que le mode que vous donnez est octal, mais il est plus sûr d’ajouter le zéro.
Enfin, si vous voyez un +à la fin du modestring:
-rwxr-xr-x+
cela signifie alors que le fichier a des autorisations étendues et que vous aurez besoin de plus que chmod. Regardez dans les commandes setfaclet getfacl, pour commencer.
Les autorisations ne sont que la représentation sous forme de chaîne d'un nombre binaire. 
Le 0est principalement représenté par -, le reste sont des lettres.
Pour les autorisations de base:
Convertissez tous -et caps Sou Tto 0, le reste devrait représenter 1. 
Le nombre binaire résultant ainsi construit doit être imprimé sous forme octale:
$ a=-rw-r--r--
$ b=${a//[ST-]/0}
$ b=${b//[!0]/1}
$ printf '%04o\n' $((2#$b))
0644
En une ligne:
$ b=${a//[ST-]/0}; b=${b//[!0]/1}; printf '%04o\n' $((2#$b))
0644
Correction d'erreur et détection des 3 autres bits 1000, 2000ou 4000nécessite un code supplémentaire:
#!/bin/bash
Say     (){ printf '%s\n' "$@"; }
SayError(){ a=$1; shift; printf '%s\n' "$@" >&2; exit "$a"; }
e1="Permission strings should have 10 characters or less"
e2="Assuming first character is the file type"
e3="Permission strings must have at least 9 characters"
e4="Permission strings could only contain 'rwxsStT-'"
a=$1
((${#a}>10))  &&   SayError 1 "$e1"
((${#a}==10)) && { Say        "$e2"; a=${a#?}; }
((${#a}<9))   &&   SayError 2 "$e3"
a=${a//[^rwxsStT-]}
((${#a}<9))   &&   SayError 3 "e4"
b=${a//[ST-]/0}; b=${b//[!0]/1}; c=0
[[ $a =~ [sS]......$ ]] && c=$((c|4)) 
[[ $a =~    [sS]...$ ]] && c=$((c|2)) 
[[ $a =~       [tT]$ ]] && c=$((c|1))
printf '%04o\n' "$((2#$b|c<<9))"
              Obtenez la liste des fichiers avec leurs valeurs de chaîne et leurs autorisations hexadécimales. Mettez% N à la fin pour que la sortie puisse être placée dans Excel plus facilement.
stat -c "%A %a %N" *
-rw-r--r-- 644 `file2.txt'
-rw-r--r-- 644 `file3.txt'
-rw-r--r-- 644 `file4.txt'
-rw-r--r-- 644 `file.txt'
drwxr-xr-x 755 `hsperfdata_root'
-rw-r--r-- 644 `junk.txt'
drwx------ 700 `vmware-root'
Ceci trouvera tous les fichiers avec une permission hex spécifique.
find /tmp1 -user root -perm 644