Hoe verwijs ik naar een bestand in Linux Mint?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Mr. Freeze
  • Registratie: Augustus 2006
  • Laatst online: 07:56
Hallo,

Graag zou ik een verwijzing willen maken naar een tekstbestand, maar het lukt me niet.

/home/user/Documenten/bestand.txt is het pad, maar is niet voldoende voor het programma om te vinden.

Weet iemand hoe ik dit pad compleet kan krijgen?

Uiteraard heb ik getracht te zoeken met ddg, maar zonder het gewenste resultaat.

Alvast bedankt voor het meedenken.

XBL gamertag StayingPow3r

Beste antwoord (via Mr. Freeze op 27-01-2018 10:53)


  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Gooi het bestand anders even in /tmp.

Dan weet je in ieder geval of permissies het probleem waren. Kun je daarna uitzoeken onder welke user die applicatie draait en het op een goede plaats neerzetten.

We are pentium of borg. Division is futile. You will be approximated.

Alle reacties


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Wat vraag je nu precies? Hoe je het volledige pad van een file kunt vinden?
Heb je al met rechts erop geklikt en dan properties gekozen? Daar staat het pad.

Wat zie je als je in de terminal het bestand zoekt?
ls -l /home/user/Documenten/
ls -l /home/user/Documenten/bestand.txt


Of als je hem met tab-completion zoekt (ook in de terminal):
ls -l /ho<tab>/us<tab>/Doc<tab>/bes<tab><tab>

Na die laatste tabs zou je alle bestanden /home/user/Documenten/ beginnend met 'bes' moeten zien.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Mr. Freeze
  • Registratie: Augustus 2006
  • Laatst online: 07:56
In SABdnzb zou ik graag de juiste verwijzing willen maken naar een wachtwoord bestand (.txt) Daar hoort dus het complete pad te staan. Het voorbeeld wat ik gaf is afkomstig van het " eigenschappen" menu, maar het lijkt niet compleet te zijn want SABdnzb kan het nog steeds niet vinden. In Windows was het simpel, maar nu met Linux Mint toch wat lastiger.

In de terminal met het commando ls -l ervoor krijg ik de melding;

-rw-rw-r-- 1 user user 11 jan 21 21:26 /home/user/Documenten/SABdnzb.txt

XBL gamertag StayingPow3r


Acties:
  • +2 Henk 'm!

  • Axewi
  • Registratie: Maart 2009
  • Laatst online: 13:31
Dan is dit je volledige pad: /home/user/Documenten/SABdnzb.txt

Hou er rekening mee dat Linux over het algemeen hoofdletter gevoellig is dus:
/home/user/Documenten/SABdnzb.txt
Is niet hetzelfde pad als
/home/user/documenten/sabdnzb.txt

Als de lat te hoog ligt kun je er nog altijd onderdoor lopen.


Acties:
  • +3 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 08-07 22:38

Hero of Time

Moderator LNX

There is only one Legend

En onder welke gebruiker draait SabNZB? Als het als service draait met z'n eigen gebruikersnaam, dan kan deze niet in je home map, zoals dat bij Windows ook niet zomaar kan tenzij je het met de hoogste rechten draait, wat een zeer slecht idee is. Kom dus even met de exacte foutmelding die het geeft.

Commandline FTW | Tweakt met mate


Acties:
  • +2 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 09:56
Hero of Time schreef op vrijdag 26 januari 2018 @ 09:32:
En onder welke gebruiker draait SabNZB? Als het als service draait met z'n eigen gebruikersnaam, dan kan deze niet in je home map, zoals dat bij Windows ook niet zomaar kan tenzij je het met de hoogste rechten draait, wat een zeer slecht idee is. Kom dus even met de exacte foutmelding die het geeft.
Yup. Je zou verwachten dat de werkelijke foutmelding een access denied is.

Naast het feit dat een homedir vaak niet world executable is, heeft systemd oa. een ProtectHome directive die je in steeds meer unit files terugvindt. Een moderne systemd unit file gebruikt die om services nog verder te isoleren (op Arch kom ik die al vaak tegen). Maar filesytem permissions is het meest waarschijnlijk.
Room42 schreef op vrijdag 26 januari 2018 @ 08:02:
Wat vraag je nu precies? Hoe je het volledige pad van een file kunt vinden?
Of als je hem met tab-completion zoekt (ook in de terminal):
ls -l /ho<tab>/us<tab>/Doc<tab>/bes<tab><tab>
util-linux heeft daar een hele handige tool voor: namei

namei -l /home/user/Documenten/bestand.txt


En als SABdnzb onder een service account draait (zoniet: waarom niet)

sudo -u sabdnzb namei -l /home/user/Documenten/bestand.txt


Dan zie je exact waar het schip strandt. Waarschijnlijk in /home

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Gooi het bestand anders even in /tmp.

Dan weet je in ieder geval of permissies het probleem waren. Kun je daarna uitzoeken onder welke user die applicatie draait en het op een goede plaats neerzetten.

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • +1 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Hero of Time schreef op vrijdag 26 januari 2018 @ 09:32:
En onder welke gebruiker draait SabNZB? Als het als service draait met z'n eigen gebruikersnaam, dan kan deze niet in je home map, zoals dat bij Windows ook niet zomaar kan tenzij je het met de hoogste rechten draait, wat een zeer slecht idee is. Kom dus even met de exacte foutmelding die het geeft.
Dit.
Ik denk dat je even wat meer thuis moet raken in de rechtenstructuur van Linux.

Elke map en bestand in Linux heeft een setje rechten er aan vast gekoppeld.
Services (of naja, Daemons eigenlijk, maar laten we de Windows equivalente naam gebruiken voor de duidelijkheid) draaien normaliter onder een individuele gebruikersnaam.
Die kunnen dus niet zomaar bij de bestanden die eigendom zijn van een andere gebruiker. Of dat nu een fysieke gebruiker is of een andere service.

De kortste klap is om chmod o+r /home/user/Documents/bestandsnaam.txt te doen.
Nadeel is dat je met dat commando alle users op je systeem toegang geeft tot dat bestand.
En ik begrijp dat het betreffende bestand in jouw geval een wachtwoord bevat. Dus dat wil je liever niet.

Eigenlijk zou je ergens een mapje moeten maken voor dit doel.
Dus laten we zeggen dat dit een stukje configuratie betreft. Een password kan je zo opvatten iig.
Dan hoort hij, volgens de theorie, thuis in '/etc' en niet in '/home'.
Home is voor bestanden van fysieke gebruikers, voor je plaatjes, documenten, downloads, etc.
Etc is voor configuratie bestanden van applicaties.

cd /etc
sudo mkdir sabnzb
sudo chown sabnzb:sabnzb ./sabnzb
sudo chmod 600 -R ./sabnzb


En dan plaats je je betreffende bestand in de map die je hebt gemaakt (dus in '/etc/sabnzb') en verwijst dan daar naar.
Met chown vertel je aan Linux dat die map eigendom is van de user genaamd 'sabnzb' en met chmod 600 zeg je dat de eigenaar alle rechten heeft, maar niemand anders mag er iets mee.
Zo staat je wachtwoord veilig opgeslagen, alleen leesbaar voor sabnzb.

Wel even checken of de user inderdaar sabnzb heet natuurlijk, maar dit is het concept.

Lees ook dit even: https://ryanstutorials.net/linuxtutorial/permissions.php
Of een van de vele andere tutorials omtrend permissies in Linux.

Iemand een Tina2 in de aanbieding?


Acties:
  • +1 Henk 'm!

  • Mr. Freeze
  • Registratie: Augustus 2006
  • Laatst online: 07:56
Allemaal heel erg bedankt voor jullie inzet en antwoorden, het wachtwoord wat SABnzbd gebruikt is niet gevoelig, het dient enkel om rar bestanden uit te pakken welke zijn geplaatst in nieuwsgroepen.

In ieder geval allemaal wel leerzaam voor me, van elk antwoord steek ik weer iets op, is het niet vandaag nodig dan wellicht morgen.

Nogmaals dank.

XBL gamertag StayingPow3r


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 08-07 22:38

Hero of Time

Moderator LNX

There is only one Legend

McKaamos schreef op zaterdag 27 januari 2018 @ 09:13:
cd /etc
sudo mkdir sabnzb
sudo chown sabnzb:sabnzb ./sabnzb
sudo chmod 600 -R ./sabnzb


En dan plaats je je betreffende bestand in de map die je hebt gemaakt (dus in '/etc/sabnzb') en verwijst dan daar naar.
Met chown vertel je aan Linux dat die map eigendom is van de user genaamd 'sabnzb' en met chmod 600 zeg je dat de eigenaar alle rechten heeft, maar niemand anders mag er iets mee.
Zo staat je wachtwoord veilig opgeslagen, alleen leesbaar voor sabnzb.
Nee, zo mag de sabnzb gebruiker alsnog niets in die map. Met chmod 600 op een map mag je 'm lezen, maar je mag er nog steeds niet in. Dat moet 700 zijn. Execute rechten zijn cruciaal voor mappen. Zo kan je alsnog naar een bestand verwijzen die voor iedereen leesbaar is, maar de map niet. Door de execute op de map te zetten, kan het bestand benadert worden, maar zie je de rest niet. Je moet dan echt weten hoe een bestand in de map heet om deze te kunnen openen. ;)

Laten we je voorbeeld nemen van /etc/sabnzb. Geven we deze 701 rechten. In de map staan bestanden foo en bar. Je weet alleen dat foo bestaat, want die heb je er zelf eens neergezet. Beide bestanden zijn 644 aan rechten, dus je mag ze lezen. Doe je dan 'cd /etc/sabnzb' dan kan dat. Doe je 'ls' dan krijg je 'permission denied'. Doe je echter 'cat foo' dan krijg je gewoon de inhoud van 't bestand te zien.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Hero of Time schreef op zaterdag 27 januari 2018 @ 13:09:
[...]

Nee, zo mag de sabnzb gebruiker alsnog niets in die map. Met chmod 600 op een map mag je 'm lezen, maar je mag er nog steeds niet in. Dat moet 700 zijn. Execute rechten zijn cruciaal voor mappen. Zo kan je alsnog naar een bestand verwijden die voor iedereen leesbaar is, maar de map niet. Door de execute op de map te zetten, kan het bestand benadert worden, maar zie je de rest niet. Je moet dan echt weten hoe een bestand in de map heet om deze te kunnen openen. ;)

Laten we je voorbeeld nemen van /etc/sabnzb. Geven we deze 701 rechten. In de map staan bestanden foo en bar. Je weet alleen dat foo bestaat, want die heb je er zelf eens neergezet. Beide bestanden zijn 644 aan rechten, dus je mag ze lezen. Doe je dan 'cd /etc/sabnzb' dan kan dat. Doe je 'ls' dan krijg je 'permission denied'. Doe je echter 'cat foo' dan krijg je gewoon de inhoud van 't bestand te zien.
Absoluut correct, maar TS weet het pad en moet dat ook ingeven, inclusief de filename.
Stel dat de applicatie de dirlijst moet hebben, dan heb je helemaal gelijk en moet het minstens 700 zijn.

Maargoed, stel dat je zelf even su't naar die user, dan is het idd wel prettig om het zo te zetten als jij zegt. :)

Iemand een Tina2 in de aanbieding?


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 08-07 22:38

Hero of Time

Moderator LNX

There is only one Legend

McKaamos schreef op zaterdag 27 januari 2018 @ 13:16:
[...]

Absoluut correct, maar TS weet het pad en moet dat ook ingeven, inclusief de filename.
Stel dat de applicatie de dirlijst moet hebben, dan heb je helemaal gelijk en moet het minstens 700 zijn.

Maargoed, stel dat je zelf even su't naar die user, dan is het idd wel prettig om het zo te zetten als jij zegt. :)
Nee, jouw optie is 100% fout en gaat never nooit werken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(~ $)> mkdir testje
(~ $)> echo "wat tekst" > testje/bestand.txt
(~ $)> chmod 600 testje/
(~ $)> ls -ld testje
drw------- 2 HoT HoT 4096 Jan 27 13:19 testje
(~ $)> cd testje
bash: cd: testje: Permission denied
(~ $)> cat testje/bestand.txt
cat: testje/bestand.txt: Permission denied
(~ $)> chmod 700 testje
(~ $)> cat testje/bestand.txt
wat tekst
(~ $)> ls testje/
bestand.txt
(~ $)> chmod -r testje
(~ $)> ls -ld testje/
d-wx------ 2 HoT HoT 4096 Jan 27 13:19 testje/
(~ $)> ls testje/
ls: cannot open directory 'testje/': Permission denied
(~ $)> cat testje/bestand.txt
wat tekst

[ Voor 3% gewijzigd door Hero of Time op 27-01-2018 13:24 ]

Commandline FTW | Tweakt met mate


Acties:
  • +1 Henk 'm!

  • Lankman
  • Registratie: Maart 2010
  • Niet online
Heb Ik toch weer iets geleerd. Dat het zo met mappen werkte wist ik niet.
Pagina: 1