Amikor a setfacl segítségével kezelem, hogy a gyermekfájloknak / könyvtáraknak milyen jogosultságokkal kell rendelkezniük, valamilyen okból a fájlok rendelkeznek az összes engedéllyel, kivéve az execute (“x”) egyet.

someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ getfacl . # file: . # owner: someuser # group: webs # flags: -s- user::rwx group::rwx other::rwx default:user::rwx default:group::rwx default:other::rwx someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ touch file someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ mkdir dir someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ ls -l total 4 drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir -rw-rw-rw- 1 someuser webs 0 paź 31 13:35 file 

Úgy gondoltam, hogy köze van az umask-hoz, de a különféle módon történő megváltoztatása soha nem adja meg a várt eredményt, hacsak nem hiányzik valami.

Hogyan lehet ezt kijavítani?

Válasz

Hauke Laging válasza azt próbálja mondani:

Bármely program, amely fájlt vagy könyvtárat hoz létre, meghatározza azt a módot (jogosultságokat), amelyre a fájlnak szüksége van. Ezt szinte mindig keményen kódolják a C programban (vagy bármilyen nyelven használják) ), és szinte soha nem érhető el közvetlenül a felhasználó számára. Ekkor a umask érték és az alapértelmezett ACL kikapcsolhatja az engedélybiteket, de nem add hozzá őket.

A problémád az, hogy míg a mkdir 777-es módot ad meg (rwxrwxrwx), szinte az összes A fájlokat létrehozó programok 666-ot (rw-rw-rw-) adnak meg. Ide tartozik a touch, a shell (I / O átirányításhoz; pl. program > file), a szerkesztők (vi, vim, emacs stb …), dd, split stb. Ezért a létrehozás után (e programok egyikével sem) azonnal megkapja a (z) rwxrwxrwx engedélyeket egy sima fájlra, függetlenül attól, hogy mit tesz az ACL-ekkel; létre kell hoznia a fájlt, majd chmod.

Ez a szabály néhány kivételt tartalmaz:

  • cp és a kapcsolódó programok (pl. cpio, tar stb.), amelyek lemásolják vagy más módon újra – hozzon létre egy fájlt, amely az új fájlt ugyanabba az üzemmódba állítja, mint az eredeti fájlt.
  • A bináris futtatható fájlokat létrehozó fordítók 777-es módot adnak meg (legalábbis, ha a fordítás sikeres), így a felhasználó valóban képes lesz végrehajtani az imént összeállított programot.

Megjegyzések

Válasz

Nem említi, hogy mi a ” a várható eredmény “. Feltételezem, hogy azok a fájlok, amelyek x bitekkel vannak beállítva.

Ezt nem lehet kikényszeríteni, mivel az alapértelmezett ACL (például az umask) csak megakadályozza az engedélyeket, de nem állítja be őket maga. Egy új könyvtár vagy fájl nem kap több engedélyt (felhasználó, csoport és egyebek számára), mint a open() vagy mkdir() hívás, amely létrehozza.

A fájlokhoz általában csak olvasási és írási engedély szükséges. De ha a fordító bináris fájlt hoz létre, akkor végrehajtási engedélyt is kér.

Megjegyzések

  • Válasza angol szempontból meglehetősen kaotikus. Kérem, javítsa ki? Én sem vagyok biztos abban, hogy ‘ mire gondolsz. Nézd meg a kódomat. A könyvtáraknál ez mindig működik.A fájlok esetében ez mindig működik, kivéve a ” x ” bitet. Akkor is, ha ‘ ez nem a megfelelő módja ennek, akkor mi az, kivéve az umask beállítását minden egyes könyvtár elérésekor?

Válasz

$ touch file && chmod a+x file

A többi válasz magyarázata kiváló. Szeretnék hozzáadni valamit, ami valóban választ ad a kérdésre.

Hogyan lehet ezt kijavítani?

meghatározott kóddal. @Scott elmondta, hogyan kell ezt csinálni,

létre kell hoznod a fájlt, majd chmod.

A válaszomban található kód megmutatja, hogyan kell csinálni és kiemeli t azáltal, hogy első helyre helyezi.

További magyarázat

Először is, az egyszerűség kedvéért egyszerűen hozzáadom a touch parancs, konkrétan touch file touch file && chmod a+x file lesz.

someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ touch file && chmod a+x file someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ mkdir dir someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ ls -l total 4 drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir -rwxrwxrwx 1 someuser webs 0 paź 31 13:35 file 

Itt ugyanazt a helyzetet állítom be a gépemen (Cygwin), hogy bebizonyítsam, hogy működik, majd ugyanezt tegyem egy virtuális Ubuntu dobozon, hogy megmutassam a beállítás különbségeit . (Ne feledje, hogy a tényleges javítási parancs nem változik, egyszerűen meg akarok mutatni néhány különbséget, ami felmerülhet setfacl -vel, valamint magam is ellenőrizni, hogy működik-e. .)

$ uname -a | head -n 1 CYGWIN_NT-10.0 my_machine 2.10.0(0.325/5/3) 2018-02-02 15:16 x86_64 Cygwin $ pwd /home/me $ mkdir user294034 $ setfacl -m u::rwx user294034/ $ setfacl -m d:u::rwx user294034/ $ setfacl -m g::rwX user294034/ setfacl: illegal acl entries $ setfacl -m g::rws user294034/ setfacl: illegal acl entries $ # I guess I don"t know how to get the `flags: -s-` on Cygwin $ setfacl -m g::rwx user294034/ $ setfacl -m d:g::rwx user294034/ $ setfacl -m o::rwx user294034/ $ setfacl -m d:o::rwx user294034/ $ cd user294034 $ getfacl . # file: . # owner: me # group: my_group user::rwx group::rwx other:rwx default:user::rwx default:group::rwx default:other:rwx $ # I admitted that I don"t know how to get `# flags: -s-` $ umask 0022 $ umask 0000 $ touch file $ mkdir dir $ # Here, we"ll see the same problem $ ls -l total 0 drwxrwxrwx+ 1 me my_group 0 Sep 18 20:31 dir -rw-rw-rw- 1 me my_group 0 Sep 18 20:31 file $ # Here, we"ll fix the problem $ rm file $ touch file && chmod a+x file $ ls -l total 0 drwxrwxrwx+ 1 me my_group 0 Sep 18 20:31 dir -rwxrwxrwx 1 me my_group 0 Sep 18 20:32 file 

Válasz

Megpróbálhatja ezt az egyszerű parancsfájlt kicserélni az egyes fájlok és könyvtárak ACL rekordjait, megadva az alapértelmezett engedélyeket.

$ cd ~ $ mkdir .config $ cat <<"EOF" >> .config/dacl user::rwx group::rwx other:r-x default:user::rwx default:group::rwx default:other:r-x EOF $ cat <<"EOF" >> .config/facl user::rw- group::rw- other:r-- default:user::rw- default:group::rw- default:other:r-- EOF $ cd / $ find $1 -type d -exec setfacl -f ~/.config/dacl {} \; $ find $1 -type f -exec setfacl -f ~/.config/facl {} \; $ getfacl . # file: . # owner: MyUser # group: Administrators user::rwx group::rwx other::r-x default:user::rwx default:group::rwx default:other::r-x 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük