Як вийти з суперкористувача з сценарію середини оболонки?


2

У мене є сценарій оболонки, в якому більшість команд потрібно запустити під sesuкористувачем, а потім мені потрібно виконати деякі команди як поточний користувач. Чи можете ви мені допомогти в цьому?

Відповіді:


1

Якщо ви не хочете кожен раз вказувати пароль, додайте sesuдо sudoersгрупи і виконайте потрібну команду таким чином:

sudo su -c "command string"

Цей спосіб command stringпрацює як суперпользователь (root тощо).


Змініть файл судорів. У деяких операційних системах існує група «судерів» і має деякі права. Ви можете дозволити користувачам виконувати лише певні команди. Зовсім іншим підходом може бути використання ключа SSH, який виконує лише певні команди. Ці підходи можна комбінувати. (Тоді також використовуйте відповідь MariusMatutiae за необхідності.)
TOOGAM

1

Команда

    exit

закриває поточну оболонку. Якщо ви працювали з оболонкою, як користувач X , а потім переходите на користувача Y , вихід закриває оболонку, в якій ви були Y, і повертає вас до X


0

Ви можете використовувати suдля переходу на іншого користувача та -cопцію для виконання команди, наприклад

 su anotherUser -c "ls /"

Перевірте, чи є у вас, sudoі подумайте, чи можете ви використовувати його у вашому випадку. Наведений вище зразок запитає пароль іншого Користувача, і це може дратувати.


0

Я нещодавно опинився в подібній ситуації. Ось що я зробив, щоб негайно перейти на рівень суперпользователя, коли викликається сценарій, а згодом виконувати завдання звичайного користувача. Я думаю, що це може допомогти вам знайти спосіб досягти бажаного рішення:

#!/bin/bash

# generic_sudo.sh
# Tool that demonstrates in-then-out of sudo
# This demo is pointless if called with 'sudo generic_sudo.sh'

# Need root priviledges for some superuser work
if (( EUID != 0 )); then # If the user is not "root":
# In general one should use ((..)) for testing numbers and integer variables, and [[..]] for testing strings and files.
    sudo $0                         # Relaunch it as "root".
    EXITCODE=$?
    printf "su mode OFF.\n"         # If we got here, we left superuser mode
    printf "EUID is: %d\n" $EUID
    printf "Exit code %d\n" $EXITCODE
    exit $EXITCODE                  # Once it finishes, exit gracefully.
else
  printf "su mode ON.\n"
fi                              # End if.

printf "EUID is: %d\n" $EUID

# Some superuser work

printf "Some superuser work was done.\n"
exit 0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.