Vraag & Antwoord
Rechten home-directory
7 antwoorden
- Even een korte vraag. Weet iemand hier een goede manier op snel alle rechten in de home-directory naar wens te zetten? Ik wil dat alle mappen chmod 700 zijn en dat alle files chmod 600 zijn. Ik heb echter geen idee hoe je door geeft dat je alle files in je home-directory wilt hebben, dus ook alle files en directories die dieper in de directory-hierarchie liggen en de bestanden die met een '.' beginnen.
Als ik weet hoe dat aan te geven kan vervolgens dit het probleem wel oplossen:
[code:1:545ca14bf7]
if [ -d $i ]; then
chmod 700 $i
else
chmod 600 $i
fi
[/code:1:545ca14bf7]
Kun je overigens ook nog aangeven wat voor rechten een nieuwe dir of file standaard moet krijgen als je hem aanmaakt? Bijvoorbeeld met mkdir en voor files met vim.
Alvast bedankt. - Marcel toch, RTFM :wink: , manpage chmod :
[quote:b8c3fbf8f6]
-R, –recursive
Recursively change permissions of directories and their contents.
[/quote:b8c3fbf8f6] - Water toch, RTFQ
ergens.. ergens moet ik zo'n scriptje hebben liggen, gebruikt om in /var/www alles rw-rw-r– te maken behalve de exec's
naja, kan um even niet vinden :/
Ik kan je alleen even een perlvoorbeeld geven, pardon me, maar die had ik nog liggen
[code:1:24bbe5d141]foreach $file (@f) {
$filename = $dir . '/' . $file;
if ($file eq '.' || $file eq '..')
{
}
elsif (-d $filename)
{
# depending on your needs you can do subdirs
do_dir($filename);
}
elsif (substr($file,-4,4) eq '.gif')
{
@plaatjes = (@plaatjes, $filename);
}
}
[/code:1:24bbe5d141]
Das een beetje het idee
of w8.. dat kan ook met je eigen script :+
[code:1:24bbe5d141]if [ -d $i ]; then
chmod 700 $i
<roep hier je eigen script weer aan>
else
chmod 600 $i
fi
[/code:1:24bbe5d141]
Dat idee? - Moet het perse een scriptje zijn? Als het eenmalig is….
Recursief in /home alles op 600 zetten. Daarna niet-recursief *. op 700 zetten.
Of kijk ik er nu te naief tegenaan? - Dat is te naief ja. Je hebt dan namelijk alle dieper liggende directries op 600 gezet, waardoor ze read-only geworden zijn.
Dats je recursief kunt gebruiken snap ik, maar het probleem is dat er onderscheid tussen mappen en files gemaakt moet worden. Perl is geen probleem, dat brabbel ik ook, maar ik zie geloof ik niet helemaal in hoe het gegeven voorbeeld toe te passen is op dit probleem.
Het scriptje dat ik gaf is in principe prima. Het punt is alleen dat je het door:
[code:1:10e13c119f]
for i in *; do
if [ -d $i ]; then
chmod 700 $i
else
chmod 600 $i
fi
done
[/code:1:10e13c119f]
Alleen op de huidige directory toepast en gezien het aantal subdirs en subdirs van subdirs is het geen doen om elke directory zo af te gaan. De vraag is echter hoe voor ik 'for i in ?' op de plaats van het vraagteken alle directories en subdirectories van /home/marcel in? Dus bijvoorbeeld /home/marcel /home/marcel/films /home/marcel/muziek/Bad\ Religion /home/marcel/muziek/Bad\ Religion/No\ Control enz enz
In al die mappen moet de if lus worden uitgevoerd.
Het probleem is dat ik namelijk bij het backuppen geen rekening met de rechten heb gehouden, waardoor alles alleen-lezen is en ik niet wil dat met 'chmod -R 700 /home/marcel' alle files executable worden. - find . | while read i
do
de rest hetzelfde
Wil je $i variable overal quoten, in het geval er spaties in je file-/dir namen zitten. - "$i" - Marcel:
Ik weet niet hoe je chmod kunt uitvoeren vanuit perl, maar dit doe je dan (ongever)
/me beseft dat er iets mist :+
[code:1:a525837b08]opendir(D, $dir);
@f = readdir(D);
closedir(D);
foreach $file (@f) {
$filename = $dir . '/' . $file;
if ($file eq '.' || $file eq '..')
{
}
elsif (-d $filename)
{
# depending on your needs you can do subdirs
do_dir($filename);
<code voor chmod 600 $filename>
}
else
{
<code voor chmod 700 $filename>
}
}[/code:1:a525837b08]
dit plaats je dus in een function do_dir(map).
Snapje?
Dit kan in principe ook met jou script maar, dan ook in een functie do_dir(map):
[code:1:a525837b08]
<begin function do_dir($map);>
for i in $map\*; do
if [ -d $i ]; then
chmod 700 $i
<roep so_dir aan met als argument $i>
else
chmod 600 $i
fi
done
<einde function>[/code:1:a525837b08]
ik weet niet hoe het werkt met functions in BASH, amar dat is het idee
Beantwoord deze vraag
Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.
Gerelateerde vragen
- URL zonder extensie wil niet helemaal lukken
- https verbinding met ssl in owncloud
- afspelen met audacity werkt niet goed
- Computer!Totaal-forum maakt plaats voor v&a-module
- computer start soms niet op
- Pro show gold 4 overgangen tussen tekstdia's
- wie kan mij meer vertellen over een Gigabyte GA-B85M-HD3
- Windows Tijdelijke bestanden