Toon posts:

bash script, permission denied

Pagina: 1
Acties:
  • 60 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben voor school een aantal oefeningen aan het maken, hier is het begin van een script wat een gebruiker aan moet maken op basis van het eerst vrije uid. Het lukt mij echter niet om de uitkomst van het commando in een variabele op te slaan of te gebruiken binnen het script, ik krijg dan de melding permission denied, los werkt het commando wel. Ik ben ingelogd als root gebruiker, zie de details:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
testbak:~# ./simple-useradd.sh 
./simple-useradd.sh: line 3: /etc/passwd: Permission denied

testbak:~# cat simple-useradd.sh 
#!/bin/sh

testUID=tail /etc/passwd --lines=1 | awk -F':' '{print $3 +1}'
echo $testUID
testbak:~# tail /etc/passwd --lines=1 | awk -F':' '{print $3 +1}'
102
testbak:~# ls -la simple-useradd.sh 
-rwxrwxrwx 1 root root 88 Oct 25 12:35 simple-useradd.sh
testbak:~#


Hoe moet ik dit aanpakken?

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Als je die hele "tail ... +1}'" tussen backticks zet (`), dan werkt ie wel.

Probably probeert ie /etc/passwd uit te voeren, wat uiteraard niet gaat lukken.

Zo dus:

#!/bin/sh

testUID=`tail /etc/passwd --lines=1 | awk -F':' '{print $3 +1}'`
echo $testUID

[ Voor 26% gewijzigd door Osiris op 25-10-2007 14:46 ]


  • baggah
  • Registratie: December 2000
  • Laatst online: 10:43
Door je uit te voeren code tussen ` ` quotes te zetten, of hoe die dingen ook heten.

code:
1
2
3
4
#!/bin/sh

testUID=`tail /etc/passwd --lines=1 | awk -F':' '{print $3 +1}'`
echo $testUID;

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 31-01 12:10

deadinspace

The what goes where now?

In plaats van `` kun je beter $() gebruiken, dat is veel leesbaarder ;)

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Eigenlijk is het jouw huiswerk, maar toch nog maar even de volgende opmerking:
Je gaat er blijkbaar vanuit dat de laatste regel in /etc/passwd ook het laatst gebruikte (hoogste) UID heeft, maar vraag jezelf eens af of dat wel zo is ? ;)

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Verwijderd

Topicstarter
u_nix_we_all schreef op donderdag 25 oktober 2007 @ 15:13:
Eigenlijk is het jouw huiswerk, maar toch nog maar even de volgende opmerking:
Je gaat er blijkbaar vanuit dat de laatste regel in /etc/passwd ook het laatst gebruikte (hoogste) UID heeft, maar vraag jezelf eens af of dat wel zo is ? ;)
Ik probeer er makkelijk vanaf te komen ;) bij guid's:
code:
1
2
#We bepalen het eerst volgende vrije GUID door groepen uit /etc/group te sorteren en bij het hoogste GUID er 1 op te tellen. We #moeten alleen zorgen dat we GUID 65534 niet mee bepalen gezien deze word gebruikt voor nogroup daarom filteren we deze er uit met #grep. We hebben alleen het laatste GUID nodig.
userGUID=`cat /etc/group | grep -v 65534 | awk -F':' '{print $3}' | sort -n | tail --lines=1`


Bedankt voor die `` en $() tip jongens.

  • Pim.
  • Registratie: Mei 2001
  • Laatst online: 16-08-2025

Pim.

Aut viam inveniam, aut faciam

En toch is het niet de bedoeling hier je huiswerk te willen oplossen. En dan al helemaal niet zonder je eigen inzet inzichtelijk te hebben gemaakt ;)

"The trouble with quotes from the Internet is that you can never know if they are genuine." - Elvis Presley | Niet met me eens ? DM ME

Pagina: 1

Dit topic is gesloten.