Secure Files/Directories gamit ang ACLs (Access Control Lists) sa Linux


Isip usa ka System Admin, ang among una nga prayoridad mao ang pagpanalipod ug pagsiguro sa datos gikan sa dili awtorisado nga pag-access. Kitang tanan nahibalo sa mga permiso nga atong gitakda gamit ang pipila ka makatabang nga Linux commands sama sa chmod, chown, chgrp... ug uban pa. Apan, kini nga mga default nga permiso nga set adunay pipila ka limitasyon ug usahay dili molihok sumala sa atong mga panginahanglan. Pananglitan, dili kami makahimo og lain-laing set sa pagtugot alang sa lain-laing tiggamit sa samang direktoryo o file. Busa, gipatuman ang Access Control Lists (ACLs).

Ingnon ta, ikaw adunay tulo ka tiggamit, 'tecmint1', 'tecmint2' ug 'tecmint3'. Ang matag usa adunay komon nga grupo moingon 'acl'. Gusto sa tiggamit nga 'tecmint1' nga ang 'tecmint2' nga tiggamit lamang ang makabasa ug maka-access sa mga file nga gipanag-iya sa 'tecmint1' ug wala’y lain nga adunay bisan unsang pag-access niana.

ACLs (Access Control Lists) nagtugot kanato sa pagbuhat sa sama nga lansis. Kini nga mga ACL nagtugot kanamo sa paghatag og mga pagtugot alang sa usa ka user, grupo ug bisan unsang grupo sa bisan kinsa nga tiggamit nga wala sa listahan sa grupo sa usa ka user.

Mubo nga sulat: Sama sa Redhat Product Documentation, naghatag kini og suporta sa ACL alang sa ext3 file system ug NFS exported file system.

Giunsa Pagsusi ang Suporta sa ACL sa Linux Systems

Sa dili pa mopadayon kinahanglan nga adunay suporta ka alang sa mga ACL sa kasamtangan nga Kernel ug gi-mount nga mga sistema sa file.

Pagdalagan ang mosunod nga sugo aron masusi ang ACL Support para sa file system ug POSIX_ACL=Y nga opsyon (kung adunay N imbes Y, nan kini nagpasabot nga ang Kernel dili mosuporta sa ACL ug kinahanglan nga i-recompiled).

 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

Sa dili pa magsugod sa pagdula sa mga ACL siguruha nga kinahanglan nimo nga ma-install ang mga pakete. Sa ubos mao ang gikinahanglan nga mga pakete nga kinahanglan i-install gamit ang yum o 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)

Apan sa among kaso wala kini magpakita sa acl pinaagi sa default. Busa, sa sunod aduna kitay kapilian nga i-remount pag-usab ang mounted partition gamit ang acl option. Apan, sa dili pa molihok sa unahan, kita adunay lain nga kapilian sa pagsiguro nga ang partition gitaod sa acl kapilian o dili, tungod kay alang sa bag-o nga sistema kini mahimong integrated uban sa default mount kapilian.

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

Default mount options:    user_xattr acl

Sa ibabaw nga output, imong makita nga ang default mount option naa nay suporta para sa acl. Ang laing kapilian mao ang pag-remount sa partition sama sa gipakita sa ubos.

 mount -o remount,acl /

Sunod, idugang ang ubos nga entry sa '/etc/fstab' nga file aron mahimo kini nga permanente.

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

Pag-usab, i-remount ang partisyon.

 mount -o remount  /

Sa NFS server, kung ang file system nga gi-export sa NSF server nagsuporta sa ACL ug ACLs mabasa sa NFS Clients, nan ang ACLs gigamit sa client System.

Alang sa pag-disable sa mga ACL sa bahin sa NFS, kinahanglan nimong idugang ang opsyon nga \no_acl sa '/etc/exportfs' file sa NFS Server. Aron ma-disable kini sa bahin sa kliyente sa NSF gamita pag-usab ang \no_acl nga kapilian sa panahon sa pag-mount.

Giunsa Pagpatuman ang Suporta sa ACL sa Linux Systems

Adunay duha ka matang sa ACL:

  1. Access ACLs: Access ACLs kay gigamit para sa paghatag ug permiso sa bisan unsa nga file o directory.
  2. Mga Default nga ACL: Ang mga Default nga ACL gigamit para sa paghatag/pagbutang ug access control list sa usa ka piho nga direktoryo lamang.

Kalainan tali sa Access ACL ug Default ACL:

  1. Ang default nga ACL mahimong gamiton sa lebel sa direktoryo lamang.
  2. Bisan unsang sub directory o file nga gihimo sulod niana nga direktoryo makapanunod sa mga ACL gikan sa ginikanan nga direktoryo niini. Sa laing bahin ang usa ka file makapanunod sa default nga mga ACL isip mga access ACL niini.
  3. Among gigamit ang \–d” para sa pag-set sa default nga mga ACL ug ang mga Default nga ACL kay mga opsyonal.

Aron mahibal-an ang default nga mga ACL alang sa usa ka piho nga file o direktoryo, gamita ang 'getfacl' nga mando. Sa pananglitan sa ubos, ang getfacl gigamit aron makuha ang mga default nga ACL alang sa usa ka folder nga 'Musika'.

 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-

Aron itakda ang mga default nga ACL alang sa usa ka piho nga file o direktoryo, gamita ang 'setfacl' nga mando. Sa pananglitan sa ubos, ang setfacl command magbutang ug bag-ong ACLs (basaha ug i-execute) sa usa ka folder nga '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

Gamita ang 'setfacl' nga sugo alang sa pag-set o pag-usab sa bisan unsang file o direktoryo. Pananglitan, ang paghatag og pagtugot sa pagbasa ug pagsulat sa user 'tecmint1'.

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

Gamita ang command 'getfacl' para sa pagtan-aw sa ACL sa bisan unsang file o direktoryo. Pananglitan, aron makita ang ACL sa '/tecmint1/example' gamita sa ubos nga sugo.

# getfacl /tecmint1/example

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

Alang sa pagtangtang sa ACL gikan sa bisan unsang file/direktoryo, gigamit namo ang x ug b nga mga kapilian sama sa gipakita sa ubos.

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

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

Atong ipatuman ang ACL sa mga mosunod nga senaryo.

Duha ka Gumagamit (tecmint1 ug tecmint2), pareho nga adunay sagad nga sekondaryang grupo nga ginganlag 'acl'. Maghimo kami usa ka direktoryo nga gipanag-iya sa 'tecmint1' ug hatagan ang pagtugot sa pagbasa ug pagpatuman sa kana nga direktoryo sa tiggamit 'tecmint2'.

Lakang 1: Paghimo og duha ka tiggamit ug kuhaa ang password gikan sa duha

 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

Lakang 2: Paghimo og Grupo ug Mga Gumagamit sa Secondary Group.

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

Lakang 3: Paghimo ug Direktoryo/tecmint ug usba ang pagpanag-iya sa 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

Lakang 4: Pag-login gamit ang tecmint1 ug paghimo og Direktoryo sa/tecmint folder.

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

Lakang 5: Karon ibutang ang ACL gamit ang 'setfacl', aron ang 'tecmint1' makabaton sa tanan nga rwx nga permiso, 'tecmint2' magbasa ra sa pagtugot sa 'pananglitan' nga folder ug ang uban wala’y pagtugot.

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

Lakang 6: Karon pag-login sa ubang user ie 'tecmint2' sa laing terminal ug usba ang direktoryo sa '/tecmint1'. Karon sulayi ang pagtan-aw sa mga sulud gamit ang 'ls' nga mando ug dayon sulayi nga usbon ang direktoryo ug tan-awa ang kalainan sama sa ubos.

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

Lakang 7: Karon hatagi ang 'execute' permiso sa 'tecmint2' sa 'example' folder ug dayon gamita ang 'cd' command aron makita ang epekto. Karon ang 'tecmint2' adunay mga pagtugot sa pagtan-aw ug pagbag-o sa direktoryo, apan wala’y pagtugot sa pagsulat bisan unsa.

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

Mubo nga sulat: Human sa pagpatuman sa ACL, imong makita ang usa ka dugang nga '+' nga ilhanan alang sa 'ls -l' output sama sa ubos.

 ll

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

Mga Reperensya nga Link

Dokumentasyon sa ACL