Kun käytän setfacl-tiedostoa hallitakseni, millaisilla käyttöoikeuksilla lasten tiedostoilla / hakemistoilla tulisi olla, jostain syystä tiedostoilla on kaikki oikeudet paitsi suoritus (”x”) yksi.

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 

Luulin, että sillä on jotain tekemistä umaskin kanssa, mutta sen muuttaminen eri tavoin ei koskaan anna odotettua tulosta, ellei minusta puutu jotain.

Kuinka tämä voidaan korjata?

vastaus

Hauke Lagingin vastaus yrittää sanoa:

Mikä tahansa tiedosto tai hakemiston luova ohjelma määrittää tilan (käyttöoikeudet), jonka se haluaa tiedostolle. Tämä on melkein aina kovakoodattu C-ohjelmassa (tai mitä tahansa kieltä käytetään) ) ja tuskin koskaan käyttäjän suoraan käytettävissä. Sitten umask -arvo ja oletusarvoinen ACL voivat sammuttaa käyttöoikeusbitit, mutta eivät lisää ne.

Ongelmasi on, että vaikka mkdir määrittelee tilan 777 (rwxrwxrwx), melkein kaikki tiedostoja luovat ohjelmat määrittävät 666 (rw-rw-rw-). Tämä sisältää touch, kuoren (I / O-uudelleenohjausta varten; esim. program > file), toimittajat (vi, vim, emacs jne …), dd, split ja niin edelleen. Siksi et saa rwxrwxrwx -käyttöoikeuksia tavalliseen tiedostoon heti luomisen jälkeen (millä tahansa näistä ohjelmista), riippumatta siitä, mitä teet ACL-luetteloiden kanssa; sinun on luotava tiedosto ja sitten chmod se.

Tähän sääntöön on muutama poikkeus:

  • cp ja siihen liittyvät ohjelmat (esim. cpio, tar jne.), jotka kopioivat tai muuten muokkaavat -luo tiedosto, joka asettaa (yrittää) asettaa uuden tiedoston samaan tilaan kuin alkuperäinen tiedosto.
  • Kääntäjät, jotka luovat binaarisia suoritettavia tiedostoja, määrittävät tilan 777 (ainakin, jos kääntäminen onnistuu), joten käyttäjä voi todella suorittaa juuri kokoamansa ohjelman.

Kommentit

Vastaus

Et mainitse mitä ” odotettu tulos ”on. Oletan, että tiedostoissa on x -bittejä.

Et voi pakottaa sitä oletusarvoisena ACL-luettelona (kuten umask) vain estää käyttöoikeuksia ei aseta niitä itse. Uusi hakemisto tai tiedosto ei saa enempää käyttöoikeuksia (käyttäjille, ryhmille ja muille) kuin open() tai mkdir() kutsu, joka luo sen.

Tiedostoille vaaditaan yleensä vain luku- ja kirjoitusoikeuksia. Mutta jos kääntäjä luo binääritiedoston, se pyytää myös suorituslupaa.

Kommentit

  • Vastauksesi on melko kaoottinen englanninkielisestä näkökulmasta. Voitteko korjata sen? En myöskään ole varma ’ mitä tarkoitat. Katso koodini. Hakemistoille se toimii aina.Tiedostoille se toimii myös aina paitsi ” x ” -bitti. Jos ’ ei ole oikea tapa tehdä niin, niin mitä paitsi asetetaan umask joka kerta, kun hakemistoa käytetään?

Vastaus

$ touch file && chmod a+x file

Muiden vastausten selitykset ovat erinomaisia. Haluan lisätä jotain, joka todella antaa vastauksen kysymykseen.

Kuinka tämä voidaan korjata?

tietyllä koodilla. @Scott kertoi kuinka tämä tehdään.

sinun on luotava tiedosto ja sitten chmod se.

Vastauksessani oleva koodi näyttää, miten se tehdään ja korostaa sen asettamalla sen ensin.


Lisää selitystä

Aloittaakseni yksinkertaisuuden vuoksi yksinkertaisesti lisätään touch -operaation antama komento, erityisesti touch file, muuttuu touch file && chmod a+x file.

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 

Täällä asetan saman tilanteen koneelleni (Cygwin) osoittaakseni, että se toimii, ja teen saman virtuaalisessa Ubuntu-ruudussa näyttämään asennuksen erot . (Huomaa, että varsinainen komento asioiden korjaamiseksi ei muutu, haluan vain näyttää joitain eroja, jotka saattavat syntyä setfacl kanssa, ja vahvistaa itse, että se toimii .)

$ 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 

Vastaa

Voit kokeilla tätä yksinkertaista komentosarjaa korvaamaan kunkin tiedoston ja hakemiston ACL-tietueet antamalla määritetyt oletusoikeudet.

$ 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 

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *