group


g++ not found on Fedora 25

On a Fedora 25 (64bit) we got the error g++ not found.

We could have installed g++ using:

sudo dnf install gcc-c++ -y;

But we wanted to install all common additional development tools that we might need for C/C++ development in the future without going over the list of available packages to find which ones.
To do so, we installed all the packages of the group that is marked to be used for C development using dnf as follows:

sudo dnf group install "C Development Tools and Libraries" -y;

Advertisements

Linux: Check if a User or a Group Exists 2

You can find out if user exists by searching in the /etc/passwd file using the following command:

egrep -i "^useraccount:" /etc/passwd

The above command will print the matching record from /etc/passwd if the user exists or nothing if the user does not exist.
The ^ symbol is used to make sure there is no characters before the username and the : character is used as the delimiter in the file (which indicates the end of the username). By wrapping the username with these characters we are sure that if we matched a record, we matched the correct record with the full username.

A very simple way to use this code in a script is by utilizing the $? (question mark) variable. The question mark variable contains the exit status of the last command that executed. Specifically, egrep will return 0 if there was a match or else it will return a a positive number (usually 1).
Taking advantage of this behavior, after executing the above command, we check the $? variable to see the result with an if statement.

egrep -i "^useraccount:" /etc/passwd;
if [ $? -eq 0 ]; then
   echo "User Exists"
else
   echo "User does not exist -- Invalid Username"
fi

You can also find out if a group exists by searching in the /etc/group file. Similar to the approach we showed before, we can check if a group exists using the following:

egrep -i "^groupname" /etc/group;
if [ $? -eq 0 ]; then
   echo "Group Exists"
else
   echo "Group does not exist -- Invalid Group name"
fi

gpasswd

gpasswd group
gpasswd -a useraccount groupname
gpasswd -d useraccount groupname
gpasswd -R groupname
gpasswd -r groupname
gpasswd [-A useraccount,...] [-M useraccount ,...] groupname

gpasswd is used to administer the /etc/group file (and /etc/gshadow file if compiled with SHADOWGRP defined).
System administrator can use:
-A option to define group administrator(s)
-M option to define members and has all rights of group administrators and members.

Group administrator can use:
-a to add users
-d to delete users.

Administrators can use:
-r option to remove group password. When no password is set only group members can use newgrp to join the group.
-R disables access to the group through newgrp command.

gpasswd called by a group administrator with group name only prompts for the group password. If password is set the members can still newgrp without a password, non-members must supply the password.