bash - Trouble logging in user using su and expect script -


i working on making website class log username , password, , takes page shows grades in class.

the website being run bash script, , hosted on machine users have username , password login.

i have script called calcgrade.sh calculate grades either user logged in, or user passed script argument.

so originally, going use command:

echo -e "$password\n" | sudo -sk -u $user ./website/calcgrade.sh 

to run calcgrade.sh user of website. however, found out sudo asks password of user currently logged in, not target user trying run command as.

so after reading, found better option use su expect script, can't work. here code expect script (currently username , password hard coded in testing):

#!/usr/bin/expect  log_user 0  spawn /bin/su myusername expect "password: " send "mypassword" spawn "./website/calcgrade.sh"  interact 

when run script, doesn't seem log in user su, goes on run calcgrade.sh account, rather user's.

do see wrong script? or can see better way want?

also, problem method calcgrade.sh supposed send output stderr, when run expect script, error messages sent website (the server works sending html website stdout). there way around this, or might better have expect script check su if username/password correct, , if so, run ./calcgrade.sh $user afterwards?

first of all, here's correct way want do:

  1. give web server user sudo permissions run ./website/calcgrade.sh user, without requiring password.
  2. have web server authenticate user see fit.
  3. have run sudo -u someuser ./website/calcgrade.sh, no password required.

now let's @ why approach didn't work:

it's commonly believed su switches user. not case. starts new shell running user.

this means can't spawn su otheruser, let finish, , afterwards spawn calcgrade.sh.

instead have run su otheruser, , send commands shell su starts:

#!/usr/bin/expect   log_user 0  spawn /bin/su someuser  expect "password: " send "somepassword\n"   # wait prompt , send command run expect "$" send "./website/calcgrade.sh\n" interact 

Comments

Popular posts from this blog

c++ - Delete matches in OpenCV (Keypoints and descriptors) -

java - Could not locate OpenAL library -

sorting - opencl Bitonic sort with 64 bits keys -