zistenie donovského priečinku

Sekcia: Programovanie 20.11.2010 | 18:57
jano   Návštevník
Potrebujem zistiť domovský priečinok používateľa pomocou skriptu, ktorý bol spustený cez "sudo -u $user skript". Usera som zistil pomocou "id -un", lenže s echo ~user to neviem skombinovať. Máte niekto nejaké inteligentné riešenie ?
    • Re: zistenie donovského priečinku 20.11.2010 | 19:08
      jano   Návštevník
      Dodávam, že nejde o zadanie z feinomore ani z inej fakulty, či školy.
      Nie je na to náhodou v systéme nejeký jednoduchý príkaz ?
      Napadlo ma zatial toto "cat /etc/passwd | grep ^`id -un` | cut -d ":" -f6"
      Bude to v pohode, alebo to má podľa vás nejaké chyby ?
      • Re: zistenie donovského priečinku 20.11.2010 | 19:17
        Avatar m4jkl   Používateľ
        podla mna je to spravne, malo by to fungovat. popripade mozes skusit nieco taketo:
        eval echo ~`id -un`
        • Re: zistenie donovského priečinku 20.11.2010 | 19:26
          jano   Návštevník
          Ďakujem to je to, čo som potreboval. A ako to narvem do premennej ?
          • Re: zistenie donovského priečinku 20.11.2010 | 19:43
            Avatar m4jkl   Používateľ
            PREMENNA=$(eval echo ~`id -un`)
            • Re: zistenie donovského priečinku 20.11.2010 | 19:50
              jano   Návštevník
              Ešte raz ti ďakujem, ja ešte celkom nechápem toto skriptovanie a kam a ako putujú tieto vstupy a výstupy z príkazov. Ak by si mi ty alebo niekto iný mohli odporučiť niečo ohľadom skriptovania, bol by som vďačný.
              • Re: zistenie donovského priečinku 22.11.2010 | 11:32
                Avatar Fridolín Pokorný Fedora 21  Používateľ
                Pouzi radsej riesenie s /etc/passwd, nakolko uzivatel nemusi mat domovsky priecinok v /home/meno_uzivatela, a casto ho tam aj nema.
                • Re: zistenie donovského priečinku 22.11.2010 | 11:53
                  Avatar m4jkl   Používateľ
                  eval echo ~`id -un` berie informacie tiez z /etc/password, cize je to jedno
                  • Re: zistenie donovského priečinku 22.11.2010 | 11:53
                    Avatar m4jkl   Používateľ
                    hh, nie password, ale passwd samozrejme:)
                  • Re: zistenie donovského priečinku 22.11.2010 | 16:43
                    Avatar Fridolín Pokorný Fedora 21  Používateľ
                    Aha id... este som spal moja chyba :)
                    Treba si to vsak uvedomit. Kazdopadne ten prikaz je dobre...
            • Re: zistenie donovského priečinku 22.11.2010 | 12:46
              deadmail   Návštevník
              Takisto aj:
               eval PREMENNA=~`id -un`
              
              • Re: zistenie donovského priečinku 22.11.2010 | 13:14
                Avatar m4jkl   Používateľ
                pravda, to eval a echo je tam uplne zbytocne :D
      • Re: zistenie domovského priečinku 20.11.2010 | 19:21
        jano   Návštevník
        Opravujem sa "cat /etc/passwd | grep ^`id -un`: | cut -d ":" -f6" Tá : kôli tomu, aby ak sa volá niekto `id -un`xxx aby nevypísalo aj jeho.
    • Re: zistenie donovského priečinku 22.11.2010 | 12:43
      deadmail   Návštevník
      Priamo podla cisla cez awk:
      awk -F ':' '$3 == '`id -u`' {print $6}' /etc/passwd
      
    • Re: zistenie donovského priečinku 22.11.2010 | 17:11
      dnfs jrglkh jfkjhvfujngk   Návštevník
      cav,

      nic v zlom, ale kazdy uzivat ma uz automaticky definovanu premenu HOME, ktora obsahuje cestu uzivatelovi.

      vypis cesty k domovskemu priecinku: echo $HOME
      • Re: zistenie donovského priečinku 22.11.2010 | 22:46
        Avatar m4jkl   Používateľ
        tvoj postup nemusi fungovat ked zadas sudo echo $HOME
        • Re: zistenie donovského priečinku 22.11.2010 | 23:51
          WlaSaTy   Návštevník
          Ten postup funguje tak ako bol nadizajnovany. Nastroj sudo nemusi (a vela krat ani nesmie) menit premenne prostredia ktore maju podla konfiguracie ostat tak.

          Za domacu ulohu si skus pozriet rozdiel medzi uid a euid. A k tomu si pozri aky mas domovsky adresar ak spustis posix kompatibilny interpreter prikazov cez sudo.
          • Re: zistenie donovského priečinku 23.11.2010 | 00:03
            Avatar m4jkl   Používateľ
            preto som napisal, ze fungovat nemusi.
            z manualovej stranky sudo:
            -H          The -H (HOME) option sets the HOME environment variable to
                               the homedir of the target user (root by default) as
                               specified in passwd(5).
            ...
            

            za domacu ulohu si skus precitac toto vlakno od zaciatku :)
            otazka znela "zistiť domovský priečinok používateľa pomocou skriptu, ktorý bol spustený cez "sudo -u $user skript"". cize cely tento postup pomocou premennej $HOME je zly.
            • Re: zistenie donovského priečinku 23.11.2010 | 00:20
              WlaSaTy   Návštevník
              Preto som vravel o tom uid a euid, jedna sa o dve rozne hodnoty identifikatora uzivatela pre spusteny process.

              Inak, prikaz getent poznas? Pretoze ten funguje aj v prostredi ktore nema lokalne ulozene /etc/passwd ale centralne managovane napriklad cez LDAP. Myslim ze by si sa mal zaoberat tou cestou.
              • Re: zistenie donovského priečinku 23.11.2010 | 00:35
                Avatar m4jkl   Používateľ
                uid a euid samozrejme poznam (dokonca aj saved-uid :))

                ten prikaz getent som nepoznal, je to urcite lepsie ako sa snazit sam si naparsovat lokalny /etc/passwd, ktory ako hovoris ani nemusi relevantny. na mojom stroji aj prikaz id (aspon gnu verzia) pracuje s nsswitch-om, cize by to malo byt jedno.
                • Re: zistenie donovského priečinku 23.11.2010 | 00:59
                  WlaSaTy   Návštevník
                  Parsovat to budes.

                  Inak, nasilne riesenie domovskeho adresara ma vyznam len pre trojan typu script kiddie. Budes to distribuovat aj cez Ubuntu ONE? Pretoze zapis alebo citanie vykonane v procese s s znizenymi pravami obvykle zlyha. Nepredpokladam ze som sam co presuva spracovanie pod konta ktore maju okresane pristupy, takze mam na koncept "vzdy home" svoj nazor.
                  • Re: zistenie donovského priečinku 23.11.2010 | 01:33
                    Avatar m4jkl   Používateľ
                    parsovat to bude nejaka funkcia v libc;)

                    uz by si asi mal ist spat :) ja som tuto temu nezalozil, povodny autor uz si asi davno vybral nejake riesenie a uz ho tu mozno nikdy neuvidime :)

                    dalsiu temu mozno zalozis ty. a mozno sa bude volat "stratil sa obsah HOME adresara", hhhh :)
                    • Re: zistenie donovského priečinku 23.11.2010 | 01:47
                      WlaSaTy   Návštevník
                      Mimochodom vsimol si si ze v tvojom priklade sudo echo $HOME sa expandovala premenna este pred predanim parametru prikazu sudo ktory to nasledne predal dalej?

                      Myslim, ze si to mal aspon vyeskejpovat kedsitouz uvadzalako priklad tohoto typu. Overit si to mozes po zapnuti debug modu v interpreteri prikazov.

                      Inak, to s tym spankom. Chces ma ulozit?