Közérdekű adatok nyilvánossága vs /etc/sudoers.d

Kis hazánkban törvény rendelkezik a közérdekű adatok nyilvánosságáról, ami jó dolog. Ettől teljesen függetlenül a 'sudo' nevű csodaprogram legvágja a hisztit, ha a /etc/sudoers.d könyvtár nem world-readable.

Ami azért furcsa, mert a /etc/sudoers file esetén oké neki a 0600. Ugyanis azt gondolná az ember, hogy a haxorok támagtásán kívül nincs ok arra, hogy a sudoers.d tartalmát bárki is tudja olvasni a rendszergazdán kívül.

Akkor most a tükör görbe, vagy én vagyok értek valamit rosszul? (Teoretikusan még az utóbbi is lehetséges, csak valószínűtlen.)

$ ls -ld /etc/sudoers.d
drwx------ 2 root root 4096 Nov 13 10:01 /etc/sudoers.d
$ sudo -u masikuser valamiprogram
sudo: unable to stat /etc/sudoers.d/README: Permission denied
sudo: unable to stat /etc/sudoers.d/file1: Permission denied
sudo: unable to stat /etc/sudoers.d/file2: Permission denied

 

Szerk: hiszti off, maguk a fájlok a sudoers.d könyvtárban már lehetnek 0600-as jogúak, szóval a gond kisebb, mint gondoltam.

 

Szerk (másnap): sikerült haladni a nyomozással (köszönöm a kollégák segítő hozzászólásait!), kiderült, hogy
1. nem kell 0755 jog a /etc/sudoers.d könyvtárra, elég akár a 0710 is
2. forrásból telepítettem az 1.8.28 verziót, annak már teljesen oké a 0700 jogú sudoers.d

Hozzászólások

Szerkesztve: 2019. 11. 13., sze – 15:24

Érdekes... CentOS7-en nincs hiszti, max. akkor, ha a sudoers.d alatt van olyan fájl, aminek a jogosultsága túl megengedő:

#
# getfacl /etc/sudoers.d/
getfacl: Removing leading '/' from absolute path names
# file: etc/sudoers.d/
# owner: root
# group: root
user::rwx
group::r-x
other::---
#
# ls -ld /etc/sudoers.d/
drwxr-x---. 2 root root 6 Oct 24 17:27 /etc/sudoers.d/
# sudo -V
Sudo version 1.8.23
...

Az már igaz, hogy a sudo verzióját nem is néztem, azt mondja, hogy:

Sudo version 1.8.10p3
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43
Sudoers I/O plugin version 1.8.10p3

Na majd egy frissel is megnézem.

Szerkesztés: ne éljek, pusztán a g+x megadásától megjön a kedve:

$ ls -ld /etc/sudoers.d
drwx--x--- 2 root root 4096 Nov 13 10:01 /etc/sudoers.d
$ sudo -u ...
működik

$ ls -ld /etc/sudoers.d
drwx------ 2 root root 4096 Nov 13 10:01 /etc/sudoers.d
$ sudo -u ...
sudo: unable to stat /etc/sudoers.d/filename1: Permission denied
...

Szóval nem igaz, hogy a /etc/sudoers.d world-readable kell legyen, inkább az kérdés, hogy miért/hogyan ellenőrzi a g+x jogot.

Szerkesztve: 2019. 11. 13., sze – 16:14

Ez nem sudo. Directoryra kell az x, ha el akarod érni, ami alatta van. A read csak arra jó, hogy magát a dirt meg tudd statolni (ezért látja a fileneveket). Isten hozott a unix permissionök csodálatos világában. 700, és jó lesz.

Bocsánat, nem volt világos a topiknyitóból, hogy pontosan mi a gondom, tehát hogy 0755 kell neki a /etc/sudoers.d-re, nem elég 0700. [Azóta szerkesztettem a topiknyitó szövegét.]

Azóta ezt pontosítottuk, elég a 0710 is. Mondjuk azt se értem pontosan, hogy miért kell neki.

    unable to open/read /etc/sudoers
      The sudoers file could not be opened for reading.  This can happen when the sudoers file is located on a remote file system that maps user ID 0 to a different value.  Normally,
      sudoers tries to open the sudoers file using group permissions to avoid this problem.  Consider either changing the ownership of /etc/sudoers or adding an argument like
      “sudoers_uid=N” (where ‘N’ is the user ID that owns the sudoers file) to the end of the sudoers Plugin line in the sudo.conf(5) file.

sudoers.d-ről nincs benne szó, de gondolom ugyanez. Szóval igazából a group számít.