Як я можу судо су і змінити каталог відразу після?


13

Я хотів би створити псевдонім, який робить щось подібне:

alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'

Тоді з мого командного рядка я входив із користувачем sudo, і я хотів би ввести псевдонім userYYYтак, щоб моя оболонка входила в систему userYYYі pwdє /a/path/that/only/userYYY/has/access.

Як я можу це зробити? Це userYYYдля запуску деяких процесів, і в його будинку повинно бути щось. Отже, я спробував змінити його $ HOME, використовуючи:

sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY 

І тоді з моєї оболонки з моїм файлом sudoer я зробив sudo su userYYY. Але це не спрацювало. Єдине, що працювало, sudo su -l userYYYYале це відкрило новий баш всередині моєї оригінальної оболонки ( -bash-4.1$ ....).

Підсумовуючи те, що я хочу просто уникнути необхідності писати 2 рядки в оболонці:

sudo su userYYY
cd /a/path/that/only/userYYY/has/access

Будь-які ідеї?

Відповіді:


10
alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'

здається, працює нормально, але не впевнений, як виправити цю помилку або якщо її проблема. користуючись ubuntu 14.04LTS, помітив, що виникла проблема з debian ...bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
sonjz

1
власне, користуючись ним деякий час, я помітив, що термінал вбивається досить часто за допомогою цього методу (відключайте близько 15-30 хв., регулярно мій термінал триває близько 6 годин перед відключенням)
sonjz

Щойно розкопавши це, така поведінка пояснюється виправленням безпеки: unix.stackexchange.com/questions/65843/…
sonjz

це допомогло мені відредагувати мій .bashrcфайл до sudoтого місця, cdде як два окремі рядки просто не працювали.
RozzA

2

Одним із варіантів буде редагування ~/.bashrcцільового користувача та додавання cdйого:

cd /a/path/that/only/userYYY/has/access

0

Коротка відповідь - не можна. sudo suПочинає нову оболонку , яка повинна вийти , перш ніж він потрапить в cdкоманду.


0

Для мене комбінація sudoта screenрозроблена:

sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'

Ця команда спочатку переходить на vagrantкористувача. Потім, як vagrantзмінюється каталог /vagrantі виконується npm install.


0

Я знаю, що це дещо інше, ніж оригінальне запитання, але ідея полягає в тому, щоб запустити команду як інший користувач без введення пароля, коли політика забороняє sudo su <user> -c.

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.