Skip to main content

RHCSA EX200 - Managing Files LAB

creating a tar from /usr/share/doc directory

[csr@rhel-lab1 ~]$ du -sh /usr/share/doc
63M     /usr/share/doc
[csr@rhel-lab1 ~]$ tar -cf documentation.tar /usr/share/doc
tar: Removing leading `/' from member names
[csr@rhel-lab1 ~]$ ls
2  archives  documentation.tar  Desktop  Documents  Downloads  Music  output  Pictures  Public  Templates  Videos
[csr@rhel-lab1 ~]$ ls -l
total 59748
-rw-r--r--. 1 csr csr     1328 Apr 11 18:55 2
drwxr-xr-x. 2 csr csr       26 Apr  9 18:32 archives
-rw-r--r--. 1 csr csr 61173760 Apr 15 18:33 documentation.tar
drwxr-xr-x. 2 csr csr        6 Apr 10 12:03 Desktop
drwxr-xr-x. 2 csr csr       72 Apr 11 18:04 Documents
drwxr-xr-x. 2 csr csr        6 Apr 10 12:03 Downloads
drwxr-xr-x. 2 csr csr        6 Apr 10 12:03 Music
-rw-r--r--. 1 csr csr        6 Apr 11 17:56 output
drwxr-xr-x. 2 csr csr        6 Apr 10 12:03 Pictures
drwxr-xr-x. 2 csr csr        6 Apr 10 12:03 Public
drwxr-xr-x. 2 csr csr        6 Apr 10 12:03 Templates
drwxr-xr-x. 2 csr csr        6 Apr 10 12:03 Videos
[csr@rhel-lab1 ~]$ du -sh *.tar
59M     ddocumentation.tar

listing content of a tar file - tar-tvf filename (t list the content,  -v verbose, -f use file archive)

[csr@rhel-lab1 ~]$ tar -tvf documentation.tar | more
drwxr-xr-x root/root         0 2024-04-09 17:31 usr/share/doc/
drwxr-xr-x root/root         0 2024-04-08 14:55 usr/share/doc/hwdata/
-rw-r--r-- root/root       175 2023-08-21 01:22 usr/share/doc/hwdata/LICENSE
drwxr-xr-x root/root         0 2024-04-08 14:55 usr/share/doc/xkeyboard-config/
-rw-r--r-- root/root       510 2021-06-08 15:20 usr/share/doc/xkeyboard-config/AUTHORS
-rw-r--r-- root/root      9244 2021-06-08 15:20 usr/share/doc/xkeyboard-config/COPYING
-rw-r--r-- root/root       861 2021-06-08 15:20 usr/share/doc/xkeyboard-config/HOWTO.testing
-rw-r--r-- root/root      2303 2021-06-08 15:20 usr/share/doc/xkeyboard-config/HOWTO.transition
-rw-r--r-- root/root      5108 2021-06-08 15:20 usr/share/doc/xkeyboard-config/NEWS
-rw-r--r-- root/root      1627 2021-06-08 15:20 usr/share/doc/xkeyboard-config/README
-rw-r--r-- root/root      7515 2021-06-08 15:20 usr/share/doc/xkeyboard-config/README.config
-rw-r--r-- root/root     23948 2021-06-08 15:20 usr/share/doc/xkeyboard-config/README.enhancing
-rw-r--r-- root/root      1882 2021-06-08 15:20 usr/share/doc/xkeyboard-config/README.symbols

create the same but compressed using gz

[csr@rhel-lab1 ~]$ tar -czvf documentation.tar.gz /usr/share/doc | more
tar: Removing leading `/' from member names
/usr/share/doc/
/usr/share/doc/hwdata/
/usr/share/doc/hwdata/LICENSE
/usr/share/doc/xkeyboard-config/
/usr/share/doc/xkeyboard-config/AUTHORS
/usr/share/doc/xkeyboard-config/COPYING
/usr/share/doc/xkeyboard-config/HOWTO.testing
/usr/share/doc/xkeyboard-config/HOWTO.transition
/usr/share/doc/xkeyboard-config/NEWS
/usr/share/doc/xkeyboard-config/README
/usr/share/doc/xkeyboard-config/README.config
/usr/share/doc/xkeyboard-config/README.enhancing
/usr/share/doc/xkeyboard-config/README.symbols
/usr/share/doc/tzdata/
/usr/share/doc/tzdata/README
/usr/share/doc/tzdata/theory.html
/usr/share/doc/tzdata/tz-art.html
/usr/share/doc/tzdata/tz-link.html
[csr@rhel-lab1 ~]$ du -sh docu*.*
59M     documentation.tar
19M     documentation.tar.gz

using J for compression

[csr@rhel-lab1 ~]$ tar -cjvf documentation.tar.bz2 /usr/share/doc | more
tar: Removing leading `/' from member names
/usr/share/doc/
/usr/share/doc/hwdata/
/usr/share/doc/hwdata/LICENSE
/usr/share/doc/xkeyboard-config/
/usr/share/doc/xkeyboard-config/AUTHORS
/usr/share/doc/xkeyboard-config/COPYING
/usr/share/doc/xkeyboard-config/HOWTO.testing
/usr/share/doc/xkeyboard-config/HOWTO.transition
/usr/share/doc/xkeyboard-config/NEWS
/usr/share/doc/xkeyboard-config/README
/usr/share/doc/xkeyboard-config/README.config
/usr/share/doc/xkeyboard-config/README.enhancing
/usr/share/doc/xkeyboard-config/README.symbols
/usr/share/doc/tzdata/
[csr@rhel-lab1 ~]$ du -sh docu*.*
59M     documentation.tar
16M     documentation.tar.bz2
19M     documentation.tar.gz

 

Listing the gz file content

[csr@rhel-lab1 ~]$ tar -ttzvf documentation.tar.gz | more
drwxr-xr-x root/root         0 2024-04-09 17:31 usr/share/doc/
drwxr-xr-x root/root         0 2024-04-08 14:55 usr/share/doc/hwdata/
-rw-r--r-- root/root       175 2023-08-21 01:22 usr/share/doc/hwdata/LICENSE
drwxr-xr-x root/root         0 2024-04-08 14:55 usr/share/doc/xkeyboard-config/
-rw-r--r-- root/root       510 2021-06-08 15:20 usr/share/doc/xkeyboard-config/AUTHORS
-rw-r--r-- root/root      9244 2021-06-08 15:20 usr/share/doc/xkeyboard-config/COPYING
-rw-r--r-- root/root       861 2021-06-08 15:20 usr/share/doc/xkeyboard-config/HOWTO.testing
-rw-r--r-- root/root      2303 2021-06-08 15:20 usr/share/doc/xkeyboard-config/HOWTO.transition
-rw-r--r-- root/root      5108 2021-06-08 15:20 usr/share/doc/xkeyboard-config/NEWS
-rw-r--r-- root/root      1627 2021-06-08 15:20 usr/share/doc/xkeyboard-config/READ

untar file and view the content using tree

[csr@rhel-lab1 ~]$ mkdir doctests
[csr@rhel-lab1 ~]$ mv documentation.tar* /doctests/
mv: target '/doctests/' is not a directory
[csr@rhel-lab1 ~]$ mv documentation.tar* ~/doctests/
[csr@rhel-lab1 ~]$ cd doctests/
[csr@rhel-lab1 doctests]$ ls
documentation.tar  documentation.tar.bz2  documentation.tar.gz
[csr@rhel-lab1 doctests]$ tar -xzvf documentation.tar.gz 
[csr@rhel-lab1 doctests]$ ls -la
total 93816
drwxr-xr-x.  3 csr csr       99 Apr 15 18:51 .
drwx------. 17 csr csr     4096 Apr 15 18:49 ..
-rw-r--r--.  1 csr csr 61173760 Apr 15 18:33 documentation.tar
-rw-r--r--.  1 csr csr 15930018 Apr 15 18:44 documentation.tar.bz2
-rw-r--r--.  1 csr csr 18954095 Apr 15 18:42 documentation.tar.gz
drwxr-xr-x.  3 csr csr       19 Apr 15 18:51 usr
[csr@rhel-lab1 doctests]$ tree usr | more
usr
└── share
    └── doc
        ├── abattis-cantarell-fonts
        │   ├── NEWS
        │   └── README.md
        ├── accountsservice
        │   ├── AUTHORS
        │   └── README.md
        ├── adcli
        │   ├── AUTHORS
        │   ├── ChangeLog
        │   ├── COPYING
        │   ├── NEWS
        │   └── README
        ├── adobe-mappings-cmap
        │   ├── README.md
        │   └── VERSIONS.txt
        ├── adobe-mappings-pdf
        │   └── README.md
        ├── adobe-source-code-pro-fonts
        │   └── README.md
        ├── alsa-lib
        │   ├── asoundrc.txt

 

extract a single file from the tar document

[csr@rhel-lab1 doctests]$ tar -xzvf documentation.tar.gz usr/share/doc/gdisk/gdisk_test.sh
usr/share/doc/gdisk/gdisk_test.sh
[csr@rhel-lab1 doctests]$ 
[csr@rhel-lab1 doctests]$ tree usr
usr
└── share
    └── doc
        └── gdisk
            └── gdisk_test.sh

 

using gunzip

cloud_user@server1: ~ $ ls
audit  build  init_pass  mariadb_repo_setup  Public  Templates  wget-1.19.5-8.el8_1.1.x86_64.rpm
cloud_user@server1: ~ $ gzip wget-1.19.5-8.el8_1.1.x86_64.rpm 
cloud_user@server1: ~ $ ll
total 740
drwxrwxr-x. 2 cloud_user cloud_user     74 Sep  8  2020 audit
drwxrwxr-x. 2 cloud_user cloud_user     55 Sep  8  2020 build
-rw-r--r--. 1 cloud_user cloud_user      1 Apr 30  2021 init_pass
-rwxrwxr-x. 1 cloud_user cloud_user  19519 Sep  9  2020 mariadb_repo_setup
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Public
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Templates
-rw-r--r--. 1 cloud_user cloud_user 729756 Sep  9  2020 wget-1.19.5-8.el8_1.1.x86_64.rpm.gz

unzip it

cloud_user@server1: ~ $ gunzip wget-1.19.5-8.el8_1.1.x86_64.rpm.gz 
cloud_user@server1: ~ $ ll
total 760
drwxrwxr-x. 2 cloud_user cloud_user     74 Sep  8  2020 audit
drwxrwxr-x. 2 cloud_user cloud_user     55 Sep  8  2020 build
-rw-r--r--. 1 cloud_user cloud_user      1 Apr 30  2021 init_pass
-rwxrwxr-x. 1 cloud_user cloud_user  19519 Sep  9  2020 mariadb_repo_setup
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Public
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Templates
-rw-r--r--. 1 cloud_user cloud_user 752504 Sep  9  2020 wget-1.19.5-8.el8_1.1.x86_64.rpm
cloud_user@server1: ~ $ 

same apply to bzip

cloud_user@server1: ~ $ bzip2 wget-1.19.5-8.el8_1.1.x86_64.rpm 
cloud_user@server1: ~ $ ll
total 744
drwxrwxr-x. 2 cloud_user cloud_user     74 Sep  8  2020 audit
drwxrwxr-x. 2 cloud_user cloud_user     55 Sep  8  2020 build
-rw-r--r--. 1 cloud_user cloud_user      1 Apr 30  2021 init_pass
-rwxrwxr-x. 1 cloud_user cloud_user  19519 Sep  9  2020 mariadb_repo_setup
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Public
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Templates
-rw-r--r--. 1 cloud_user cloud_user 736128 Sep  9  2020 wget-1.19.5-8.el8_1.1.x86_64.rpm.bz2
cloud_user@server1: ~ $ bunzip2 wget-1.19.5-8.el8_1.1.x86_64.rpm.bz2 
cloud_user@server1: ~ $ ll
total 760
drwxrwxr-x. 2 cloud_user cloud_user     74 Sep  8  2020 audit
drwxrwxr-x. 2 cloud_user cloud_user     55 Sep  8  2020 build
-rw-r--r--. 1 cloud_user cloud_user      1 Apr 30  2021 init_pass
-rwxrwxr-x. 1 cloud_user cloud_user  19519 Sep  9  2020 mariadb_repo_setup
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Public
drwxr-xr-x. 2 cloud_user cloud_user      6 May  8  2019 Templates
-rw-r--r--. 1 cloud_user cloud_user 752504 Sep  9  2020 wget-1.19.5-8.el8_1.1.x86_64.rpm
cloud_user@server1: ~ $ 

 

Task 2

Using brackets and how to create multiple files

cloud_user@server1: ~ $ mkdir -p ~/code/ursula/{cloudform,xml} ~/code/mortimer/json
cloud_user@server1: ~ $ tree code
code
├── mortimer
│   └── json
└── ursula
    ├── cloudform
    └── xml

5 directories, 0 files
cloud_user@server1: ~ $ 

cloud_user@server1: ~ $ touch ~/code/ursula/{file1,file2,file3}.json ~/code/ursula/file{1,2,3}.xml
cloud_user@server1: ~ $ tree code
code
├── mortimer
│   └── json
└── ursula
    ├── cloudform
    ├── file1.json
    ├── file1.xml
    ├── file2.json
    ├── file2.xml
    ├── file3.json
    ├── file3.xml
    └── xml

5 directories, 6 files

cloud_user@server1: ~ $ touch ~/code/mortimer/{file1,file2,file3}.cf
cloud_user@server1: ~ $ tree
.
├── audit
│   ├── devsys05-account-audit.log
│   └── devsys08-account-audit.log
├── build
│   ├── devsys12-account-audit.log
│   └── dnf.log
├── code
│   ├── mortimer
│   │   ├── file1.cf
│   │   ├── file2.cf
│   │   ├── file3.cf
│   │   └── json
│   └── ursula
│       ├── cloudform
│       ├── file1.json
│       ├── file1.xml
│       ├── file2.json
│       ├── file2.xml
│       ├── file3.json
│       ├── file3.xml
│       └── xml
├── init_pass
├── mariadb_repo_setup
├── Public
├── Templates
└── wget-1.19.5-8.el8_1.1.x86_64.rpm

moving files around

cloud_user@server1: ~ $ mv ~/code/ursula/*.xml ~/code/ursula/xml/
cloud_user@server1: ~ $ tree
.
├── audit
│   ├── devsys05-account-audit.log
│   └── devsys08-account-audit.log
├── build
│   ├── devsys12-account-audit.log
│   └── dnf.log
├── code
│   ├── mortimer
│   │   ├── file1.cf
│   │   ├── file2.cf
│   │   ├── file3.cf
│   │   └── json
│   └── ursula
│       ├── cloudform
│       ├── file1.json
│       ├── file2.json
│       ├── file3.json
│       └── xml
│           ├── file1.xml
│           ├── file2.xml
│           └── file3.xml
├── init_pass
├── mariadb_repo_setup
├── Public
├── Templates
└── wget-1.19.5-8.el8_1.1.x86_64.rpm

10 directories, 16 files
cloud_user@server1: ~ $ 
cloud_user@server1: ~ $ mv ~/code/ursula/*.json ~/code/mortimer/json/
cloud_user@server1: ~ $ tree code
code
├── mortimer
│   ├── file1.cf
│   ├── file2.cf
│   ├── file3.cf
│   └── json
│       ├── file1.json
│       ├── file2.json
│       └── file3.json
└── ursula
    ├── cloudform
    └── xml
        ├── file1.xml
        ├── file2.xml
        └── file3.xml

5 directories, 9 files
cloud_user@server1: ~ $ 
cloud_user@server1: mortimer $ mv *.cf ../ursula/cloudform/
cloud_user@server1: mortimer $ cd
cloud_user@server1: ~ $ tree code
code
├── mortimer
│   └── json
│       ├── file1.json
│       ├── file2.json
│       └── file3.json
└── ursula
    ├── cloudform
    │   ├── file1.cf
    │   ├── file2.cf
    │   └── file3.cf
    └── xml
        ├── file1.xml
        ├── file2.xml
        └── file3.xml

5 directories, 9 files
cloud_user@server1: ~ $ 
cloud_user@server1: ~ $ cp ~/code/ursula/cloudform/ ~/code/mortimer/ -r
cloud_user@server1: ~ $ tree code
code
├── mortimer
│   ├── cloudform
│   │   ├── file1.cf
│   │   ├── file2.cf
│   │   └── file3.cf
│   └── json
│       ├── file1.json
│       ├── file2.json
│       └── file3.json
└── ursula
    ├── cloudform
    │   ├── file1.cf
    │   ├── file2.cf
    │   └── file3.cf
    └── xml
        ├── file1.xml
        ├── file2.xml
        └── file3.xml

6 directories, 12 files
cloud_user@server1: ~ $ rm -rf ~/code/ursula/cloudform/
cloud_user@server1: ~ $ tree code
code
├── mortimer
│   ├── cloudform
│   │   ├── file1.cf
│   │   ├── file2.cf
│   │   └── file3.cf
│   └── json
│       ├── file1.json
│       ├── file2.json
│       └── file3.json
└── ursula
    └── xml
        ├── file1.xml
        ├── file2.xml
        └── file3.xml

5 directories, 9 files
cloud_user@server1: ~ $ 

 

task 3 creating softlinks and hardlinks

l

cloud_user@server1: links $ ll
total 0
cloud_user@server1: links $ touch original 
cloud_user@server1: links $ ll -i #Use -i to show the inode nuber
total 0
12583416 -rw-rw-r--. 1 cloud_user cloud_user 0 Apr 16 01:20 original
cloud_user@server1: links $ 
cloud_user@server1: links $ ln -s original softlink
cloud_user@server1: links $ ll -i
total 0
12583416 -rw-rw-r--. 1 cloud_user cloud_user 0 Apr 16 01:20 original
12583419 lrwxrwxrwx. 1 cloud_user cloud_user 8 Apr 16 01:22 softlink -> original
cloud_user@server1: links $ mkdir directory
cloud_user@server1: links $ ln -s directory/ otherdirectory
cloud_user@server1: links $ ls -li
total 0
33560168 drwxrwxr-x. 2 cloud_user cloud_user  6 Apr 16 01:22 directory
12583416 -rw-rw-r--. 1 cloud_user cloud_user  0 Apr 16 01:20 original
12583420 lrwxrwxrwx. 1 cloud_user cloud_user 10 Apr 16 01:22 otherdirectory -> directory/
12583419 lrwxrwxrwx. 1 cloud_user cloud_user  8 Apr 16 01:22 softlink -> original
cloud_user@server1: links $ ln original hardlink
cloud_user@server1: links $ ls -li
total 0
33560168 drwxrwxr-x. 2 cloud_user cloud_user  6 Apr 16 01:22 directory
12583416 -rw-rw-r--. 2 cloud_user cloud_user  0 Apr 16 01:20 hardlink
12583416 -rw-rw-r--. 2 cloud_user cloud_user  0 Apr 16 01:20 original
12583420 lrwxrwxrwx. 1 cloud_user cloud_user 10 Apr 16 01:22 otherdirectory -> directory/
12583419 lrwxrwxrwx. 1 cloud_user cloud_user  8 Apr 16 01:22 softlink -> original
cloud_user@server1: links $ ln -s /etc/fstab softtab
cloud_user@server1: links $ ll -i
total 0
33560168 drwxrwxr-x. 2 cloud_user cloud_user  6 Apr 16 01:22 directory
12583416 -rw-rw-r--. 2 cloud_user cloud_user  0 Apr 16 01:20 hardlink
12583416 -rw-rw-r--. 2 cloud_user cloud_user  0 Apr 16 01:20 original
12583420 lrwxrwxrwx. 1 cloud_user cloud_user 10 Apr 16 01:22 otherdirectory -> directory/
12583419 lrwxrwxrwx. 1 cloud_user cloud_user  8 Apr 16 01:22 softlink -> original
12583421 lrwxrwxrwx. 1 cloud_user cloud_user 10 Apr 16 01:25 softtab -> /etc/fstab
cloud_user@server1: links $ ln /etc/fstab hardtab
ln: failed to create hard link 'hardtab' => '/etc/fstab': Operation not permitted
cloud_user@server1: links $ sudo ln /etc/fstab hardtab
[sudo] password for cloud_user: 
cloud_user@server1: links $ ll -i
total 4
33560168 drwxrwxr-x. 2 cloud_user cloud_user   6 Apr 16 01:22 directory
12583416 -rw-rw-r--. 2 cloud_user cloud_user   0 Apr 16 01:20 hardlink
   71951 -rw-r--r--. 2 root       root       475 May  8  2019 hardtab
12583416 -rw-rw-r--. 2 cloud_user cloud_user   0 Apr 16 01:20 original
12583420 lrwxrwxrwx. 1 cloud_user cloud_user  10 Apr 16 01:22 otherdirectory -> directory/
12583419 lrwxrwxrwx. 1 cloud_user cloud_user   8 Apr 16 01:22 softlink -> original
12583421 lrwxrwxrwx. 1 cloud_user cloud_user  10 Apr 16 01:25 softtab -> /etc/fstab

finding where  a hardlink belongs using the inode to search

cloud_user@server1: links $ find / -inum 71951 2> /dev/null
/proc/2428/oom_adj
/etc/fstab
/home/cloud_user/links/hardtab

Now we are going to find by inode number and also execute an ls -li

cloud_user@server1: links $ find / -inum 71951 -exec ls -li {} \; 2> /dev/null
71951 -rw-r--r--. 1 root root 0 Apr 16 01:27 /proc/2428/oom_adj
71951 -rw-r--r--. 2 root root 475 May  8  2019 /etc/fstab
71951 -rw-r--r--. 2 root root 475 May  8  2019 /home/cloud_user/links/hardtab
cloud_user@server1: links $ 
cloud_user@server1: links $ find ./ -inum 12583416
./original
./hardlink
cloud_user@server1: links $ 

 

Task 4

share directory for tree users

creating a working folder

loud_user@server1: ~ $ sudo -i
[sudo] password for cloud_user: 
root@server1: ~ # mkdir /project-phoenix
root@server1: ~ # ls
anaconda-ks.cfg  aws-cfn-bootstrap-1.4  original-ks.cfg
root@server1: ~ # pwd
/root
root@server1: ~ # cd ..
root@server1: / # ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  project-phoenix  root  run  sbin  srv  swapfile  sys  tmp  usr  var
root@server1: / # cd /home/
root@server1: home # ls -ld /project-phoenix/
drwxr-xr-x. 2 root root 6 Apr 16 02:11 /project-phoenix/

creating users

root@server1: home # 
root@server1: home # useradd -m -g users -G devops snuffy ; passwd snuffy
Changing password for user snuffy.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
root@server1: home # useradd -m -g devops -G users ursula ; passwd ursula
Changing password for user ursula.
New password: 
Retype new password: 
Sorry, passwords do not match.
passwd: Authentication token manipulation error
root@server1: home # passwd ursula
Changing password for user ursula.
New password: 
Retype new password: 
Sorry, passwords do not match.
^[[Apasswd: Authentication token manipulation error
root@server1: home # passwd ursula
Changing password for user ursula.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
root@server1: home # useradd -m -g sysadmins -G users mortimer ; passwd mortimer
Changing password for user mortimer.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
root@server1: home # cat /etc/passwd
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:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
insights:x:995:992:Red Hat Insights:/var/lib/insights:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:994:991::/var/lib/chrony:/sbin/nologin
cloud_user:x:1001:1001::/home/cloud_user:/bin/bash
ssm-user:x:1002:1002::/home/ssm-user:/bin/bash
qemu:x:107:107:qemu user:/:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
gluster:x:993:986:GlusterFS daemons:/run/gluster:/sbin/nologin
saslauth:x:992:76:Saslauthd user:/run/saslauthd:/sbin/nologin
geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
dnsmasq:x:984:984:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
pipewire:x:983:982:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
colord:x:982:981:User for colord:/var/lib/colord:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
setroubleshoot:x:980:979::/var/lib/setroubleshoot:/sbin/nologin
flatpak:x:979:978:User for flatpak system helper:/:/sbin/nologin
devops:x:1003:1003:DevOps Admin Service Account:/home/devops:/bin/bash
mysql:x:977:976:MySQL server:/var/lib/mysql:/sbin/nologin
snuffy:x:1004:100::/home/snuffy:/bin/bash
ursula:x:1005:1003::/home/ursula:/bin/bash
mortimer:x:1006:49999::/home/mortimer:/bin/bash

Set folder permissions

set the grouup to users and change permissions to folder

root@server1: home # 
root@server1: home # ls -ld /project-phoenix/
drwxr-xr-x. 2 root root 6 Apr 16 02:11 /project-phoenix/
root@server1: home # chown .users /project-phoenix/
root@server1: home # ls -ld /project-phoenix/
drwxr-xr-x. 2 root users 6 Apr 16 02:11 /project-phoenix/
root@server1: home # chmod g+w /project-phoenix/
root@server1: home # ls -ld /project-phoenix/
drwxrwxr-x. 2 root users 6 Apr 16 02:11 /project-phoenix/
root@server1: home # 

test permissions

root@server1: home # su snuffy 
snuffy@server1: home $ touch /project-phoenix/snuffy.file1
snuffy@server1: home $ exit
exit
root@server1: home # sudo - ursula
sudo: -: command not found
root@server1: home # su - ursula
[ursula@server1 ~]$ touch /project-phoenix/ursula.file1
[ursula@server1 ~]$ exit
logout
root@server1: home # su - mortimer
[mortimer@server1 ~]$ touch /project-phoenix/mortimer.file1
[mortimer@server1 ~]$ logout
root@server1: home # ls -l /project-phoenix/
total 0
-rw-r--r--. 1 mortimer sysadmins 0 Apr 16 02:18 mortimer.file1
-rw-r--r--. 1 snuffy   users     0 Apr 16 02:18 snuffy.file1
-rw-r--r--. 1 ursula   devops    0 Apr 16 02:18 ursula.file1
root@server1: home # 

Change so all users has the same ownership

root@server1: home # ls -ld /project-phoenix/ ; ls -l /project-phoenix/
drwxrwxr-x. 2 root users 68 Apr 16 02:18 /project-phoenix/
total 0
-rw-r--r--. 1 mortimer sysadmins 0 Apr 16 02:18 mortimer.file1
-rw-r--r--. 1 snuffy   users     0 Apr 16 02:18 snuffy.file1
-rw-r--r--. 1 ursula   devops    0 Apr 16 02:18 ursula.file1
root@server1: home # chmod g+s /project-phoenix/
root@server1: home # ls -ld /project-phoenix/
drwxrwsr-x. 2 root users 68 Apr 16 02:18 /project-phoenix/
root@server1: home # su - snuffy
Last login: Tue Apr 16 02:17:55 UTC 2024 on pts/0
[snuffy@server1 ~]$ touch /project-phoenix/snuffy.file2
[snuffy@server1 ~]$ exxit
bash: exxit: command not found...
e^C
[snuffy@server1 ~]$ exit
logout
root@server1: home # su - ursula
Last login: Tue Apr 16 02:18:22 UTC 2024 on pts/0
[ursula@server1 ~]$ touch /project-phoenix/ursula.file2
[ursula@server1 ~]$ exit
logout
root@server1: home # su - mortimer 
Last login: Tue Apr 16 02:18:36 UTC 2024 on pts/0
[mortimer@server1 ~]$ touch /project-phoenix/mortimer.file2
[mortimer@server1 ~]$ exit
logout
root@server1: home # ls -ld /project-phoenix/
drwxrwsr-x. 2 root users 130 Apr 16 02:20 /project-phoenix/
root@server1: home # ls -l /project-phoenix/
total 0
-rw-r--r--. 1 mortimer sysadmins 0 Apr 16 02:18 mortimer.file1
-rw-r--r--. 1 mortimer users     0 Apr 16 02:20 mortimer.file2
-rw-r--r--. 1 snuffy   users     0 Apr 16 02:18 snuffy.file1
-rw-r--r--. 1 snuffy   users     0 Apr 16 02:20 snuffy.file2
-rw-r--r--. 1 ursula   devops    0 Apr 16 02:18 ursula.file1
-rw-r--r--. 1 ursula   users     0 Apr 16 02:20 ursula.file2

make another change to make sure users cannot delete files from other users

root@server1: home # chmod +t /project-phoenix/
root@server1: home # ls -ld /project-phoenix/
drwxrwsr-t. 2 root users 130 Apr 16 02:20 /project-phoenix/ # Notice there is a t at the end of the permissions
root@server1: home # 
root@server1: home # chown .users /project-phoenix/*.*  # change all file groups to users
root@server1: home # ls -l /project-phoenix/
total 0
-rw-r--r--. 1 mortimer users 0 Apr 16 02:18 mortimer.file1
-rw-r--r--. 1 mortimer users 0 Apr 16 02:20 mortimer.file2
-rw-r--r--. 1 snuffy   users 0 Apr 16 02:18 snuffy.file1
-rw-r--r--. 1 snuffy   users 0 Apr 16 02:20 snuffy.file2
-rw-r--r--. 1 ursula   users 0 Apr 16 02:18 ursula.file1
-rw-r--r--. 1 ursula   users 0 Apr 16 02:20 ursula.file2