LPS:Afsadm

Z HelpDesk
Verze z 21. 8. 2009, 17:58, kterou vytvořil Bodik (diskuse | příspěvky) (Nová stránka: Afsadm Afsadm je prostředkem, který umožňuje vybraným uživatelům provádět privilegované operace nad souborovým systémem AFS. Celek je založen na architektuře kl...)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
   Afsadm
   Afsadm je prostředkem, který umožňuje vybraným uživatelům provádět privilegované operace nad souborovým systémem AFS. Celek je založen na architektuře klient/server, jako autentizační mechanismus je využit Kerberos5, veškerá přenášená data jsou zabezpečena. Aplikace by ovšem potřebovala přepsat. S drobnými problémy přeloženo/rozchozeno pro IRIX, DUX i Linux.
   Dokument obsahuje následující části:
       * Klient - jak to ovldat
       * Server - kde je, co potřebuje, ...
       * Konfigurační soubor
   Klient
   V současné verzi je potřeba znát jméno serveru, který zprostředkuje provedení zadaného příkazu s privilegii administrátora AFS. Tímto prostředníkem je ody.zcu.cz. Připravena je i verze, ve které si klient zjistí jména KRB serverů, s nimiž se pokusí o navázání spojení (z obav o snížení bezpečnosti KRB serverů doposud nenasazeno). Program podporuje interaktivní i řádkový režim (vhodný do scriptů).
   afrodite> afsadm -h ody -c "backup volinfo sw" 
   backup: waiting for job termination
   DumpID    lvl parentID creation date     clone date       tape name
   904891405 0  0         09/04/1998 08:43  09/04/1998 08:53 sw.full3.1 (904891405)
   870259089 0  0         07/30/1997 12:38  07/30/1997 12:50 sw.full.1 (870259089)
   855746075 0  0         02/12/1997 12:14  02/12/1997 12:14 sw.full2.1 (855746075)
   Pokud výsledek snažení vypadá následovně
   afrodite> afsadm -h ody -c "vos release common"
   You are not privileged to execute this command.
   zkontrolujte nejprve svá oprávnění.
   afrodite> klist
   Ticket cache: /tmp/krb5cc_xdm_0
   Default principal: chlumsky@ZCU.CZ
   Valid starting      Expires             Service principal
   31 Jan 01 09:47:37  31 Jan 01 19:47:36  krbtgt/ZCU.CZ@ZCU.CZ
   31 Jan 01 09:47:37  31 Jan 01 19:47:36  afs@ZCU.CZ
   31 Jan 01 10:08:25  31 Jan 01 19:47:36  afsadm/ody.zcu.cz@ZCU.CZ
   Jako pricipal chlumsky pravděpodobně nemám oprávnění k provedení takové operace (obvykle používáme principal/root nebo principal/admin).
   Pokud dosáhnete stejně žalostného výsledku i v případě, že vlastníte stoprocentně správná pověření, potom kontaktujte člověka, který je odpovědný za konfiguraci afsadm - s nejvyšší pravděpodobností nejste totiž ve skupině vyvolených jedinců.
   afrodite> afsadm -h ody -c "vos release sw.proe -v"
   Command doesn't match any allowed regexp.
   V tomto případě nenašel server ve své konfiguraci žádný regulární výraz, který by váš příkaz uspokojil. Důvodem je, že skupina do které patříte nemá privilegia k jeho provedení, takový příkaz v konfiguraci neexistuje nebo je reg. výraz napsán tak, že neakceptuje argumenty v pořadí, ve kterém jste je napsali. Obvykle nejprve pomůže help k danému příkazu. Pokud se i po "precizním" zápisu příkazu nepovede operaci provést, kontaktujte opět správce afsadm.
   Jak bylo zmíněno, lze afsadm provozovat v interaktivním režimu. Program využívá knihovnu readline, která poskytuje plný komfort při editaci příkazové řádky (historie, mazání, pohyb na řádce).
   afrodite> afsadm -h ody
   afsadm> help
   vos release
   vos remove
   vos examine
   pts examine
   pts membership
   pts adduser
   pts remove
   fs setacl
   fs setquota
   fs listquota
   backup volinfo
   backup volrestore
   renameafsuser
   quota
   shforward
   help [command]
   quit/exit
   afsadm> help fs setacl
   fs setacl [-dir] directory [-acl] 
   afsadm> quit
   afrodite> 
   Pokud jsou s afsadm nějaké potíže (server se neozývá ap.), je možné vyzkoušet debug mode.
   afrodite> afsadm -h ody -c "vos exa common" -d
   Trying ody ...
   Connected to server
   Received init msg: 4 bytes
   Successfuly authenticated
   Sent encrypted message: 169 bytes
   Receiving encrypted stdout/stderr:
   1) Expected 225 bytes, received 225/69 bytes (encr/decr)
   common                            536871833 RW      17975 K  On-line
   2) Expected 663 bytes, received 663/500 bytes (encr/decr)
       ori.zcu.cz /vicepc 
       RWrite  536871833 ROnly  536871834 Backup          0 
       MaxQuota      20000 K 
       Creation    Fri Apr  5 10:51:04 1996
       Last Update Wed Jan 31 02:52:14 2001
       2487 accesses in the past day (i.e., vnode references)
       RWrite: 536871833     ROnly: 536871834 
       number of sites -> 9
          server nic.zcu.cz partition /vicepa RO Site 
          server oknos.zcu.cz partition /vicepb RO Site 
          server ori.zcu.cz partition /vicepc RW Site 
          server ori.zcu.
   3) Expected 471 bytes, received 471/299 bytes (encr/decr)
   cz partition /vicepc RO Site 
          server oneus.zcu.cz partition /vicepa RO Site 
          server ariane.zcu.cz partition /vicepb RO Site 
          server hp-2.zcu.cz partition /vicepa RO Site 
          server fennel.zcu.cz partition /vicepa RO Site 
          server dce.zcu.cz partition /vicepa RO Site 
   End of stdout/stderr [Total: 1359/868 bytes (encr/decr) in 2s]
   Server
   Služba afsadm je vázána na port 35353/tcp (viz /etc/services). Server je spouštěn daemonem inetd.
   afsadm stream tcp nowait root /usr/sbin/tcpd /software/krb5/sbin/afsadmd -S /var/afsadm/afsadm.keytab -c /var/afsadm -d
   Parametr -d dovoluje spuštění v debug modu, -S specifikuje uložení klíče (keytab), -c pak adresář s patřičnou konfigurací. Jak je patrné, tato služba využívá k autentizaci Kerberos5. Keytab by měl tedy obsahovat klíč pro afsadm/HOSTNAME@REALM.
   ody> klist -k /var/afsadm/afsadm.keytab 
   Keytab name: FILE:/var/afsadm/afsadm.keytab
   KVNO Principal
   ---- -------------------------------------------------------------------------
      3 afsadm/ody.zcu.cz@ZCU.CZ
   V případě potřeby lze využít i jiné jméno služby (než afsadm), to však vyžaduje na straně klienta i serveru použít parametr -s servicename a do keytabu umístit patřičný klíč (POZOR ! Netestováno !!!) Konfigurační soubor nese název afsadm.conf a je umístěn v určeném adresáři. Ten obsahuje podadresář bin, ve kterém jsou programy, jež může server spustit. Ve chvíli spuštění příkazu je proměnná PATH nastavena pouze do tohoto adresáře (potenciální problémy ve scriptech).
   ody> ls -lR /var/afsadm/
   total 128
   -rw-------    1 root     sys         6636 Jan 29 14:38 afsadm.conf
   -rw-------    1 root     sys         3011 Oct  3 12:18 afsadm.conf.03-10-2000
   -rw-------    1 root     sys         3841 Oct  6 07:47 afsadm.conf.06-10-2000
   -rw-------    1 root     sys         1667 Sep  7 13:55 afsadm.conf.07-09-00
   -rw-------    1 root     sys         2392 Sep 12 06:43 afsadm.conf.12-09-00
   -rw-------    1 root     sys         6073 Dec 19 14:58 afsadm.conf.19-12-2000
   -rw-------    1 root     sys         6294 Jan 26 07:13 afsadm.conf.26-01-2001
   -rw-------    1 root     sys         5621 Oct 31 06:41 afsadm.conf.31-10-2000
   -rw-------    1 root     sys         2364 Sep  8 15:44 afsadm.conf.new
   -rw-------    1 root     sys         1663 Aug  9 16:05 afsadm.conf.problem
   -rw-------    1 root     sys         1664 Aug  9 16:03 afsadm.conf.sav
   -rw-------    1 root     sys           57 Jul 20  2000 afsadm.keytab
   drwx------    2 root     sys          113 Nov 16 12:28 bin
   /var/afsadm/bin:
   total 24
   lrwx------    1 root     sys           21 Oct  6 07:54 backup -> /usr/afsws/etc/backup
   lrwx------    1 root     sys           17 Sep  7 15:44 fs -> /usr/afsws/bin/fs
   lrwx------    1 root     sys           18 Jul 21  2000 pts -> /usr/afsws/bin/pts
   -rwx------    1 root     sys         1392 Sep 26 10:59 quota
   -rwx------    1 root     sys         3267 Dec  1 14:14 renameafsuser
   -rwx------    1 root     sys          470 Sep 26 10:59 shforward
   lrwx------    1 root     sys           18 Jul 20  2000 vos -> /usr/afsws/etc/vos
   Aby byl celý mechanismus funkční, musí být principal afsadm.HOSTNAME (v tomto případě tedy afsadm.ody.zcu.cz) členem AFS skupiny system:administrators a privilegovaným uživatelem v souboru /usr/afs/etc/UserList na každém fileserveru (viz příkazy pts mem system:administrators, bos listusers servername).
   Veškeré aktivity jsou logovány standardním způsobem - syslog().
   Jan 31 10:41:52 7X:ody afsadmd[608203]: connect from afrodite.zcu.cz
   Jan 31 10:41:52 7D:ody afsadmd: Parsing configfile /var/afsadm/afsadm.conf
   Jan 31 10:41:52 7D:ody afsadmd: Principal chlumsky/root@ZCU.CZ
   Jan 31 10:41:53 7D:ody afsadmd: Received 169 bytes
   Jan 31 10:41:53 7D:ody afsadmd: Principal chlumsky/root@ZCU.CZ is trying to
   execute command vos exa common
   Jan 31 10:41:53 7D:ody afsadmd: Principal chlumsky/root@ZCU.CZ :
   system(/var/afsadm/bin/vos exa common)
   Jan 31 10:41:55 7D:ody afsadmd: Sent 1359 bytes in 2s [3 fragment(s)]
   Jan 31 10:46:07 7X:ody afsadmd[608382]: connect from eryx1.zcu.cz
   Jan 31 10:46:07 7D:ody afsadmd: Parsing configfile /var/afsadm/afsadm.conf
   Jan 31 10:46:07 7D:ody afsadmd: Principal sustr/admin@ZCU.CZ
   Jan 31 10:46:08 7D:ody afsadmd: Received 177 bytes
   Jan 31 10:46:08 7D:ody afsadmd: Principal sustr/admin@ZCU.CZ is trying to 
   execute command vos rel sw.nt40.is.avast
   Jan 31 10:46:08 7D:ody afsadmd: Principal sustr/admin@ZCU.CZ :
   system(/var/afsadm/bin/vos rel sw.nt40.is.avast)
   Jan 31 10:46:19 7D:ody afsadmd: Sent 201 bytes in 11s [1 fragment(s)]
   Konfigurace
   Konfigurační soubor afsadm.conf je tvořen ze dvou částí. První obsahuje definici skupin, druhá pak přiřazení skupin a regulárních výrazů. Při vytváření skupin lze využít vnořování, vnořená skupina musí být ale nejprve definována, jinak je považována za jméno principala. Předdefinovanou skupinou je anyuser (libovolný autentizovaný uživatel).
   #
   # Groups
   #
   # ( Predefined groups: anyuser )
   #
   # define group GrpName {
   #                               Principal1
   #                               Principal2
   #                               ...
   #                               GrpName1
   #                               GrpName2
   #                               ...
   #                       }
   #
   define group administrators {
                                   chlumsky/root@ZCU.CZ
                                   kejzlar/root@ZCU.CZ
                                   sitera/root@ZCU.CZ
                               }
   define group ISS {
                           pulc/root@ZCU.CZ
                           urbanec/root@ZCU.CZ
                           indy/root@ZCU.CZ
                           administrators
                   }



   Definice povolených příkazů a přiřazení ke skupinám může vypadat např. takto:
   #
   # Commands
   #
   # define command CmdSuite {
   #       GroupName1 "regexp1"
   #       Groupname2 "regexp2"
   #       ...
   #       } { "Command name" "Usage" }
   #
   #
   # vos release
   #
   define command vos_release {
     # vos rel sw.nt40*
     admswNT "^vos[ ]+rel(ease)?[ ]+(-id )?[ ]*(sw\.)?nt40[.a-zA-Z0-9_-]*[ ]*([ ]+-
   f)?([ ]+-v(erbose)?)?$"
     # vos rel common*
     lpsadmin "^vos[ ]+rel(ease)?[ ]+(-id )?[ ]*common[.a-zA-Z0-9_]*[ ]*([ ]+-f)?([
    ]+-v(erbose)?)?$"
   } { "vos release" "vos release [-id] volID [-f] [-v|-verbose]" }
   #
   # pts examine
   #
   define command pts_examine {
     anyuser "^pts[ ]+e(xa(mine)?)?[ ]+(-na(meorid)? )?[ ]*[:.a-zA-Z0-9_-]+$"
   } { "pts examine" "pts examine [-nameorid] user or group" }
   #
   # backup volrestore
   #
   define command backup_volr {
     backuprestore "^backup[ ]+volr(estore)?[ ]+(-s(erver)? )?[ ]*[a-zA-Z0-9.-]+[ ]
   +(-pa(rtition)? )?[/a-z]+[ ]+(-v(olume)? )?[:.a-zA-Z0-9_-]+(( -e | -extension )?
   )[a-zA-Z0-9.-_:]+)?(( -d | -date )?[0-9/]+)?([ ]+-n)?$"
   } { "backup volrestore" "backup volrestore [-server] server [-partition] partiti
   on [-volume] volumename [-extension] new_volume_name_extension [-date] date_from
   _which_to_restore [-n]" }


   Pokud je v konfiguračním souboru chyba, měl by server na toto místo upozornit. Klient v dané chvíli reaguje následovně:
   afrodite> afsadm -h ody -c help
   Received init msg: 0 bytes
   V logu pak nalezneme:
   Jan 31 11:39:56 7X:ody afsadmd[124858]: connect from afrodite.zcu.cz
   Jan 31 11:39:56 7D:ody afsadmd: Parsing configfile /tmp/afsadm/afsadm.conf
   Jan 31 11:39:56 3D:ody afsadmd: Quoted "string" expected at line 118
   V konfiguračním souboru na řádce 118 chybí uvozovky:
   #
   # pts examine
   #
   define command pts_examine {
     anyuser "^pts[ ]+exa(mine)*[ ]+(-nameorid )*[ ]*[:.a-zA-Z0-9]+$"
   } { "pts examine" "pts examine [-nameorid] user or group }
   Záloha konfigurací a zdrojový kód je dostupný na AFS v adresáři /afs/zcu.cz/project/software/afs/afsadm