Ubuntu 24.04
Sponsored Link

ACL : Access Control List सेटिंग2024/05/13

 
ACL (Access Control List) को फ़ाइलों या निर्देशिकाओं पर सेट करें।
पॉज़िक्स Linux ACL की तुलना में एक्सेस अनुमति को अधिक सख्ती से सेट करना संभव है।
[1] ACL उपकरण स्थापित करें.
root@dlp:~#
apt -y install acl
[2] ACL का उपयोग करने के लिए, उसे फ़ाइल सिस्टम में acl विकल्प सेट करने की आवश्यकता होती है जो ext2/ext3/ext4 या xfs जैसी ACL सुविधा का उपयोग कर सकता है और उन फ़ाइल सिस्टम पर ACL विकल्प को सक्षम करने की भी आवश्यकता होती है। Ubuntu के लिए डिफ़ॉल्ट [ext4] के साथ, ACL विकल्प पहले से ही उपकरणों पर डिफ़ॉल्ट माउंट विकल्प द्वारा सक्षम है।
root@dlp:~#
df -hT /

Filesystem                        Type  Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4   77G  9.1G   64G  13% /

# डिफ़ॉल्ट माउंट विकल्प दिखाएं

root@dlp:~#
tune2fs -l /dev/ubuntu-vg/ubuntu-lv | grep "Default mount options"

Default mount options:    user_xattr acl     # एसीएल विकल्प सक्षम है
[3] यदि आप फ़ाइल सिस्टम पर मैन्युअल रूप से ACL विकल्प सेट करते हैं, तो निम्नानुसार सेट करें।
# ACL को सक्षम करने के लिए acl विकल्प के साथ माउंट करें

root@dlp:~#
mount -o acl /dev/sdb1 /mnt

root@dlp:~#
mount | grep sdb1

/dev/sdb1 on /mnt type ext4 (rw,acl)
# अन्यथा, डिफ़ॉल्ट माउंट विकल्प में ACL विकल्प जोड़ें

root@dlp:~#
tune2fs -o acl /dev/sdb1

root@dlp:~#
tune2fs -l /dev/sdb1 | grep "Default mount options"

Default mount options: acl
[4] ACL सेट करें.
उदाहरण के लिए, [root:root(700)] के साथ एक फ़ाइल [/home/test.txt] बनाएं और ACL पर सेट करें।
root@dlp:~#
ll /home/test.txt

-rw------- 1 root root 13 May 13 03:34 /home/test.txt

# [ubuntu] उपयोगकर्ता के लिए r(read) को /home/test.txt पर सेट करें

root@dlp:~#
setfacl -m u:ubuntu:r /home/test.txt
# ACL सेट करने के बाद, विशेषता पर [+] जोड़ा जाता है

root@dlp:~#
ll /home/test.txt

-rw-r-----+ 1 root root 13 May 13 03:34 /home/test.txt

# सेटिंग्स की पुष्टि करें

root@dlp:~#
getfacl /home/test.txt

# file: home/test.txt
# owner: root
# group: root
user::rw-
user:ubuntu:r--
group::---
mask::r--
other::---

# [ubuntu] उपयोगकर्ता के साथ पहुंच सत्यापित करें

ubuntu@dlp:~$
cat /home/test.txt

ACL test file  
# यह सामान्य रूप से पढ़ सकता है
# किसी अन्य उपयोगकर्ता के साथ पहुंच सत्यापित करें

noble@dlp:~$
cat /home/test.txt

cat: /home/test.txt: Permission denied  
# इसे सामान्यतः अस्वीकार कर दिया गया है
[5] ACL को पुनरावर्ती रूप से एक निर्देशिका में सेट करें।
# [ubuntu] के लिए r-x(read/execute) को पुनरावर्ती रूप से [/home/testdir] पर सेट करें

root@dlp:~#
setfacl -R -m u:ubuntu:rx /home/testdir
root@dlp:~#
ll -laR /home/testdir

/home/testdir:
total 12
drwxr-x---+ 2 root root 4096 May 13 03:38 ./
drwxr-xr-x  5 root root 4096 May 13 03:38 ../
-rw-r-x---+ 1 root root   13 May 13 03:38 testfile.txt*

root@dlp:~#
getfacl -R /home/testdir

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

# file: home/testdir/testfile.txt
# owner: root
# group: root
user::rw-
user:ubuntu:r-x
group::---
mask::r-x
other::---

# [ubuntu] से सत्यापित करें

ubuntu@dlp:~$
cat /home/testdir/testfile.txt

ACL testfile
[6] समूह द्वारा ACL सेट करें।
# [security] समूह के लिए rw(read/write) को [/home/test.txt] पर सेट करें

root@dlp:~#
setfacl -m g:security:rw /home/test.txt

root@dlp:~#
getfacl /home/test.txt

# file: home/test.txt
# owner: root
# group: root
user::rw-
user:ubuntu:r--
group::---
group:security:rw-
mask::rw-
other::---

# [ubuntu] उपयोगकर्ता से सत्यापित करें जो [security] समूह में है

ubuntu@dlp:~$
echo "test write" >> /home/test.txt

ubuntu@dlp:~$
cat /home/test.txt

ACL test file
test write
# किसी अन्य उपयोगकर्ता से सत्यापित करें जो [security] समूह में नहीं है

noble@dlp:~$
echo "test write" >> /home/test.txt

-bash: /home/test.txt: Permission denied
[7] एसीएल हटाएं।
# [/home/test.txt] से ACL हटाएँ

root@dlp:~#
setfacl -b /home/test.txt
# [/home/testfile.txt] पर केवल [ubuntu] उपयोगकर्ता के लिए ACL हटाएं

root@dlp:~#
setfacl -x u:ubuntu /home/test.txt
[8] किसी निर्देशिका में डिफ़ॉल्ट ACL सेट करें।
यदि डिफ़ॉल्ट ACL सेटिंग के साथ निर्देशिका के अंतर्गत फ़ाइलें/निर्देशिकाएँ बनाई जाती हैं,
डिफ़ॉल्ट एक्सेस विशेषता विरासत में मिली है। लेकिन सावधान रहें, यदि आप पॉज़िक्स विशेषता को [chmod] से बदलते हैं, तो ACL अमान्य हो जाएगा।
root@dlp:~#
setfacl -m u:ubuntu:r-x /home/testdir
# [ubuntu] से [/home/testdir] निर्देशिका के लिए डिफ़ॉल्ट ACL [rx(read/execute)] सेट करें

root@dlp:~#
setfacl -d -m u:ubuntu:r-x /home/testdir

root@dlp:~#
getfacl /home/testdir

getfacl: Removing leading '/' from absolute path names
# file: home/testdir
# owner: root
# group: root
user::rwx
user:ubuntu:r-x
group::---
mask::r-x
other::---
default:user::rwx
default:user:ubuntu:r-x
default:group::---
default:mask::r-x
default:other::---

root@dlp:~#
umask 077; echo "ACL default setting" > /home/testdir/test.txt

root@dlp:~#
ll /home/testdir/test.txt

-rw-r-----+ 1 root root 20 May 13 03:44 /home/testdir/test.txt

# [ubuntu] से सत्यापित करें

ubuntu@dlp:~$
cat /home/testdir/test.txt

ACL default setting
[9] डिफ़ॉल्ट ACL हटाएँ।
root@dlp:~#
setfacl -k /home/testdir

root@dlp:~#
getfacl /home/testdir

getfacl: Removing leading '/' from absolute path names
# file: home/testdir
# owner: root
# group: root
user::rwx
user:ubuntu:r-x
group::---
mask::r-x
other::---
[10] कॉन्फ़िगरेशन फ़ाइल से ACL सेट करें।
# ACL के लिए एक कॉन्फ़िगरेशन फ़ाइल बनाएँ
# यदि ऐसे ACL हैं जिन्हें आप अन्य सिस्टम पर सेट करना चाहेंगे, तो [getfacl] कमांड के साथ निर्यात करने का एक तरीका है

root@dlp:~#
vi acl.txt
# file: /home/testdir
# owner: root
# group: root
user::rwx
user:ubuntu:r-x
group::---
mask::r-x
other::---

# file: /home/test.txt
# owner: root
# group: root
user::rwx
user:ubuntu:r--
group::---
mask::r--
other::---

root@dlp:~#
setfacl --restore=acl.txt

root@dlp:~#
ll /home

total 24
drwxr-xr-x   5 root   root   4096 May 13 03:38 ./
drwxr-xr-x  23 root   root   4096 May 13 03:33 ../
drwxr-x---   2 noble  noble  4096 May 13 03:37 noble/
-rwxr-----+  1 root   root     24 May 13 03:42 test.txt*
drwxr-x---+  2 root   root   4096 May 13 03:44 testdir/
drwxr-x--x   7 ubuntu ubuntu 4096 May 13 02:47 ubuntu/
मिलान सामग्री