Turvalised failid/kataloogid, kasutades Linuxis ACL-e (pääsukontrolli loendid)


Süsteemiadministraatorina on meie esmatähtis kaitsta ja kaitsta andmeid volitamata juurdepääsu eest. Me kõik oleme teadlikud õigustest, mille oleme määranud mõne kasuliku Linuxi käsu abil, näiteks chmod, chown, chgrp ... jne. Kuid neil vaikimisi õiguste komplektidel on teatud piirangud ja mõnikord ei pruugi need töötada vastavalt meie vajadustele. Näiteks ei saa me ühes kataloogis või failis seadistada erinevatele kasutajatele erinevaid lubade komplekte. Seega rakendati juurdepääsu kontrollnimekirjad (ACL).

Oletame, et teil on kolm kasutajat: „tecmint1”, „tecmint2” ja „tecmint3”. Igaühel on ühine rühm öelda „acl”. Kasutaja 'tecmint1' soovib, et ainult 'tecmint2' kasutaja saaks lugeda ja juurde pääseda failidele, mis kuuluvad 'tecmint1' -le ja kellelgi teisel ei peaks olema sellele juurdepääsu.

ACL-id (pääsukontrolli loendid) võimaldavad meil sama trikki teha. Need ACL-id võimaldavad meil anda õigusi kasutajale, rühmale ja mis tahes kasutajate rühmale, kes pole kasutaja grupiloendis.

Märkus. Vastavalt Redhati tootedokumentatsioonile pakub see ACL-tuge ext3-failisüsteemile ja NFS-i eksporditud failisüsteemidele.

Kuidas kontrollida ACL-i tuge Linuxi süsteemides

Enne edasiliikumist peaks teil olema praeguste kerneli ja ühendatud failisüsteemide ACL-ide tugi.

Käivitage järgmine käsk, et kontrollida failisüsteemi ACL-tuge ja valikut POSIX_ACL = Y (kui Y asemel on N, tähendab see, et kernel ei toeta ACL-i ja tuleb uuesti kompileerida).

 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

Enne ACL-idega mängimise alustamist veenduge, et olete installinud paketid. Allpool on nõutavad paketid, mis tuleb installida yum või apt-get abil.

 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)

Kuid meie puhul ei kuvata vaikimisi akl. Niisiis on meil järgmine võimalus paigaldatud sektsioon uuesti acl-valiku abil uuesti paigaldada. Kuid enne edasiliikumist on meil veel üks võimalus veenduda, kas partitsioon on kinnitatud acl-suvandiga või mitte, sest hiljutise süsteemi jaoks võib see olla integreeritud vaikimisi ühendamisvalikuga.

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

Default mount options:    user_xattr acl

Ülaltoodud väljundis näete, et vaikimisi ühendamisvalikul on juba ACL-i tugi. Teine võimalus on sektsiooni uuesti paigaldamine, nagu allpool näidatud.

 mount -o remount,acl /

Seejärel lisage allolev kirje faili '/ etc/fstab', et see püsivaks muuta.

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

Jällegi paigaldage sektsioon uuesti.

 mount -o remount  /

NFS-serveris, kui NSF-serveri poolt eksporditav failisüsteem toetab ACL-i ja ACL-e saab lugeda NFS-i klientidele, kasutab kliendisüsteem ACL-e.

ACL-ide keelamiseks NFS-i jagamisel peate lisama NFS-serveri faili "/ etc/exportfs" valiku "no_acl". Selle keelamiseks NSF-i kliendipoolel kasutage ühendamise ajal uuesti valikut „no_acl”.

Kuidas rakendada ACL-i tuge Linuxi süsteemides

ACL-sid on kahte tüüpi:

  1. Juurdepääsu ACL-id: juurdepääsu ACL-sid kasutatakse mis tahes faili või kataloogi lubade andmiseks
  2. Vaikimisi ACL-id: Vaikimisi ACL-e kasutatakse juurdepääsu kontrollnimekirja andmiseks/määramiseks ainult kindlas kataloogis.

Juurdepääsu ACL-i ja vaikevõrgu ACL-i erinevus:

  1. Vaikimisi ACL-i saab kasutada ainult kataloogide tasemel.
  2. Iga selles kataloogis loodud alamkataloog või fail pärib ACL-id oma vanemkataloogist. Teisalt pärib fail vaikimisi ACL-id kui oma juurdepääsu ACL-id.
  3. Kasutame ACL-i vaikeseadete määramiseks tähist „–d” ja valikulised ACL-vaikelingid on valikulised.

Konkreetse faili või kataloogi ACL-ide vaikeväärtuste määramiseks kasutage käsku getfacl. Allpool toodud näites kasutatakse getfacli kausta ‘Music’ vaikeväärtuslike ACL-ide hankimiseks.

 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-

Konkreetse faili või kataloogi vaikelubade loendi määramiseks kasutage käsku setfacl Allpool toodud näites seab käsk setfacl kausta ‘Music’ uue ACL-i (loe ja täida).

 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

Mis tahes faili või kataloogi seadistamiseks või muutmiseks kasutage käsku setfacl. Näiteks selleks, et anda kasutajale ‘tecmint1’ lugemis- ja kirjutamisõigused.

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

Kasutage ACL-i vaatamiseks mis tahes failis või kataloogis käsku getfacl. Näiteks ACL-i vaatamiseks käsul '/ tecmint1/example' kasutage allpool olevat käsku.

# getfacl /tecmint1/example

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

ACL-i eemaldamiseks mis tahes failist/kataloogist kasutame valikuid x ja b, nagu allpool näidatud.

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

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

Rakendame ACL-id järgmise stsenaariumi korral.

Kaks kasutajat (tecmint1 ja tecmint2), mõlemal on ühine sekundaarne rühm nimega ‘acl’. Loome ühe kataloogi, mille omanikuks on 'tecmint1', ning anname kasutajale 'tecmint2' selle kataloogi lugemis- ja täitmisõiguse.

1. samm: looge kaks kasutajat ja eemaldage mõlemast parool

 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

2. samm: looge rühm ja kasutajad teisene rühm.

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

3. samm: looge kataloog/tecmint ja muutke omanikuks 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

4. samm: logige sisse rakendusega tecmint1 ja looge kataloogi/tecmint kataloog.

[[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

5. samm: määrake nüüd ACL, kasutades seadet „setfacl”, nii et seadmel „tecmint1” on kõik rwx-õigused, seadmel „tecmint2” on ainult kausta „näide” lugemisõigused ja teistel pole õigusi.

$ 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::---

6. samm: logige nüüd teise kasutajaga sisse, s.t teises terminalis olev tecmint2 ja muutke kataloogiks '/ tecmint1'. Nüüd proovige sisu vaadata käsuga ‘ls’ ja proovige seejärel kataloogi muuta ning vaadake erinevust nagu allpool.

[[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::---

7. samm: andke nüüd kauba „näide” käsule ‘execute’ luba ‘tecmint2’ ja seejärel efekti nägemiseks käsuga ‘cd’. Nüüd on ‘tecmint2’ luba kataloogi vaadata ja muuta, kuid teil pole õigusi midagi kirjutada.

[[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

Märkus. Pärast ACL-i juurutamist näete „ls –l” väljundile täiendavat märki „+” nagu allpool.

 ll

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

Viited

ACLi dokumentatsioon