diff --git a/hdd/adduser.sh b/hdd/adduser.sh index 023f75459bc1c5d33d56fd20ef3f55afa6a43a58..b5abdbd44d2d404ad310be2578e05273e734de6d 100755 --- a/hdd/adduser.sh +++ b/hdd/adduser.sh @@ -55,59 +55,77 @@ shadow=$3 globalFlag=$4 username=$( echo $passwd | cut -d':' -f1 ) - uID=$( echo $passwd | cut -d':' -f3 ) globalID=$( echo $uID | grep -e "^3....$" ) localID=$( echo $uID | grep -e "^2....$" -e "^1....$" ) +groupname=$( echo $group | cut -d':' -f1 ) +gID=$( echo $group | cut -d':' -f3 ) +globalGID=$( echo $gID | grep -e "^3....$" ) +localGID=$( echo $gID | grep -e "^2....$" -e "^1....$" ) + #globalUser -#if not(globalFlag) && globalID -if [ "$globalFlag" != "global" ] && [ -n "$globalID" ]; then +#if not(globalFlag) && ( globalID || globalGID ) +if [ "$globalFlag" != "global" ] && ( [ -n "$globalID" ] || [ -n "$globalGID" ] ); then exit 21 fi -#if globalFlag && not(globalID) -if [ "$globalFlag" = "global" ] && [ -z "$globalID" ]; then +#if globalFlag && ( not(globalID) || not(globalGID) ) +if [ "$globalFlag" = "global" ] && ( [ -z "$globalID" ] || [ -z "$globalGID" ] ); then exit 24 fi -#if globalFlag && globalID -if [ "$globalFlag" = "global" ] && [ -n "$globalID" ]; then +#if globalFlag && globalID && globalGID +if [ "$globalFlag" = "global" ] && [ -n "$globalID" ] && [ -n "$globalGID" ]; then #add user global echo $0": Usuário global adicionado corretamente" exit 0 fi -#Uma vez que não possui id global, se nao possuir id local esta fora do range -if [ -z "$localID" ]; then +#Uma vez que não possui uid ou gid global, se nao possuir id local esta fora do range +if [ -z "$localID" ] || [ -z "$localGID" ]; then echo $0": Usuario fora do range do local accounts" exit 32 fi #See if exist the username that we are tryng to add with non local ID checkNotLocalName=$( cat /etc/passwd | cut -d':' -f1,3 | grep -v -e ":2....$" -e ":1....$" | grep -e "^$username:" ) - if [ -z "$checkNotLocalName" ]; then echo $0": Usuario não local com mesmo username" exit 22 fi +#See if exists the group name that we are trying to add with non local GID +checkNotLocalGroupName=$( cat /etc/group | grep -v -e ":2....:" -e ":1....:" | grep -e "^$groupname:" ) +if [ -z "$checkNotLocalGroupName" ]; then + echo $0": Usuario não local com mesmo group name" + exit 22 +fi checkName=$( cat /etc/passwd | cut -d':' -f1-3 | grep -e "^$username:" ) - if [ -z "$checkName" ]; then #remove "$checkName" echo $0": encontrei outro usuario local com o mesmo nome, devo remove-lo" fi checkID=$( cat /etc/passwd | cut -d':' -f1-3 | grep -e ":$uID$" ) - if [ -z "$checkID" ]; then #remove "$checkID" echo $0": encontrei outro usuario local com o mesmo id, devo remove-lo" fi -#adicionar verificacao de nome e id para group? +checkGName=$( cat /etc/group | grep -e "^$groupname:" ) +if [ -z "$checkGName" ]; then + #remove "$checkGName" + echo $0": encontrei outro usuario local com o mesmo nome de grupo, devo remove-lo" +fi + +checkGID=$( cat /etc/group | grep -e ":$gID:" ) +if [ -z "$checkGID" ]; then + #remove "$checkGID" + echo $0": encontrei outro usuario local com o mesmo id de grupo, devo remove-lo" +fi + #add local user echo $0": Usuario local adicionado corretamente"