Öruggar skrár/möppur með því að nota ACLs (Access Control Lists) í Linux


Sem kerfisstjóri mun fyrsta forgangsverkefni okkar vera að vernda og tryggja gögn fyrir óviðkomandi aðgangi. Við erum öll meðvituð um heimildirnar sem við setjum með því að nota nokkrar gagnlegar Linux skipanir eins og chmod, chown, chgrp ... osfrv. Hins vegar hafa þessi sjálfgefna heimildasett ákveðnar takmarkanir og virka stundum ekki samkvæmt þörfum okkar. Til dæmis getum við ekki sett upp mismunandi heimildasett fyrir mismunandi notendur á sömu möppu eða skrá. Þannig voru aðgangsstýringarlistar (ACL) innleiddar.

Segjum að þú sért með þrjá notendur, 'tecmint1', 'tecmint2' og 'tecmint3'. Hver með sameiginlegan hóp segir „acl“. Notandinn 'tecmint1' vill að aðeins 'tecmint2' notandi geti lesið og fengið aðgang að skrám í eigu 'tecmint1' og enginn annar ætti að hafa aðgang að því.

ACLs (Access Control Lists) gerir okkur kleift að gera sömu bragðið. Þessar aðgangsheimildir gera okkur kleift að veita leyfi fyrir notanda, hóp og hvaða hóp sem er af notendum sem eru ekki á hópalista notanda.

Athugið: Samkvæmt Redhat vöruskjölum veitir það ACL stuðning fyrir ext3 skráarkerfi og NFS útflutt skráarkerfi.

Hvernig á að athuga ACL stuðning í Linux kerfum

Áður en þú heldur áfram ættirðu að hafa stuðning fyrir ACL á núverandi kjarna og uppsettum skráarkerfum.

Keyrðu eftirfarandi skipun til að athuga ACL Stuðningur fyrir skráarkerfi og POSIX_ACL=Y valmöguleikann (ef það er N í stað Y, þá þýðir það að kjarninn styður ekki ACL og þarf að setja saman aftur).

 grep -i acl /boot/config*

CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

Áður en þú byrjar að spila með ACL skaltu ganga úr skugga um að þú hafir nauðsynlega pakka uppsetta. Hér að neðan eru nauðsynlegir pakkar sem þarf að setja upp með yum eða apt-get.

 yum install nfs4-acl-tools acl libacl		[on RedHat based systems]
 mount  | grep -i root

/dev/mapper/fedora-root on / type ext4 (rw,relatime,data=ordered)

En í okkar tilviki sýnir það ekki acl sjálfgefið. Svo næst höfum við möguleika á að setja upp festu skiptinguna aftur með því að nota acl valkostinn. En áður en haldið er áfram höfum við annan möguleika til að ganga úr skugga um að skiptingin sé sett upp með acl valmöguleika eða ekki, vegna þess að fyrir nýlegt kerfi gæti það verið samþætt með sjálfgefnum festingarvalkosti.

 tune2fs -l /dev/mapper/fedora-root | grep acl

Default mount options:    user_xattr acl

Í úttakinu hér að ofan geturðu séð að sjálfgefinn festingarvalkostur hefur nú þegar stuðning fyrir acl. Annar valkostur er að setja aftur skiptinguna eins og sýnt er hér að neðan.

 mount -o remount,acl /

Næst skaltu bæta færslunni hér að neðan við '/etc/fstab' skrána til að gera hana varanlega.

/dev/mapper/fedora-root /	ext4    defaults,acl 1 1

Aftur, endursettu skiptinguna.

 mount -o remount  /

Á NFS netþjóni, ef skráarkerfi sem er flutt út af NSF netþjóni styður ACL og ACL er hægt að lesa af NFS viðskiptavinum, þá eru ACL notuð af biðlarakerfi.

Til að slökkva á ACL á NFS deilingu þarftu að bæta við valkostinum \no_acl í '/etc/exportfs' skránni á NFS Server. Til að slökkva á honum á NSF biðlarahlið aftur, notaðu \no_acl valmöguleikann meðan á tengingu stendur.

Hvernig á að innleiða ACL stuðning í Linux kerfum

Það eru tvær tegundir af ACL:

  1. Aðgangur ACL: Aðgangur ACL eru notuð til að veita heimildir á hvaða skrá eða möppu sem er.
  2. Sjálfgefin ACL: Sjálfgefin ACL eru notuð til að veita/stilla aðgangsstýringarlista eingöngu á tiltekinni skrá.

Munurinn á Access ACL og Default ACL:

  1. Sjálfgefið ACL er aðeins hægt að nota á skráarstigi.
  2. Allar undirskrár eða skrár sem eru búnar til í þeirri möppu munu erfa ACL frá móðurskránni. Á hinn bóginn erfir skrá sjálfgefna ACL sem aðgangs ACL.
  3. Við notum \–d til að stilla sjálfgefna ACL og sjálfgefin ACL eru valfrjáls.

Til að ákvarða sjálfgefna ACL fyrir tiltekna skrá eða möppu skaltu nota 'getfacl' skipunina. Í dæminu hér að neðan er getfacl notað til að fá sjálfgefna ACL fyrir möppuna 'Music'.

 getfacl Music/

# file: Music/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::rw-

Til að stilla sjálfgefna ACL fyrir tiltekna skrá eða möppu, notaðu 'setfacl' skipunina. Í dæminu hér að neðan mun setfacl skipunin setja nýja ACLs (lesa og keyra) á möppu 'Music'.

 setfacl -m d:o:rx Music/
 getfacl Music/
# file: Music/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

Notaðu 'setfacl' skipunina til að stilla eða breyta á hvaða skrá eða möppu sem er. Til dæmis til að gefa notandanum „tecmint1“ les- og ritheimildir.

# setfacl -m u:tecmint1:rw /tecmint1/example

Notaðu „getfacl“ skipunina til að skoða ACL á hvaða skrá eða möppu sem er. Til dæmis, til að skoða ACL á '/tecmint1/example' notaðu skipunina fyrir neðan.

# getfacl /tecmint1/example

# file: tecmint1/example/
# owner: tecmint1
# group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---

Til að fjarlægja ACL úr hvaða skrá/möppu sem er, notum við x og b valkostina eins og sýnt er hér að neðan.

# setfacl -x ACL file/directory  	# remove only specified ACL from file/directory.

# setfacl -b  file/directory   		#removing all ACL from file/direcoty

Við skulum innleiða ACL á eftirfarandi atburðarás.

Tveir notendur (tecmint1 og tecmint2), báðir með sameiginlegan aukahóp sem heitir 'acl'. Við munum búa til eina möppu í eigu 'tecmint1' og veita notandanum 'tecmint2' lestrar- og framkvæmdaleyfi á þeirri möppu.

Skref 1: Búðu til tvo notendur og fjarlægðu lykilorð af báðum

 for user in tecmint1 tecmint2

> do
> useradd $user
> passwd -d $user
> done
Removing password for user tecmint1.
passwd: Success
Removing password for user tecmint2.
passwd: Success

Skref 2: Búðu til hóp og notendur í aukahóp.

 groupadd acl
 usermod -G acl tecmint1
 usermod -G acl tecmint2

Skref 3: Búðu til möppu /tecmint og breyttu eignarhaldi í tecmint1.

 mkdir /tecmint1
 chown tecmint1 /tecmint1/
 ls -ld /tecmint1/

drwxr-xr-x 2 tecmint1 root 4096 Apr 17 14:46 /tecmint1/
 getfacl /tecmint1

getfacl: Removing leading '/' from absolute path names
# file: tecmint1
# owner: tecmint1
# group: root
user::rwx
group::r-x
other::r-x

Skref 4: Skráðu þig inn með tecmint1 og búðu til möppu í /tecmint möppu.

[[email  ~]$ su - tecmint1

Last login: Thu Apr 17 14:49:16 IST 2014 on pts/4
[[email  ~]$ cd /tecmint1/
[[email  tecmint1]$ mkdir example
[[email  tecmint1]$ ll

total 4
drwxrwxr-x 2 tecmint1 tecmint1 4096 Apr 17 14:50 example
[[email  tecmint1]$ whoami 
tecmint1

Skref 5: Stilltu nú ACL með því að nota 'setfacl', þannig að 'tecmint1' mun hafa allar rwx heimildir, 'tecmint2' mun aðeins hafa lesheimildir á 'dæmi' möppunni og aðrir hafa engar heimildir.

$ setfacl -m u:tecmint1:rwx example/
$ setfacl -m u:tecmint2:r-- example/
$ setfacl -m  other:--- example/
$ getfacl example/

# file: example
# owner: tecmint1
# group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::r-x
mask::rwx
other::---

Skref 6: Skráðu þig nú inn með öðrum notanda, þ.e. 'tecmint2' á annarri flugstöð og breyttu möppu í '/tecmint1'. Reyndu nú að skoða innihaldið með því að nota 'ls' skipunina og reyndu síðan að skipta um möppu og sjáðu muninn eins og hér að neðan.

[[email  ~]$ su - tecmint2

Last login: Thu Apr 17 15:03:31 IST 2014 on pts/5
[[email  ~]$ cd /tecmint1/
[[email  tecmint1]$ ls -lR example/
example/:
total 0
[[email  tecmint1]$ cd example/

-bash: cd: example/: Permission denied
[[email  tecmint1]$ getfacl example/

# file: example
# owner: tecmint1
# group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---

Skref 7: Gefðu nú 'framkvæma' leyfi til 'tecmint2' í 'dæmi' möppunni og notaðu síðan 'cd' skipunina til að sjá áhrifin. Nú hefur 'tecmint2' heimildir til að skoða og breyta möppu, en hafa ekki heimildir til að skrifa neitt.

[[email  tecmint1]$ setfacl -m u:tecmint2:r-x example/
[[email  tecmint1]$ getfacl example/

# file: example
# owner: tecmint1
# group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r-x
group::rwx
mask::rwx
other::---
[[email  ~]$ su - tecmint2

Last login: Thu Apr 17 15:09:49 IST 2014 on pts/5
[[email  ~]$ cd /tecmint1/
[[email  tecmint1]$ cd example/
[[email  example]$ getfacl .
[[email  example]$ mkdir test

mkdir: cannot create directory ‘test’: Permission denied
[[email  example]$ touch test

touch: cannot touch ‘test’: Permission denied

Athugið: Eftir innleiðingu ACL muntu sjá auka „+“ tákn fyrir „ls –l“ úttak eins og hér að neðan.

 ll

total 4
drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example

Tilvísunartenglar

Skjöl ACL