Autor Téma: Použití příkazu mount/umount v bash scriptu, který se volá přes www(apache2)  (Přečteno 1032 krát)

Offline SED

  • Nováček
  • *
  • Příspěvků: 3
    • Zobrazit profil
Ahoj,
  měl bych prosím dotaz, jestli někdo nezkoušel pracovat s příkazem mount/umount v bash scriptu, který volal přes www stránky. Mám problém s příkazem mount/umount.

O co jde ?
  Mám skript, který se volá na webu. Web zavolá skript a předá mu data do proměnné $user. Apache2 server běží pod uživatelem test a i tento uživatel má právo užívat mount/umount v linuxu. (nastaveno v /etc/sudoers) zatím jen pro testování. Využívám Debian 9.

skript, který se volá na webu:
  #!/bin/bash
  user=$1
  sudo mkdir /db/$user/_data
  sudo chown sftpspravce:sftpadministrace /db/$user/_data
  sudo chmod 755 /db/$user/_data
  #řádek zapíše mount příkaz do souboru, který se později volá cronem, kdyby se restartoval server a bylo by potřeba opětovné mountovaní
  echo sudo mount --bind /org/data /db/$user/_data >> /map/$user.sh
  sudo mount --bind /org/data /db/$user/_data >> /map/$user.sh
  #vytvoří záznam v crontabs pro skript, aby došlo k znovu namoutování adresářů
  echo @reboot /map/$user.sh >> /var/spool/cron/crontabs/test


Pokud zkouším funkčnost přímo z terminálu vše funguje v pořádku. Pokud, ale skript volám z webu, tak se vytvoří složky, oprávnění, ale už se neprovede mount příkaz.
Zkoušel jsem odladit chyby: sudo mount --bind /org/data /db/$user/_data >> /map/$user.sh 2> /chyby/error.txt , ale žádná chyba nenastala.

Nějak nemůžu přijít na to proč z terminálu vše funguje, ale z webu nefunguje jen příkaz mount.

Nemáte někdo prosím zkušenosti?
Děkuji

Offline Petr Krčmář

  • Administrátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 462
  • Linuxák na plný úvazek
    • Zobrazit profil
    • www.petrkrcmar.cz
V takových situacích bývá obvykle problém s jinak nastaveným prostředím, zejména s cestami v PATH. Nechej si někam příkazem env ty proměnné vypsat a porovnej je. Tipuju, že nemáš cestu k příkazu mount.

Musíš buď to prostředí u uživatele upravit nebo volat ten příkaz absolutní cestou.

Offline SED

  • Nováček
  • *
  • Příspěvků: 3
    • Zobrazit profil
Záznamy v /etc/sudoers mám:
test ALL=NOPASSWD:/usr/bin/mount
test ALL=NOPASSWD:/usr/bin/umount

v $PATH mám /usr/bin: (+ přímo co jsem se díval tak v umístění /etc/bin jsou příkazy mount i umount)

Když spustím skript jako uživatel test přímo v terminálu, tak vše funguje v pořádku. Dojde k vytvoření symbolického linku, ale pokud to samé udělám přes web vytvoří se složka, oprávnění, ale už neproběhne mount nebo umount příkaz. A ani nedostanu žádnou chybu.

« Poslední změna: 06. 08. 2021, 08:09:33 od SED »

Offline SED

  • Nováček
  • *
  • Příspěvků: 3
    • Zobrazit profil
Vyzkoušeno i přidání manuálně záznam do /etc/fstab a následně spuštěním příazu mount -a. Záznam se přídá v pořádku. Ale příkaz mount -a se neprovede. A chyba žádná nenastane.