Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: teele - 08.01.24 - klo:18.48
-
Nyt pilvikoneen tiedostojen muokkaminen geditillä menee hienosti. Mutta jos oikeasti pilvikoneella olisi eri käyttäjiä, miten pitäisi asettaa rajoituksia, että käyttäjä1 ei näkisi käyttäjä2:n tiedostoja. Kummatkin käyttäjät ovat /home - hakemistossa.
www-data löytää näytettävän nettisivun /var/www/html hakemistossa olevan symbolisen linkin avulla. Linkki osoittaa käyttäjän kotihakemistossa olevaan tiedostoon.
Vain käyttäjän itsensä ja www-datan pitää päästä lukemaan tiedostoja. Muokkaaminen onkin jo näköjään kielletty.
Millaisilla luku-, kirjoitus-, ja muokkausoikeuksien asetuksilla tilanne voitaisiin ratkaista.
-
Voithan kokeilla jotain seuraavaa...
mkdir testidir
ls -l testidir
groups
sudo chmod 700 -R testidir
sudo chown root:root -R testidir
ls testdir
ls testdir -l
sudo ls -l testidir
Jos haluat antaa jollekin ryhmälle oikeuksia, niin silloin esim Tällä tavalla voit antaa dialout-ryhmän jäsenille luku ja kirjoitusoikeudet...
sudo chown root:dialout -R testdir
sudo chmod 770 -R testidir
-
Kannattaa olla varovainen chmodin -R-vivun kanssa. Tuo 7 antaa myös kaikille tiedostoille suoritusoikeuden, mikä ei useinkaan ole tarkoitus. Tässä parempia vaihtoehtoja:
chmod -R o-rwx hakemisto
chmod -R u+rwX hakemisto
Ensimmäinen poistaa (miinus) muilta (o niin kuin other) luku-, kirjoitus- ja suoritusoikeuden rekursiivisesti. Toinen lisää (plus) käyttäjälle (u niin kuin user) luku- ja kirjoitusoikeudet tiedostoihin ja luku-, kirjoitus- ja suoritusoikeudet hakemistoille. Iso X nimittäin koskee vain hakemistoja; pieni x koskisi myös tiedostoja. Lisäksi on hyvä tietää, että yhtäsuuruusmerkki asettaisi oikeudet täsmälleen ja omistajamäärittelyjä (u, g ja o) voi laittaa useita peräkkäin, jos niiden oikeuksia on tarkoitus muuttaa samalla tavalla.
Tämä on muuten riittävä komento estää muiden käyttäjien pääsy omaan kotihakemistoon:
chmod go-rwx ~
Tämän jälkeen kotihakemiston ryhmän käyttäjillä ja muilla ei ole luku-, kirjoitus- tai suoritusoikeutta kotihakemistoon. Lukuoikeus antaa oikeuden listata tiedostoja ja kirjoitusoikeus antaa mm. oikeuden luoda tiedostoja, kuten voisi odottaakin. Suoritusoikeus on vähän epäintuitiivisempi hakemistojen kohdalla, mutta se antaa oikeuden avata hakemiston sisältämiä tiedostoja ja hakemistoja, jos tietää niiden nimen. Mikäli käyttäjällä ei ole suoritusoikeutta, niin hän ei voi lukea, mitään ko. hakemiston sisältä.
-
Tulipa pikkasen kokeiltua kaikenlaista .... nyt tilanne on vähän jumissa
Aluksi tilanne oli tällainen
$ getent passwd käyttäjä1 -----> ei mitään
$ getent passwd käyttäjä2
käyttäjä2:x:1002:1002:,,,:/home/käyttäjä1:/bin/bash
sitten laitoin
$ sudo usermod -d /home/käyttäjä2/ käyttäjä2
[code]
mutta nyt on ilmaantunut ylimääräinen : polkuun
[code]
$ getent passwd käyttäjä2
käyttäjä2:x:1002:1002:,,,:/home/käyttäjä2/:/bin/bash
ehkä olisi pitänyt käyttää muotoa
sudo usermod -d /new/home/dir -m username
jossa -m -valitsin on mukana. Kuten tavallista, sen vaihtoehdon huomasin vasta sitten jälkeen päin.
Onko mitään keinoa saada käyttäjä2:n kotihakemistotiedoista ylimääräistä : -kierrosta pois.
-
En kyllä nää ylimääräistä kaksoispistettä. Sen sijaan lisäsit kotihakemiston polkuun loppuun kauttaviivan. passwd-tiedostossa kaksoispistettä käytetään kenttien erottamiseen, ja jos lasket kaksoispisteiden määrän molemmissa riveissä, niin huomaat niitä olevan yhtä monta.
-
Ok, selvä
Kiitos neuvoista, opettelu jatkuu, luultavasti palaan vielä uusin ongelmin .... :)
-
...opettelu jatkuu, luultavasti palaan vielä uusin ongelmin .... :)
Käyttäjäoikeudet ovat Linux/Unix -järjestelmien perusteita. https://www.linux.fi/wiki/Tiedoston_oikeudet
Tuo Linux-wiki kannattaa silmäillä, jos perusasioista kiikastaa...
https://www.linux.fi/wiki/Etusivu
-
Mahdollinen ratkaisu ei olekaan kovin monimutkainen, ainakin tähän asti näyttäisi toimivan
Ensin o-ryhmältä kaikki oikeudet pois.
sudo chmod -R o-rwx käyttäjä1
Sitten oikeuksien karsimisen makuun päästyä kaikki oikeudet pois ryhmältäkin
sudo chmod -R g-rwx käyttäjä1
Tässä vaiheessa oli hyvä tarkistaa, että ryhmä on sellainen, kuin pitääkin
getent group käyttäjä1
Lopuksi sitten oikeuksien karsimisen sijasta annetaan ryhmälle sopivasti oikeuksia
sudo chmod -R g+rx käyttäjä1
käyttäjä2 kanssa toimitaan samalla tavalla.
Nyt kummankin käyttäjät pääsevät muokkaamaan omia tekstejään graafisen tekstimuokkaimen avulla, mutta eivät joudu vahingossa toistensa hakemistoihin.
Jos ryhmät kaipaavat lisäjäseniä, niitä voi laittaa vaikka näin
sudo usermod -a -G groupname username
Ratkaisu n ä y t t ä ä toimivan, mutta jos siinä näkyy ongelmia .....
Muokk.
Ja näkyihän niitä, kun selain käynnistettiin uudestaan, sivut ovatkin selaimessa kiellettyjä :(
.
-
Muokk.
Ja näkyihän niitä, kun selain käynnistettiin uudestaan, sivut ovatkin selaimessa kiellettyjä :(
www-data -käyttäjätunnuksella pitää olla pääsy hakemistoihin ja lukuoikeus tiedostoihin.
-
en tiedä, olenko jo liian väsynyt, mutta ainakin ajatuksena on ollut, että jokaisen käyttäjän ryhmässä on käyttäjä itse ja www-data
tällainen oli, tai ainakin oli tarkoitus olla tarkistelumalli
getent group käyttäjä1
käyttäjä1:x:1002:www-data
Säikeessä Tiedosto-oikeuksissa outoa on ehkä tarkemmin siitä, miten olen söhlinyt, näyttää siltä, että pääkäyttäjä ei pääse muiden käyttäjien hakemistoihin sudoilemallakaan. Tämä voi olla tässä söhlityssä tilanteessa ihan määrittelyjen mukaista, mutta ei vain ole aikaisemmin tullut vastaan.
Pitää vielä tarkistaa getentillä, onko www-data todella mukana kaikissa ryhmissä, menee varmaan seuraavan päivän puolelle ...
-
Voit myös vaihtaa su:lla www-data-käyttäjäksi, niin pääset kokeilemaan miten hakemistoihin siirtyminen ja tiedostojen lukeminen onnistuu. www-datalle ei varmaankaan ole määritelty komentotulkkia, mutta sen avaaminen onnistunee näin:
sudo su
su -s /bin/bash www-data
Pääset takaisin omalle tunnuksellesi exit-komennolla tai Ctrl+D:llä.
-
kokeilin tällaista
$ sudo su
[sudo] password for slam1:
root@pilvikone:/home/pääkäyttäjä# chmod -R g+rx /home/käyttäjä1
root@pilvikone:/home/pääkäyttäjä# exit
exit
sitten kirjauduin uudestaan åilvi koneelle normaalina pääkäyttäjänä ja katsoin, mutta mikään ei muuttunut, rx ei ole ryhmässä
pääkäyttäjä@pilvikone:~$ cd /home
pääkäyttäjä@pilvikone:/home$ ls -l
drwxr-x--- 7 käyttäjä1 käyttäjä1 4096 Jan 13 19:52 käyttäjä1
Kirjautumalla käyttäjä1:nä en myöskään onnistunut lisäämään ryhmäoikeuksia
-
Kyllä tuolla näkyy ryhmän oikeuksissa r ja x:
drwxr-x--- 7 käyttäjä1 käyttäjä1 4096 Jan 13 19:52 käyttäjä1
Sen osalta homma on siis hoidossa, mutta olennaista on myös, että kaikki käyttäjätunnukset joille haluat antaa pääsyn kyseiseen hakemistoon, kuuluvat ryhmään "käyttäjä1". Tarkista kirjautumalla tunnuksella ja komentamalla groups
-
Ehkä asia alkaa vähän selvitä.
Kummankin käyttäjän ryhmätiedot ja oikeudet näyttävät toimivilta.
$ getent group käyttäjä1
takaovi:x:1002:www-data
$ getent group käyttäja2
käyttäjä2:x:1004:www-data
$ ls -l
total 24
drwxr-xr-x 7 käyttäjä2 käyttäjä2 4096 Jun 19 2023 käyttäjä2
drwxr-x--- 7 käyttäjä1 käyttäjä1 4096 Jan 13 19:52 käyttäjä1
Mutta kun selaimella pyytää
käyttäjä2.dy.fi
tulee vastaukseksi
Forbidden
You don't have permission to access this resource.
Apache/2.4.41 (Ubuntu) Server at käyttäjä2.dy.fi Port 443
josta voisi päätellä, että hakemistoon ei ole oikeuksia, mikä tuntuikin juuri olevan ongelma.
Mutta käyttäjä2:n hakemistossa olikin tiedostoja, jotka oli tehty sudoilemalla ja niiden ryhmä ja omistaja olivat root. Kun kansiossa olevan index-tiedoston omitajaksi laitetaan käyttäjä2, vaikuttaa siltä, että selain hakee sen.
Eli taas n ä y t t ä i s i, että asettelu toimii, mutta yllätyksiin pitänee tottua. Näkyykö oikeus- ryhmä- ja sivustoasetteluissa jotain (piilo)-ongelmaa, onko periaate oikein tai miten asiantuntija ratkaisisi asian kätevämmin?
Muokk.
No niin, yllätys olikin jo valmiina :(
Vaikka ls -l -komennon tulostuksessa käyttäjä1:n ja käyttäjä2:n oikeudet näyttävät selaimen kannalta toimivilta, eivät käyttäjä1:n hakemiston tiedot ole näkyvissä pääteeltä sudoilemalla.
Hakmistoon ei pääse.
home$ cd käyttäjä1
-bash: cd: takaovi: Permission denied
/home$ sudo cd käyttäjä1
[sudo] password for slam1:
sudo: cd: command not found
Keinoksi tosin löytyy
$ sudo su
root@pilvikone/home# cd käyttäjä1
mutta se ei vaikuta kovin kätevältä eikä luultavasti olisi suositeltukaan.
Mikä käyttäjä1:n ja käyttäjä2:n ryhmä- ja muut-asetuksissa olisi ratkaiseva oikeus, ehkä ryhmän r, mennee kokeiluun heti, kun ehdin ....
Muokk 2.
Hakemistoon pääsee päätteeltä, kun lisätään oikeus
sudo chmod -R o+x käyttäjä1
mutta muu ei sitten taidakaan onnistua
/home/käyttäjä1$ ls
ls: cannot open directory '.': Permission denied
Pitäisikö normaalisti käytössä oleva pääkäyttäjä lisätä käyttäjä1:n ryhmään, luulisi sudoilun toimvan ilman tällaisia muutoksiakin.
-
Pitäisikö normaalisti käytössä oleva pääkäyttäjä lisätä käyttäjä1:n ryhmään
Kyllä, jos haluat rajata pääsyn vain käyttäjä1:lle ja käyttäjä1:n ryhmälle. Silloin kaikki tunnukset joiden pitää päästä käyttäjä1:n hakemistoon ja tiedostoihin on lisättävä käyttäjä1:n ryhmään. Root-tunnuksella on joka tapauksessa pääsy, joten sitä ei tarvitse erikseen lisätä.
-
Ehkä tämän säikeen uskaltaisi laittaa nyt ratkaistuksi.
Taas tältä foorumilta tuli arvokkaita neuvoja, joita ilman tiedostohallinta ei olisi onnistunut.
Kiitos kaikista neuvoista :)