Skip to main content

SGID with example

SGID is Set Group ID.

When SGID is used?

Eg:
You are manger of teamA and teamA has 2 engineers E1, E2.
 You will be assigning a project to teamA so that all two engineers should work on this project. You will create a folder /project.
teamA group is created and E1,E2 users are assigned to the group.

You will set group permission of the folder as below.

ls -ld /project
drwxrwx---. 2 root teamA 6 Aug 31 08:39 /project

Now E1,E2 can create files inside the project folder as shown below.

-rw-rw-r--. 1 E1 E1 0 Aug 31 08:45 e1_file.txt -- > file created by E1 user
-rw-rw-r--. 1 E2 E2 0 Aug 31 08:46 e2_file.txt --> file created by E2 user.

Here the problem is E2 cannot edit or change E1 file and vice versa since the file permission for group is assigned of the user.

To fix this, the group permission of the files should be changed to teamA. In other words, when file gets created permission from the project folder should be automatically assigned to files inside the folder. For this SGID is used.

Command:

To set:
chmod g+s <dir>

To unset:
chmod g-s <dir>

eg:
# chmod g+s /project

# ls -ld /project/
drwxrws---. 2 root teamA 42 Aug 31 08:46 /project/


You will notice S in group permission for the folder.

Now any files created by user E1, E2 will have permission as below and E1, E2 user can edit/change each others file.

-rw-rw-r--. 1 E1 teamA 0 Aug 31 09:02 e1_newfile.txt --> file created with user E1
-rw-rw-r--. 1 E2 teamA 0 Aug 31 09:03 e2_newfile.txt --> file created with user E2


Note: Risk here is E1 can delete file of E2 and E2 can delete file of E1. To overcome this Stick bit is used.




















N

Comments

Popular posts from this blog

Ansible script to stop iptables

 Ansible script to stop iptables and disable during boot Step 1. [root@cluster playbooks]# pwd /root/playbooks [root@cluster playbooks]# cat hosts [webservers] 169.254.41.221 169.254.41.222 Step2. [root@cluster playbooks]# cat iptables.yml --- - name: stop ipatbles and disable   hosts: webservers   tasks:   - name: stop iptables     service: name=iptables state=stopped   - name: disbale on iptable on boot     service: name=iptables enabled=no Step3: [root@cluster playbooks]# ansible-playbook iptables.yml PLAY [stop ipatbles and disable] *********************************************** TASK [setup] ******************************************************************* ok: [169.254.41.222] ok: [169.254.41.221] ok: [localhost] TASK [stop iptables] *********************************************************** changed: [localhost] ok: [169.254.41.221] ok: [169.254.41.222] TASK [disbale on iptable on boot] ********************************************** ok: [169.254.41.222] changed: [localhost

Get information about remote hosts using Ansible

Get information about remote hosts using Ansible setup command Below command gives all the information of client hosts which includes memory, server architecture, IP adresses etc. [root@ansible mywork]# ansible all -i hosts -m setup If you need just memory information of remote node then for the above command need to add filter as shown below [root@ansible mywork]# ansible all -i hosts -m setup -a "filter=ansible_*_mb" node01 | SUCCESS => {     "ansible_facts": {         "ansible_memfree_mb": 873,         "ansible_memory_mb": {             "nocache": {                 "free": 919,                 "used": 77             },             "real": {                 "free": 873,                 "total": 996,                 "used": 123             },             "swap": {                 "cached": 0,                 "free": 15

connect: Network is unreachable

connect: Network is unreachable If you are getting below error, then probably you have not added gateway address or you have incorrect gateway in config file. [root@cluster ~]# ping google.com connect: Network is unreachable Before: [root@cluster ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3 DEVICE=eth3 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.174.130 NETMASK=255.255.255.0 After: [root@cluster ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3 DEVICE=eth3 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.174.130 NETMASK=255.255.255.0 GATEWAY=192.168.174.2 [root@cluster ~]# ifdown eth3 [root@cluster ~]# ifup eth3 Determining if ip address 192.168.174.130 is already in use for device eth3... [root@cluster ~]# ping google.com PING google.com (216.58.218.174) 56(84) bytes of data. 64 bytes from dfw06s46-in-f14.1e100.net (216.58.218.174): icmp_seq=1 ttl=128 time=261 ms 6