Domanda bandit1, nuovo su linux e cerco di capire

angelcarl251

Utente Iron
4 Giugno 2022
5
2
0
3
Buongiorno a tutti,
ho sempre amato il pc, ma solo adesso mi sono messo a studiare ethical con un amico,
vengo dal mondo windows e linux mi è sempre piaciuto, ma per lavoro non potevo passare a linux,

ora vengo al problema, volevo fare sia ethical che imparare linux, e ho iniziato con bandit
e cerco di capire le cose, inutile copiare, non serve,
ho cercato in rete la soluzione, non per usarla di bandit1 -> bandit2 e in rete ho trovato questo
cat <- e anche questo cat ./-

avevo capito anche io che il comando cat serviva, ma non trovavo come,
il file è -, ma il segno < (minore) perchè?
nel secondo caso perchè ./?
grazie a tutti per l'aiuto
 

~}ĜẪƧ{~™

Utente Electrum
12 Dicembre 2017
218
13
50
100
Buongiorno,

allora, diciamo che l'utilizzo del < nei casi di apertura dei file dipende dai privilegi che l'utente ha, infatti quando si utilizza il minore: la shell aprirà il file, per poi passarlo all'input standard (STDIN) di cat
semplice esempio: puoi fare sudo cat file.txt, oppure puoi fare sudo cat < file.txt ma quest'ultimo caso non funzionerà se non hai i privilegi necessari per leggere il file.
Infatti:

apre file
$ cat file.txt hi

apre STDIN
$ cat < file.txt hi

Per quanto riguarda il ./ mi sembra un po' strano... ./ nel comando cat dovrebbe servire a salire di directory per l'apertura del file ma non ne capisco il motivo se stai già nella directory giusta, se invece parlavi del comando ./ serve solo per eseguire i così detti "esecutibili".
Nel caso mi sono espresso male in qualcosa sentiti libero di chiedere :)
 

angelcarl251

Utente Iron
4 Giugno 2022
5
2
0
3
Grazie GAS,
scusami se ancora non scrivo le cosa giuste, sarà anche l'età
correggimi se mi sbaglio

nella mia shell faccio sudo su e ho i privilegi di root poi faccio ssh e mi collego a bandit,
li dovrei essere user normale, quindi facendo cat <- vedo il contenuto del file
e il simbolo < mi permette di avere i privilegi di root sul file,
spero di aver capito
 

St3ve

Utente Jade
12 Ottobre 2011
2,286
5
1,600
678
Vuoi leggere il contenuto di un file chiamato - (meno), provi a scrivere cat - e ti accorgi che non funziona. Perché non funziona? Leggiamo il manuale di cat con man cat
Codice:
NAME
       cat - concatenate files and print on the standard output

SYNOPSIS
       cat [OPTION]... [FILE]...

DESCRIPTION
       Concatenate FILE(s) to standard output.

       With no FILE, or when FILE is -, read standard input.
Ah, non funziona perché cat - significa concatena lo standard input e stampa il risultato sullo standard output. Tu invece vuoi stampare il contenuto del file - che si trova nella home directory, ma allora ti basta specificare il path completo: cat ~/- (la directory ~ in linux è la home directory) oppure cat /home/bandit1/- oppure, visto che sei già nella home directory, puoi usare cat ./- per indicare il file - che si trova nella directory . (la current directory in linux è indicata da . e .. è la sua parent). L'altra soluzione che hai trovato (la più brutta) usa < per fare file redirection, però vabbé... inutile discutere mille soluzioni diverse, l'importante è capire cosa sta succedendo e saper risolvere.

puoi fare sudo cat file.txt, oppure puoi fare sudo cat < file.txt ma quest'ultimo caso non funzionerà se non hai i privilegi necessari per leggere il file.
Questo succede perché i privilegi di superuser li stai dando a cat, quando in realtà vorresti darli a <, perché è < che apre il file. Quindi cat non ha bisogno di sudo, ma < ha bisogno di sudo. Il problema è che non puoi usare sudo su un operatore, devi per forza usare un programma/comando, quindi o dai i privilegi a tutta la riga aprendo una nuova shell sudo sh -c "cat < file.txt" o trovi un'alternativa.

nella mia shell faccio sudo su e ho i privilegi di root poi faccio ssh e mi collego a bandit,
Non hai bisogno di essere superuser. È meglio fare il più possibile da utente normale.

e il simbolo < mi permette di avere i privilegi di root sul file,
No, il simbolo < ridirige il contenuto del file alla sua destra verso il comando alla sua sinistra. I privilegi di root non c'entrano assolutamente niente.
 

~}ĜẪƧ{~™

Utente Electrum
12 Dicembre 2017
218
13
50
100
Grazie GAS,
scusami se ancora non scrivo le cosa giuste, sarà anche l'età
correggimi se mi sbaglio

nella mia shell faccio sudo su e ho i privilegi di root poi faccio ssh e mi collego a bandit,
li dovrei essere user normale, quindi facendo cat <- vedo il contenuto del file
e il simbolo < mi permette di avere i privilegi di root sul file,
spero di aver capito
Attento, il simbolo < (minore) non apre direttamente il file con privilegi di root, ma fa una procedura in più rispetto a quando usi solo cat, come detto prima, il file viene aperto dalla shell e poi viene letto tramite il STDIN (standard input), per saperne di più ti invito a leggere https://en.wikipedia.org/wiki/Standard_streams
 
  • Mi piace
Reazioni: angelcarl251