Sziasztok!
A segítségeteket kérném az alábbi feladat megoldásában. Fontos lenne, hogy CentOS/Redhat alapon kellene a megoldás.
Create users lucy and lisa and make them members of the group support as a secondary group membership.
Create users bob and adam and make them members of the group marketing as a secondary group membership.
Create shared group directories /groups/sales and /groups/marketing and make sure these groups meet the following requirements:
- members of the group support have full access to their diretcory.
- members of the group marketing have full access to their directory.
- Users have persmissions to delete only their own files, but Bob is the boss, so user Bob has access to delete all user's files.
[root@localhost ~]# useradd lucy
[root@localhost ~]# useradd lisa
[root@localhost ~]# groupadd support
[root@localhost ~]# usermod -aG support lucy
[root@localhost ~]# usermod -aG support lisa
[root@localhost ~]# groupmems -l -g support
lucy lisa
[root@localhost ~]# useradd bob
[root@localhost ~]# useradd adam
[root@localhost ~]# groupadd marketing
[root@localhost ~]# usermod -aG marketing bob
[root@localhost ~]# usermod -aG marketing adam
[root@localhost ~]# groupmems -g marketing -l
bob adam
[root@localhost ~]#
(Minden usernek adtam jelszót és úgy próbálgattam velük a dolgokat lentebb. Minden userrel beléptem, touch-al hoztam létre velük üres fájlokat, amiket törölni akartam másik userrel és Bob-bal is)
# Innentől három különféle módon is próbáltam
---------------------------------------------------------------
1: SGID + sticky
---------------------------------------------------------------
[root@localhost ~]# mkdir -p /groups/support
[root@localhost ~]# mkdir /groups/marketing
[root@localhost ~]# chown .support /groups/support/
[root@localhost ~]# chown .marketing /groups/marketing/
[root@localhost ~]# chmod g+rwx /groups/support/
[root@localhost ~]# chmod g+rwx /groups/marketing/
[root@localhost ~]# chmod g+s,o+t /groups/support/
[root@localhost ~]# chmod g+s,o+t /groups/marketing/
[root@localhost ~]# ls -al /groups/
total 0
drwxr-xr-x. 4 root root 38 Jun 5 03:02 .
dr-xr-xr-x. 19 root root 271 Jun 5 03:01 ..
drwxrwsr-t. 2 root marketing 6 Jun 5 03:02 marketing
drwxrwsr-t. 2 root support 6 Jun 5 03:01 support
[root@localhost ~]#
[root@localhost ~]# setfacl -R -m u:bob:rwx /groups/
[root@localhost ~]# setfacl -m d:u:bob:rwx /groups/
[root@localhost ~]# getfacl /groups/
getfacl: Removing leading '/' from absolute path names
# file: groups/
# owner: root
# group: root
user::rwx
user:bob:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:bob:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@localhost ~]# getfacl /groups/support/
getfacl: Removing leading '/' from absolute path names
# file: groups/support/
# owner: root
# group: support
# flags: -st
user::rwx
user:bob:rwx
group::rwx
mask::rwx
other::r-x
[root@localhost ~]# getfacl /groups/marketing/
getfacl: Removing leading '/' from absolute path names
# file: groups/marketing/
# owner: root
# group: marketing
# flags: -st
user::rwx
user:bob:rwx
group::rwx
mask::rwx
other::r-x
[root@localhost ~]#
[bob@localhost marketing]$ ls -al
total 0
drwxrwsr-t+ 2 root marketing 56 Jun 5 03:13 .
drwxrwxr-x+ 4 root root 38 Jun 5 03:02 ..
-rw-rw-r--. 1 adam marketing 0 Jun 5 03:13 adam1
-rw-rw-r--. 1 adam marketing 0 Jun 5 03:13 adam2
-rw-rw-r--. 1 bob marketing 0 Jun 5 03:13 bob1
-rw-rw-r--. 1 bob marketing 0 Jun 5 03:13 bob2
[bob@localhost marketing]$ rm adam1
rm: cannot remove 'adam1': Operation not permitted
[bob@localhost marketing]$
# Bob nem tudja törölni
---------------------------------------------------------------
2: SGID nélkül, sticky nélkül, othersnek semmi
---------------------------------------------------------------
[root@localhost ~]# rm -rf /groups/
[root@localhost ~]# mkdir -p /groups/support
[root@localhost ~]# mkdir -p /groups/marketing
[root@localhost ~]# chown .support /groups/support/
[root@localhost ~]# chown .marketing /groups/marketing/
[root@localhost ~]# chmod 770 /groups/support/
[root@localhost ~]# chmod 770 /groups/marketing/
[root@localhost ~]# ls -la /groups/
total 0
drwxr-xr-x. 4 root root 38 Jun 5 03:21 .
dr-xr-xr-x. 19 root root 271 Jun 5 03:21 ..
drwxrwx---. 2 root marketing 6 Jun 5 03:21 marketing
drwxrwx---. 2 root support 6 Jun 5 03:21 support
[root@localhost ~]# setfacl -R -m u:bob:rwx /groups/
[root@localhost ~]# setfacl -m d:u:bob:rwx /groups/
[root@localhost ~]#
[lucy@localhost support]$ rm lisa1
rm: remove write-protected regular empty file 'lisa1'? y
[lucy@localhost support]$ ls -al
total 0
drwxrwx---+ 2 root support 45 Jun 5 03:24 .
drwxrwxr-x+ 4 root root 38 Jun 5 03:21 ..
-rw-rw-r--. 1 lisa lisa 0 Jun 5 03:23 lisa2
-rw-rw-r--. 1 lucy lucy 0 Jun 5 03:24 lucy1
-rw-rw-r--. 1 lucy lucy 0 Jun 5 03:24 lucy2
[lucy@localhost support]$
# Másik user is le tudta törölni
---------------------------------------------------------------
3: Csak sticky, othersnek semmi
---------------------------------------------------------------
[root@localhost ~]# rm -rf /groups/
[root@localhost ~]# mkdir -p /groups/support
[root@localhost ~]# mkdir -p /groups/marketing
[root@localhost ~]# chown .support /groups/support/
[root@localhost ~]# chown .marketing /groups/marketing/
[root@localhost ~]# chmod 770 /groups/support/
[root@localhost ~]# chmod 770 /groups/marketing/
[root@localhost ~]# chmod o+t /groups/support/
[root@localhost ~]# chmod o+t /groups/marketing/
[root@localhost ~]# setfacl -R -m u:bob:rwx /groups/
[root@localhost ~]# setfacl -m d:u:bob:rwx /groups/
[bob@localhost support]$ ls -al
total 0
drwxrwx--T+ 2 root support 58 Jun 5 03:27 .
drwxrwxr-x+ 4 root root 38 Jun 5 03:25 ..
-rw-rw-r--. 1 lisa lisa 0 Jun 5 03:27 lisa1
-rw-rw-r--. 1 lisa lisa 0 Jun 5 03:27 lisa2
-rw-rw-r--. 1 lucy lucy 0 Jun 5 03:27 lucy1
-rw-rw-r--. 1 lucy lucy 0 Jun 5 03:27 lucy2
[bob@localhost support]$ rm lisa1
rm: remove write-protected regular empty file 'lisa1'? y
rm: cannot remove 'lisa1': Operation not permitted
[bob@localhost support]$
# Bob nem tudja törölni
Szerintetek hogyan lenne megoldható a feladat? :)
- 205 megtekintés
Hozzászólások
szerintem nem kell acl-lel bajlódni, csak elrontja a g biteket (a group bitek az acl mask-ot jelentik onnastól hogy van rajta acl). nem egyértelmű a feladat abból a szempontból, hogy csak közvetlen a csoport kvt-ak alatti fajlokra működjön úgy ahogy, vagy rekurzívan az alkvt-akra is. ha alkönyvtárakat nem vesszük figyelembe, akkor sztem elég ha bob a 2 csoport kvt-nak a tulajdonosa, akkor tud fájlokat törölni a sticky bit ellenére is.
- A hozzászóláshoz be kell jelentkezni
Nagyon köszönöm válaszod! Időközben erre jutottam magam is. Nem kell az ACL, bob tulajdonába kell adni a két könyvtárat. Az esetleges további alkönyvtárakat nem vettem figyelembe, mert azt nem említi a feladat.
- A hozzászóláshoz be kell jelentkezni
sudoers szabalyokkal (plusz esetleg még wrapper szkriptekkel, ahol nem lehet sudoers-ben ellenőrizni valamit) szoktam még ilyen cifraságokat megoldani.
csak annak usability hátránya van: rá kell venni a usert de inkább az általa használt programokat, hogy pl. egy fájl törlést azt nem natúran unlink-kel csináljon, hanem sudo-n keresztül. ha mondjuk véges számú cli paranccsal dolgozik, akkor lehet alias-olni, vagy a PATH-ba felvenni wrapper parancsokat, amik sudo-zva hívják a tényleges parancsot; de ha bármilyen fájlkezelőt is támogatni kell, akkor LD_PRELOAD-os trükkhöz nyúlok (noha mindenre az se jó).
akkor pl. lehetne ilyen sudoers szabály:
Runas_Alias BOBS_GROUPS = %support, %marketing
bob ALL=(BOBS_GROUPS) NOPASSWD: /usr/local/bin/wrapper/rm
ezzel bob bárki nevében tudja a wrapper parancsot futtatni, aki a fenti csoportok tagja.
és a wrapper/rm ellenőrizné hogy az általunk kitalált jogosultság rendszerben van-e joga a $SUDO_USER-nek azt csinálni amit épp kért, figyelve a race condition-re, symlinkekre, path traversal-ra, stb. nem lehetetlen csak eléggé fail prone.
- A hozzászóláshoz be kell jelentkezni
meg a default acl azért se bullet proof megoldás, mert mi van ha valaki nem O_CREAT-tel létrehoz új fájlt, hanem belemozgatja az acl-ezett kvt-ba; tudtommal akkor nem alkalmazza rá a default acl-eket (centos se).
- A hozzászóláshoz be kell jelentkezni
> members of the group support have full access to their directory.
Ha mondjuk én `support1` vagyok, és létrehozok egy fájlt 0600 joggal a közös könyvtárban, akkor `support2` nem tudja írni/olvasni, de esetleg (sticky bittől függően) tudja törölni. Ez így oké a feladat kitűzőjének?
Az nem volt ott esetleg, hogy a userek Sambán keresztül jönnek?
- A hozzászóláshoz be kell jelentkezni
Köszönöm szépen válaszod! Maradtam a feladat keretei között, így végül a fentebb írt megoldás lett a jó megoldás. Nem, ez csak linuxos felhasználókkal, linuxos környezetben volt feladat, nem volt szó Sambáról.
- A hozzászóláshoz be kell jelentkezni