Linux-da ACL-leri (Giriş dolandyryş sanawlary) ulanyp, ygtybarly faýllar/kataloglar


Ulgam dolandyryjysy hökmünde ilkinji nobatda maglumatlary rugsatsyz girişden goramak we goramak bolar. Chmod, chown, chgrp… we ş.m. ýaly käbir peýdaly Linux buýruklaryny ulanyp goýýan rugsatlarymyzy hemmämiz bilýäris, ýöne bu deslapky rugsat toplumlarynyň käbir çäklendirmeleri bar we käwagt zerurlyklarymyza görä işlemän biler. Mysal üçin, bir katalogda ýa-da faýlda dürli ulanyjylar üçin dürli rugsat toplumlaryny gurup bilmeris. Şeýlelikde, giriş gözegçilik sanawlary (ACL) ýerine ýetirildi.

Aýdaly, “tecmint1”, “tecmint2” we “tecmint3” atly üç ulanyjy bar. Umumy topara eýe bolanlaryň hersine “acl” diýilýär. Ulanyjy “tecmint1” diňe “tecmint2” ulanyjysynyň “tecmint1” eýeçiligindäki faýllary okap we olara girip biljekdigini isleýär we bu meselede başga hiç kimiň ygtyýary bolmaz.

ACL-ler (Giriş dolandyryş sanawlary) bize şol bir hiläni etmäge mümkinçilik berýär. Bu ACL-ler ulanyjy, topar we ulanyjylaryň sanawynda bolmadyk islendik ulanyjy topary üçin rugsat bermäge mümkinçilik berýär.

Bellik: Redhat Önüm resminamalaryna laýyklykda, ext3 faýl ulgamy we NFS eksport edilen faýl ulgamlary üçin ACL goldawyny berýär.

Linux ulgamlarynda ACL goldawyny nädip barlamaly

Öňe gitmezden ozal häzirki ýadro we gurnalan faýl ulgamlarynda ACL-ler üçin goldaw bolmaly.

Faýl ulgamy we POSIX_ACL=Y opsiýasy üçin ACL goldawyny barlamak üçin aşakdaky buýrugy işlediň (eger Y ýerine N bar bolsa, bu Kerneliň ACL-i goldamaýandygyny we täzeden düzülmelidigini aňladýar).

 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

ACL-ler bilen oýnamaga başlamazdan ozal paketleriň gurnalandygyna göz ýetiriň. Aşakda yum ýa-da apt-get ulanyp gurnamaly zerur paketler bar.

 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)

Ouröne biziň ýagdaýymyzda, acl görkezilmeýär. Şeýlelik bilen, indiki bölümde acl opsiýasyny ulanyp, gurnalan bölümi täzeden aýyrmaly. Emma, öňe gitmezden ozal, bölümiň acl opsiýasy bilen gurnalandygyna ýa-da ýokdugyna göz ýetirmek üçin başga bir mümkinçiligimiz bar, sebäbi soňky ulgam üçin deslapky gurnama opsiýasy bilen birleşdirilip bilner.

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

Default mount options:    user_xattr acl

Aboveokardaky çykyşda, deslapky gurnama opsiýasynyň eýýäm acl üçin goldawynyň bardygyny görüp bilersiňiz. Başga bir wariant, aşakda görkezilişi ýaly bölümi täzeden aýyrmak.

 mount -o remount,acl /

Ondan soň, hemişelik bolmagy üçin aşakdaky ýazgyny '/ etc/fstab' faýlyna goşuň.

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

Againene-de bölümi aýyryň.

 mount -o remount  /

NFS serwerinde, NSF serweri tarapyndan eksport edilýän faýl ulgamy ACL-ni goldaýan bolsa we ACL-leri NFS Müşderileri okap bilýän bolsa, ACL-ler müşderi ulgamy tarapyndan ulanylýar.

NFS paýnamasyndaky ACL-leri öçürmek üçin NFS Serwerindäki/etc/exportfs faýlyna\no_acl opsiýasyny goşmaly. NSF müşderi tarapynda öçürmek üçin gurnama wagtynda\no_acl opsiýasyny ulanyň.

Linux ulgamlarynda ACL goldawyny nädip durmuşa geçirmeli

ACL-leriň iki görnüşi bar:

  1. Giriş ACL-leri: Giriş ACL-leri islendik faýlda ýa-da katalogda rugsat bermek üçin ulanylýar.
  2. Bellenen ACL-ler: Bellenen ACL-ler diňe belli bir katalogda giriş gözegçilik sanawyny bermek/düzmek üçin ulanylýar.

“ACL” bilen “ACL” -iň arasyndaky tapawut:

  1. Bellenen ACL diňe katalog derejesinde ulanylyp bilner.
  2. Şol bukjanyň içinde döredilen islendik kiçi katalog ýa-da faýl ACL-leri esasy katalogyndan miras alar. Beýleki tarapdan, bir faýl, giriş ACL-leri hökmünde deslapky ACL-leri miras alýar.
  3. Adaty ACL-leri sazlamak üçin\- d ulanýarys we Bellenen ACL-ler islege bagly.

Belli bir faýl ýa-da katalog üçin deslapky ACL-leri kesgitlemek üçin getfacl buýrugyny ulanyň. Aşakdaky mysalda getfacl “Saz” bukjasy üçin deslapky ACL-leri almak üçin ulanylýar.

 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-

Belli bir faýl ýa-da katalog üçin deslapky ACL-leri bellemek üçin “setfacl” buýrugyny ulanyň. Aşakdaky mysalda setfacl buýrugy “Saz” bukjasynda täze ACL-leri (okaň we ýerine ýetiriň) düzer.

 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

Islendik faýlda ýa-da katalogda sazlamak ýa-da üýtgetmek üçin “setfacl” buýrugyny ulanyň. Mysal üçin, “tecmint1” ulanyjysyna okamak we ýazmak üçin rugsat bermek.

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

ACL-i islendik faýlda ýa-da katalogda görmek üçin getfacl buýrugyny ulanyň. Mysal üçin, ACL-ni “/ tecmint1/example” -da görmek üçin aşakdaky buýrugy ulanyň.

# getfacl /tecmint1/example

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

ACL-ni islendik faýl/katalogdan aýyrmak üçin aşakda görkezilişi ýaly x we b opsiýalaryny ulanýarys.

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

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

Geliň, aşakdaky ssenariýa boýunça ACL-ni durmuşa geçireliň.

Iki ulanyjy (tecmint1 we tecmint2), ikisinde-de “acl” atly ikinji derejeli topar bar. “Tecmint1” -e degişli bir bukjany dörederis we “tecmint2” ulanyjysyna şol katalogda okamaga we ýerine ýetirmäge rugsat bereris.

1-nji ädim: Iki ulanyjy dörediň we ikisinden parol aýyryň

 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-nji ädim: Ikinji topara topar we ulanyjy dörediň.

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

3-nji ädim: Katalog/tecmint dörediň we eýeçiligini tecmint1 diýip üýtgediň.

 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-nji ädim: tecmint1 bilen giriň we/tecmint bukjasynda katalog dörediň.

[[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-nji ädim: Indi “setfacl” ulanyp ACL-i düzüň, şonuň üçin “tecmint1” -iň ähli rwx rugsatlary bolar, “tecmint2” diňe “mysal” bukjasynda rugsat okar we beýlekileriň rugsady bolmaz.

$ 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-njy ädim: Indi beýleki ulanyjy bilen giriň, ýagny “tecmint2” başga terminala giriň we bukjany “/ tecmint1” -e üýtgediň. Indi “ls” buýrugyny ulanyp mazmuny görmäge synanyşyň, soňra bukjany üýtgetmäge we aşakdaky ýaly tapawudy görmäge synanyşyň.

[[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-nji ädim: Indi mysal bukjasyndaky tecmint2 -e ýerine ýetirmäge rugsat beriň we täsirini görmek üçin cd buýrugyny ulanyň. Indi “tecmint2” -iň katalogy görmäge we üýtgetmäge rugsatlary bar, ýöne hiç zat ýazmaga rugsat ýok.

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

Bellik: ACL-i durmuşa geçireniňizden soň, aşakdaky ýaly ls –l çykyşy üçin goşmaça + belligini görersiňiz.

 ll

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

Salgylanma baglanyşyklary

ACL-iň resminamalary