Hi All, We are facing an issue with exec sudo command which is resulting in an infinite loop. We have one script in which we are checking if $USER is not equal to root then execute the same script with exec sudo so that it will run with root. Code snippet: script1:
if [[ "$USER" != "root" ]]; then exec sudo $0 $@ fi If we run the script with some another user say root1 using below "sudo -u root1 script1" script1 will run in infinite loop. In CentOS 7.4 when exec sudo command runs , the value of $USER remains same i.e root1 and again it enters and if block and execute the scipt1 and so on .. While in case of Centos 7.3 after running exec sudo command value of $USER gets updated to root and it works fine
On 11/04/18 07:31, Veetil, Vyshnav wrote:
Hi All, We are facing an issue with exec sudo command which is resulting in an infinite loop. We have one script in which we are checking if $USER is not equal to root then execute the same script with exec sudo so that it will run with root. Code snippet: script1:
if [[ "$USER" != "root" ]]; then exec sudo $0 $@ fi If we run the script with some another user say root1 using below "sudo -u root1 script1" script1 will run in infinite loop. In CentOS 7.4 when exec sudo command runs , the value of $USER remains same i.e root1 and again it enters and if block and execute the scipt1 and so on .. While in case of Centos 7.3 after running exec sudo command value of $USER gets updated to root and it works fine
Don't check $USER, use the output from `id -u`
Trevor
On Wed, Apr 11, 2018 at 2:31 AM, Veetil, Vyshnav Vyshnav.Veetil@harman.com wrote:
Hi All, We are facing an issue with exec sudo command which is resulting in an infinite loop. We have one script in which we are checking if $USER is not equal to root then execute the same script with exec sudo so that it will run with root. Code snippet: script1:
if [[ "$USER" != "root" ]]; then exec sudo $0 $@ fi If we run the script with some another user say root1 using below "sudo -u root1 script1" script1 will run in infinite loop. In CentOS 7.4 when exec sudo command runs , the value of $USER remains same i.e root1 and again it enters and if block and execute the scipt1 and so on .. While in case of Centos 7.3 after running exec sudo command value of $USER gets updated to root and it works fine
The man page for sudo says you can use "sudo -H" to set the home directory to that of the target user, and "sudo -i" to get closer to their full login settings. But relying on USER.... can be erratic. Definitely use "id -u" to report the numeric uid, And, by the way? Make sure to terminate loops like that, to avoid getting into an infinite loop of shell commands calling shell commands and running your system out of RAM or process ids.