2014-04-09 17 views
5

Quando creo un collegamento rigido utilizzando ln:Perché le autorizzazioni di un collegamento simbolico sono predefinite per tutte le permissive?

ln testfile.txt testfile2.txt 

Il file collegamento reale, confermata dagli stessi numeri di inode per entrambi gli alias nella tabella inode con ls -li, ha le stesse autorizzazioni iniziali per il file di un collegamento fisico del file con il nome originale:

1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile.txt 
1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile2.txt 

Quando creo un collegamento simbolico, però:

ln -s testfile.txt testfile3.txt 

e confermare di nuovo con il precedente comando ls, mostra che si tratta di un collegamento software con l nell'elenco delle autorizzazioni. Tuttavia, il mio collegamento simbolico ha tutti autorizzazioni per tutti i tipi di utente (gruppo, utente, e altri):

1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile2.txt 
1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile.txt 
1222286 lrwxrwxrwx 1 cs9****-** cs******  12 Apr 9 15:08 testfile3.txt -> testfile.txt 

Questo mi porta alle mie domande:

  1. Perché le autorizzazioni iniziali di un legame simbolico tutto permissivo? Capisco che è un diverso tipo di file, ma perché inizia con tutte le autorizzazioni iniziali? Da una domanda su UNIX/Linux.SE, ho scoperto che le autorizzazioni predefinite per una directory sono 777, che capita di essere le stesse autorizzazioni del mio collegamento simbolico. Le autorizzazioni di una directory e di un collegamento simbolico sono in qualche modo correlate?

  2. Come posso creare collegamenti simbolici che hanno le stesse autorizzazioni iniziali dell'originale? In particolare, la ragione per cui voglio farlo è che voglio scrivere uno script di shell per andare in un singolo file system e creare collegamenti fisici e collegamenti software in base al tipo di file, e voglio che mantenga le autorizzazioni.

risposta

2

Su quale piattaforma stai lavorando? Se si è su Linux, le autorizzazioni per collegamenti simbolici non vengono utilizzate affatto, quindi qualunque sia il loro valore, a nessuno importa. Potrebbe essere diverso su BSD, OSX o altri sapori.

Questa domanda potrebbe essere una risposta migliore sul sottotabella Unix, credo.

ho scoperto che le autorizzazioni predefinite per una directory sono 777

Hmm, non so davvero dove si ottiene che dal. Le autorizzazioni predefinite per file e directory (ancora su linux) dipendono solo dalla umask del processo. Vedi man umask.

+0

haha ​​... ho imparato a usare la maschera. Non so ancora come usarlo per il mio scopo, ma è un inizio con cui giocare. Grazie! –