# Data Fabric ACE ## Create Volume [ace-volume] ![](https://i.imgur.com/YyTUmG1.png) ![](https://i.imgur.com/fLbzT1p.png) --------------------------------------- ### ACE讀寫控制 查看目錄ACE權限 ```shell= [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume Path: /user/ace-volume readfile: writefile: executefile: readdir: addchild: deletechild: lookupdir: inherit: true mode: rwxrwxrwx ``` 切換使用者`danny`確定可讀可寫。 ```shell= [danny@maprdemo user]$ id uid=5678(danny) gid=5678(danny) groups=5678(danny) [danny@maprdemo user]$ touch ace-volume/danny [danny@maprdemo user]$ ls ace-volume/ danny ``` 切換使用者到`roger`確定可讀可寫。 ```shell= [roger@maprdemo ~]$ id uid=6789(roger) gid=6789(roger) groups=6789(roger) [roger@maprdemo user]$ ls ace-volume/ danny [roger@maprdemo user]$ touch ace-volume/roger [roger@maprdemo user]$ ls ace-volume/ danny roger ``` 賦予`danny`兩個權限`lookdir`與`readdir` ```shell= hadoop mfs -setace -lookupdir 'u:danny' /user/ace-volume hadoop mfs -setace -readdir 'u:danny' /user/ace-volume [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume Path: /user/ace-volume readfile: writefile: executefile: readdir: addchild: deletechild: lookupdir: u:danny inherit: true mode: --------- Path: /user/ace-volume/danny readfile: writefile: executefile: mode: rw-rw-r-- Path: /user/ace-volume/roger readfile: writefile: executefile: mode: rw-rw-r-- ``` 切換使用者`danny`確認是否可以查看目錄 ```shell= [danny@maprdemo user]$ ls ace-volume/ danny roger ``` 切換使用者`roger`確認是否可以查看目錄 ```shell= [roger@maprdemo user]$ ls ace-volume/ ls: cannot open directory ace-volume/: Permission denied ``` 賦予`danny`可寫入`danny`檔案的權限,但只能讀取`roger`這個檔案 ```shell= hadoop mfs -setace -readfile 'u:danny' /user/ace-volume/danny hadoop mfs -setace -writefile 'u:danny' /user/ace-volume/danny hadoop mfs -setace -readfile 'u:danny' /user/ace-volume/roger [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume Path: /user/ace-volume readfile: writefile: executefile: readdir: u:danny addchild: deletechild: lookupdir: u:danny inherit: true mode: --------- Path: /user/ace-volume/danny readfile: u:danny writefile: u:danny executefile: mode: rw------- Path: /user/ace-volume/roger readfile: u:danny writefile: executefile: mode: --------- ``` 驗證結果 ```shell= [danny@maprdemo user]$ echo "www.hpe-taiwan-cic.net" >> ace-volume/danny [danny@maprdemo user]$ echo "www.hpe-taiwan-cic.net" >> ace-volume/roger -bash: ace-volume/roger: Permission denied [danny@maprdemo user]$ cat ace-volume/danny danny www.hpe-taiwan-cic.net [danny@maprdemo user]$ cat ace-volume/roger roger [danny@maprdemo user]$ ``` --------------------------------------- ### 賦予新增資料夾權限 目前`danny`不能新增資料夾 ```shell= [danny@maprdemo user]$ mkdir ace-volume/test-mk mkdir: cannot create directory ‘ace-volume/test-mk’: Permission denied ``` 賦予`danny`新增資料夾權限 ```shell= hadoop mfs -setace -addchild 'u:danny' /user/ace-volume [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume Path: /user/ace-volume readfile: writefile: executefile: readdir: u:danny addchild: u:danny deletechild: lookupdir: u:danny inherit: true mode: --------- Path: /user/ace-volume/danny readfile: u:danny writefile: u:danny executefile: mode: rw------- Path: /user/ace-volume/roger readfile: u:danny writefile: executefile: mode: --------- ``` 切換到`danny`成功新增資料夾`test-mk` ```shell= [danny@maprdemo user]$ mkdir ace-volume/test-mk [danny@maprdemo user]$ ls ace-volume/ danny roger test-mk ``` --------------------------------------- ### 賦予刪除資料夾權限 嘗試刪除資料夾`test-mk` ```shell= [danny@maprdemo user]$ rm -rf ace-volume/test-mk/ rm: cannot remove ‘ace-volume/test-mk/’: Permission denied ``` 賦予`danny`刪除資料夾權限 ```shell= hadoop mfs -setace -deletechild 'u:danny' /user/ace-volume [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume Path: /user/ace-volume readfile: writefile: executefile: readdir: u:danny addchild: u:danny deletechild: u:danny lookupdir: u:danny inherit: true mode: --------- Path: /user/ace-volume/danny readfile: u:danny writefile: u:danny executefile: mode: rw------- Path: /user/ace-volume/roger readfile: u:danny writefile: executefile: mode: --------- Path: /user/ace-volume/test-mk readfile: writefile: executefile: readdir: u:danny addchild: u:danny deletechild: lookupdir: u:danny inherit: true mode: r-x------ ``` 成功刪除`test-mk`資料夾 ```shell= [danny@maprdemo user]$ rm -rf ace-volume/test-mk/ [danny@maprdemo user]$ ls ace-volume/ danny roger ``` --------------------------------------- ### 子目錄與父目錄繼承 預設子目錄繼承父目錄ACE 查看`第26行` ```shell= [root@maprdemo user]# mkdir /user/ace-volume/inherit-test/ [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume Path: /user/ace-volume readfile: writefile: executefile: readdir: u:danny addchild: deletechild: u:danny lookupdir: u:danny inherit: true mode: --------- Path: /user/ace-volume/danny readfile: u:danny writefile: u:danny executefile: mode: rw------- Path: /user/ace-volume/inherit-test readfile: writefile: executefile: readdir: u:danny addchild: deletechild: u:danny lookupdir: u:danny inherit: true mode: --------- Path: /user/ace-volume/roger readfile: u:danny writefile: executefile: mode: --------- Path: /user/ace-volume/root readfile: writefile: executefile: mode: rw-r--r-- ``` 關閉子目錄繼承父目錄ACE 查看`第30-36行`沒有繼承父目錄 ```shell= hadoop mfs -setace -setinherit false /user/ace-volume [root@maprdemo user]# mkdir /user/ace-volume/inherit-test-false [root@maprdemo user]# hadoop mfs -getace -R /user/ace-volume Path: /user/ace-volume readfile: writefile: executefile: readdir: u:danny addchild: deletechild: u:danny lookupdir: u:danny inherit: false mode: --------- Path: /user/ace-volume/danny readfile: u:danny writefile: u:danny executefile: mode: rw------- Path: /user/ace-volume/inherit-test readfile: writefile: executefile: readdir: u:danny addchild: deletechild: u:danny lookupdir: u:danny inherit: true mode: --------- Path: /user/ace-volume/inherit-test-false readfile: writefile: executefile: readdir: addchild: deletechild: lookupdir: inherit: true mode: rwxr-xr-x Path: /user/ace-volume/roger readfile: u:danny writefile: executefile: mode: --------- Path: /user/ace-volume/root readfile: writefile: executefile: mode: rw-r--r-- ``` --------------------------------------- ### 驗證MCS權限 ```shell= maprcli volume create -name create-volume-test -path /user/create-volume-test -readAce 'u:danny' -rootdirperms 777 ``` 取得檔案權限 ```shell= [root@maprdemo user]# hadoop mfs -getace -R /user/create-volume-test/ Path: /user/create-volume-test readfile: writefile: executefile: readdir: addchild: deletechild: lookupdir: inherit: true mode: rwxrwxrwx Path: /user/create-volume-test/11 readfile: writefile: executefile: mode: rw-r--r-- Path: /user/create-volume-test/123 readfile: writefile: executefile: mode: rw-rw-r-- [root@maprdemo user]# ls -al /user/create-volume-test drwxrwxrwx 2 root root 2 1月 18 00:27 . drwxr-xr-x 8 mapr mapr 6 1月 18 00:19 .. -rw-r--r-- 1 root root 0 1月 18 00:25 11 -rw-rw-r-- 1 danny danny 0 1月 18 00:26 123 ``` 切換到`danny` ```shell= [danny@maprdemo create-volume-test]$ echo 'danny' >> 11 -bash: 11: Permission denied [danny@maprdemo create-volume-test]$ echo 'danny' >> 123 [danny@maprdemo create-volume-test]$ cat 123 danny ``` 驗證`danny`無權限 ```shell= [danny@maprdemo create-volume-test]$ touch test touch: cannot touch ‘test’: Permission denied ``` 切換到`root`賦予`danny`權限 ```shell= [root@maprdemo user]# maprcli volume modify -name create-volume-test -writeAce 'u:danny' ``` 驗證`danny`新增檔案權限 ```shell= [danny@maprdemo create-volume-test]$ touch test [danny@maprdemo create-volume-test]$ ls 11 123 test [danny@maprdemo create-volume-test]$ ``` ### Reference: * https://docs.datafabric.hpe.com/62/ReferenceGuide/hadoop-mfs.html maprcli volume create -name create-volume-test -path /user/create-volume-test -readAce 'u:danny' -writeAce 'u:mapr' -rootdirperms 777 <!-- ## hadoop mfs指令 ``` [root@maprdemo ace-volume]# hadoop mfs -count /user/adv-ace-volume Path: /user/ace-volume Directories : 1 Regular files : 1 Symlinks : 0 Vollinks : 0 Devices : 0 Kvstores : 0 Total files : 2 ``` ``` [root@maprdemo ace-volume]# hadoop mfs -delete /user/ace-volume/abc ``` ``` [root@maprdemo ~]# df 檔案系統 1K-區段 已用 可用 已用% 掛載點 /dev/mapper/vg_maprdemo-lv_root 14015952 7651932 5628996 58% / devtmpfs 2962708 0 2962708 0% /dev tmpfs 2973316 0 2973316 0% /dev/shm tmpfs 2973316 8800 2964516 1% /run tmpfs 2973316 0 2973316 0% /sys/fs/cgroup /dev/sda1 487634 110804 347134 25% /boot tmpfs 594664 0 594664 0% /run/user/5000 tmpfs 594664 0 594664 0% /run/user/0 localhost:/mapr/demo.mapr.com/user 14959616 1440768 13518848 10% /user ``` ``` [root@maprdemo ~]# useradd danny --uid 5678 [root@maprdemo ~]# su - danny [danny@maprdemo ~]$ id uid=5678(danny) gid=5678(danny) groups=5678(danny) [danny@maprdemo ~]$ ls /user/ hive mapr root ``` ## 新增一個Volume ![](https://i.imgur.com/sYtyJPo.png) ![](https://i.imgur.com/ZHitg3K.png) ![](https://i.imgur.com/QbPCTIi.png) ![](https://i.imgur.com/uEF9Q9X.png) ![](https://i.imgur.com/4xuMjkV.png) ![](https://i.imgur.com/tW9Ydef.png) ![](https://i.imgur.com/HXuvcZM.png) ![](https://i.imgur.com/q6XE0BN.png) * Volume: /user * AD adusr01: Read * AD adusr02: Write ## 登入adusr02 ![](https://i.imgur.com/DzDW569.png) ```shell= ssh https://<datafabric>:8443 cat /etc/passwd ``` ## User list ```shell= cat /etc/passwd ``` ### [Result] User list ```shell= root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin mapr:x:5000:5000::/home/mapr:/bin/bash rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin roger:x:5001:5002::/home/roger:/bin/bash roger1:x:5002:5003::/home/roger1:/bin/bash lili:x:5003:5004::/home/lili:/bin/bash lily:x:5004:5005::/home/lily:/bin/bash lily1:x:5005:5006::/home/lily1:/bin/bash lily2:x:5006:5007::/home/lily2:/bin/bash sssd:x:996:993:User for sssd:/:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin nslcd:x:65:55:LDAP Client User:/:/sbin/nologin sam:x:5007:5008::/home/sam:/bin/bash nick:x:5008:5009::/home/nick:/bin/bash jack:x:5009:5010::/home/jack:/bin/bash RogerTseng:x:5010:5013::/home/RogerTseng:/bin/bash ``` ## Group list ```shell= cat /etc/group | cut -d: -f1 ``` ### [Result] Group list ```shell= root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mem:x:8: kmem:x:9: wheel:x:10: cdrom:x:11: mail:x:12:postfix man:x:15: dialout:x:18: floppy:x:19: games:x:20: tape:x:33: video:x:39: ftp:x:50: lock:x:54: audio:x:63: nobody:x:99: users:x:100: utmp:x:22: utempter:x:35: input:x:999: systemd-journal:x:190: systemd-network:x:192: dbus:x:81: polkitd:x:998: libstoragemgmt:x:997: ssh_keys:x:996: abrt:x:173: rpc:x:32: sshd:x:74: slocate:x:21: postdrop:x:90: postfix:x:89: ntp:x:38: chrony:x:995: tcpdump:x:72: stapusr:x:156: stapsys:x:157: stapdev:x:158: mapr:x:5000:mapr rpcuser:x:29: nfsnobody:x:65534: shadow:x:5001:mapr mysql:x:27: apache:x:48: roger:x:5002: roger1:x:5003: lili:x:5004: lily:x:5005: lily1:x:5006: lily2:x:5007: printadmin:x:994: sssd:x:993: nscd:x:28: ldap:x:55: sam:x:5008: nick:x:5009: jack:x:5010: sale:x:5011:sam dev:x:5012:jack,nick RogerTseng:x:5013: ``` ```shell= groupadd -g 7000 ad-usr-group groupadd -g 7010 ad-adm-group cat /etc/group | grep ad- ad-usr-group:x:7000: ad-adm-group:x:7010: useradd ad-user1 -g 7000 -u 700 useradd ad-user2 -g 7010 -u 701 ``` 7000 ![](https://i.imgur.com/9Z4Rx2M.png) ![](https://i.imgur.com/fetmY85.png) ![](https://i.imgur.com/GyK7mhy.png) ![](https://i.imgur.com/Fwe3ePc.png) ## AD config ![](https://i.imgur.com/W1Fpfed.png) ![](https://i.imgur.com/h36Dryt.png) ![](https://i.imgur.com/naE3F3E.png) ![](https://i.imgur.com/YvDaYyJ.png) -->