Linux switch user and execute command immediately
Clash Royale CLAN TAG#URR8PPP
up vote
4
down vote
favorite
I have a scenario where I have to switch to the different user and after that, I need to execute the some Linux command.
my command is something like this
( echo myPassword | sudo -S su hduser ) && bash /usr/local/hadoop/sbin/start-dfs.sh
but with this command, I switch to the user and the next command got triggered on the previous user.
Is there any I can accomplish this using shell script
shell-script ubuntu
add a comment |Â
up vote
4
down vote
favorite
I have a scenario where I have to switch to the different user and after that, I need to execute the some Linux command.
my command is something like this
( echo myPassword | sudo -S su hduser ) && bash /usr/local/hadoop/sbin/start-dfs.sh
but with this command, I switch to the user and the next command got triggered on the previous user.
Is there any I can accomplish this using shell script
shell-script ubuntu
6
Be aware that this command saves your password in cleartext in your bash history file.
â spectras
Sep 26 '17 at 8:47
add a comment |Â
up vote
4
down vote
favorite
up vote
4
down vote
favorite
I have a scenario where I have to switch to the different user and after that, I need to execute the some Linux command.
my command is something like this
( echo myPassword | sudo -S su hduser ) && bash /usr/local/hadoop/sbin/start-dfs.sh
but with this command, I switch to the user and the next command got triggered on the previous user.
Is there any I can accomplish this using shell script
shell-script ubuntu
I have a scenario where I have to switch to the different user and after that, I need to execute the some Linux command.
my command is something like this
( echo myPassword | sudo -S su hduser ) && bash /usr/local/hadoop/sbin/start-dfs.sh
but with this command, I switch to the user and the next command got triggered on the previous user.
Is there any I can accomplish this using shell script
shell-script ubuntu
shell-script ubuntu
asked Sep 26 '17 at 5:23
Akash Sethi
130116
130116
6
Be aware that this command saves your password in cleartext in your bash history file.
â spectras
Sep 26 '17 at 8:47
add a comment |Â
6
Be aware that this command saves your password in cleartext in your bash history file.
â spectras
Sep 26 '17 at 8:47
6
6
Be aware that this command saves your password in cleartext in your bash history file.
â spectras
Sep 26 '17 at 8:47
Be aware that this command saves your password in cleartext in your bash history file.
â spectras
Sep 26 '17 at 8:47
add a comment |Â
3 Answers
3
active
oldest
votes
up vote
10
down vote
accepted
Try.
sudo -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
or if you want pass with password.
echo TARGET_USER_PASS | sudo -S -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
see man sudo:
-H
The -H (HOME) option requests that the security policy set the HOME
environment variable to the home directory of the target user (root by
default) as specified by the password database. Depending on the
policy, this may be the default behavior.
-u user
The -u (user) option causes sudo to run the specified command as a
user other than root. To specify a uid instead of a user name, use #uid.
When running commands as a uid, many shells require that the '#' be
escaped with a backslash (''). Security policies may restrict uids to
those listed in the password database. The sudoers policy allows uids
that are not in the password database as long as the targetpw option is
not set. Other security policies may not support this.
3
Why... bash -c 'bash file.sh'
? Couldn't you write it as... bash file.sh
?
â user000001
Sep 26 '17 at 10:53
add a comment |Â
up vote
2
down vote
With su user -c "sh /path/command.sh"
you can run a command as user.
I tested with this command:
echo myPassword | sudo -S su - foobar -c "/usr/bin/watch -n 1 cat /etc/resolv.conf"
After that the watch -n
was running as foobar.
So I think your command should work like that:
echo myPassword | sudo -S su - hduser -c "bash /usr/local/hadoop/sbin/start-dfs.sh"
Your answer is also correct Thanks
â Akash Sethi
Sep 26 '17 at 8:17
add a comment |Â
up vote
1
down vote
You could try this one:
pkexec - Execute a command as another user
pkexec [--user username] PROGRAM [ARGUMENTS...]
tested on my site. But if no home dir exists, then there is an errorError changing to home directory /home/foobar: No such file or directory
. I created it, but perhaps there is a better solution without home folder
â chloesoe
Sep 26 '17 at 10:11
add a comment |Â
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
10
down vote
accepted
Try.
sudo -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
or if you want pass with password.
echo TARGET_USER_PASS | sudo -S -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
see man sudo:
-H
The -H (HOME) option requests that the security policy set the HOME
environment variable to the home directory of the target user (root by
default) as specified by the password database. Depending on the
policy, this may be the default behavior.
-u user
The -u (user) option causes sudo to run the specified command as a
user other than root. To specify a uid instead of a user name, use #uid.
When running commands as a uid, many shells require that the '#' be
escaped with a backslash (''). Security policies may restrict uids to
those listed in the password database. The sudoers policy allows uids
that are not in the password database as long as the targetpw option is
not set. Other security policies may not support this.
3
Why... bash -c 'bash file.sh'
? Couldn't you write it as... bash file.sh
?
â user000001
Sep 26 '17 at 10:53
add a comment |Â
up vote
10
down vote
accepted
Try.
sudo -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
or if you want pass with password.
echo TARGET_USER_PASS | sudo -S -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
see man sudo:
-H
The -H (HOME) option requests that the security policy set the HOME
environment variable to the home directory of the target user (root by
default) as specified by the password database. Depending on the
policy, this may be the default behavior.
-u user
The -u (user) option causes sudo to run the specified command as a
user other than root. To specify a uid instead of a user name, use #uid.
When running commands as a uid, many shells require that the '#' be
escaped with a backslash (''). Security policies may restrict uids to
those listed in the password database. The sudoers policy allows uids
that are not in the password database as long as the targetpw option is
not set. Other security policies may not support this.
3
Why... bash -c 'bash file.sh'
? Couldn't you write it as... bash file.sh
?
â user000001
Sep 26 '17 at 10:53
add a comment |Â
up vote
10
down vote
accepted
up vote
10
down vote
accepted
Try.
sudo -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
or if you want pass with password.
echo TARGET_USER_PASS | sudo -S -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
see man sudo:
-H
The -H (HOME) option requests that the security policy set the HOME
environment variable to the home directory of the target user (root by
default) as specified by the password database. Depending on the
policy, this may be the default behavior.
-u user
The -u (user) option causes sudo to run the specified command as a
user other than root. To specify a uid instead of a user name, use #uid.
When running commands as a uid, many shells require that the '#' be
escaped with a backslash (''). Security policies may restrict uids to
those listed in the password database. The sudoers policy allows uids
that are not in the password database as long as the targetpw option is
not set. Other security policies may not support this.
Try.
sudo -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
or if you want pass with password.
echo TARGET_USER_PASS | sudo -S -H -u TARGET_USER bash -c 'bash /usr/local/hadoop/sbin/start-dfs.sh'
see man sudo:
-H
The -H (HOME) option requests that the security policy set the HOME
environment variable to the home directory of the target user (root by
default) as specified by the password database. Depending on the
policy, this may be the default behavior.
-u user
The -u (user) option causes sudo to run the specified command as a
user other than root. To specify a uid instead of a user name, use #uid.
When running commands as a uid, many shells require that the '#' be
escaped with a backslash (''). Security policies may restrict uids to
those listed in the password database. The sudoers policy allows uids
that are not in the password database as long as the targetpw option is
not set. Other security policies may not support this.
edited Sep 26 '17 at 10:34
terdonâ¦
123k28232404
123k28232404
answered Sep 26 '17 at 6:38
ñÃÂsýù÷
15.7k92563
15.7k92563
3
Why... bash -c 'bash file.sh'
? Couldn't you write it as... bash file.sh
?
â user000001
Sep 26 '17 at 10:53
add a comment |Â
3
Why... bash -c 'bash file.sh'
? Couldn't you write it as... bash file.sh
?
â user000001
Sep 26 '17 at 10:53
3
3
Why
... bash -c 'bash file.sh'
? Couldn't you write it as ... bash file.sh
?â user000001
Sep 26 '17 at 10:53
Why
... bash -c 'bash file.sh'
? Couldn't you write it as ... bash file.sh
?â user000001
Sep 26 '17 at 10:53
add a comment |Â
up vote
2
down vote
With su user -c "sh /path/command.sh"
you can run a command as user.
I tested with this command:
echo myPassword | sudo -S su - foobar -c "/usr/bin/watch -n 1 cat /etc/resolv.conf"
After that the watch -n
was running as foobar.
So I think your command should work like that:
echo myPassword | sudo -S su - hduser -c "bash /usr/local/hadoop/sbin/start-dfs.sh"
Your answer is also correct Thanks
â Akash Sethi
Sep 26 '17 at 8:17
add a comment |Â
up vote
2
down vote
With su user -c "sh /path/command.sh"
you can run a command as user.
I tested with this command:
echo myPassword | sudo -S su - foobar -c "/usr/bin/watch -n 1 cat /etc/resolv.conf"
After that the watch -n
was running as foobar.
So I think your command should work like that:
echo myPassword | sudo -S su - hduser -c "bash /usr/local/hadoop/sbin/start-dfs.sh"
Your answer is also correct Thanks
â Akash Sethi
Sep 26 '17 at 8:17
add a comment |Â
up vote
2
down vote
up vote
2
down vote
With su user -c "sh /path/command.sh"
you can run a command as user.
I tested with this command:
echo myPassword | sudo -S su - foobar -c "/usr/bin/watch -n 1 cat /etc/resolv.conf"
After that the watch -n
was running as foobar.
So I think your command should work like that:
echo myPassword | sudo -S su - hduser -c "bash /usr/local/hadoop/sbin/start-dfs.sh"
With su user -c "sh /path/command.sh"
you can run a command as user.
I tested with this command:
echo myPassword | sudo -S su - foobar -c "/usr/bin/watch -n 1 cat /etc/resolv.conf"
After that the watch -n
was running as foobar.
So I think your command should work like that:
echo myPassword | sudo -S su - hduser -c "bash /usr/local/hadoop/sbin/start-dfs.sh"
answered Sep 26 '17 at 6:52
chloesoe
1836
1836
Your answer is also correct Thanks
â Akash Sethi
Sep 26 '17 at 8:17
add a comment |Â
Your answer is also correct Thanks
â Akash Sethi
Sep 26 '17 at 8:17
Your answer is also correct Thanks
â Akash Sethi
Sep 26 '17 at 8:17
Your answer is also correct Thanks
â Akash Sethi
Sep 26 '17 at 8:17
add a comment |Â
up vote
1
down vote
You could try this one:
pkexec - Execute a command as another user
pkexec [--user username] PROGRAM [ARGUMENTS...]
tested on my site. But if no home dir exists, then there is an errorError changing to home directory /home/foobar: No such file or directory
. I created it, but perhaps there is a better solution without home folder
â chloesoe
Sep 26 '17 at 10:11
add a comment |Â
up vote
1
down vote
You could try this one:
pkexec - Execute a command as another user
pkexec [--user username] PROGRAM [ARGUMENTS...]
tested on my site. But if no home dir exists, then there is an errorError changing to home directory /home/foobar: No such file or directory
. I created it, but perhaps there is a better solution without home folder
â chloesoe
Sep 26 '17 at 10:11
add a comment |Â
up vote
1
down vote
up vote
1
down vote
You could try this one:
pkexec - Execute a command as another user
pkexec [--user username] PROGRAM [ARGUMENTS...]
You could try this one:
pkexec - Execute a command as another user
pkexec [--user username] PROGRAM [ARGUMENTS...]
answered Sep 26 '17 at 8:26
Buyduck
111
111
tested on my site. But if no home dir exists, then there is an errorError changing to home directory /home/foobar: No such file or directory
. I created it, but perhaps there is a better solution without home folder
â chloesoe
Sep 26 '17 at 10:11
add a comment |Â
tested on my site. But if no home dir exists, then there is an errorError changing to home directory /home/foobar: No such file or directory
. I created it, but perhaps there is a better solution without home folder
â chloesoe
Sep 26 '17 at 10:11
tested on my site. But if no home dir exists, then there is an error
Error changing to home directory /home/foobar: No such file or directory
. I created it, but perhaps there is a better solution without home folderâ chloesoe
Sep 26 '17 at 10:11
tested on my site. But if no home dir exists, then there is an error
Error changing to home directory /home/foobar: No such file or directory
. I created it, but perhaps there is a better solution without home folderâ chloesoe
Sep 26 '17 at 10:11
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f394461%2flinux-switch-user-and-execute-command-immediately%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
6
Be aware that this command saves your password in cleartext in your bash history file.
â spectras
Sep 26 '17 at 8:47