Я запускаю скрипт Python с user1, и в этом скрипте мне нужно переместить файл в папку, к которой у меня нет доступа. Папка принадлежит user2.
Что я хочу сделать, так это:
- перейти с user1 на user2 с помощью su - user2
- ввести пароль
- переместить файл
До сих пор я пробовал с Popen :
p = subprocess.Popen(["su", "-", "user2"])
p.communicate("user2_password")
p.communicate("mv path/to/file other/path/to/file")
Не работает, мне нужно вручную ввести пароль в оболочке.
И я также пробовал с pexpect :
child = pexpect.spawn('su - user2')
child.expect ('Password:')
child.sendline('user2_password')
child.sendline('mv path/to/file other/path/to/file')
Скрипт запускается, но ничего не происходит, и после запуска скрипта я все еще user1.
Любая идея, почему? Что бы это ни стоило, похоже, что это относится к su
, потому что, если я пишу скрипт с sudo
, он работает (я могу ввести пароль).
Спасибо за помощь !
su
иsudo
разные. Возможно, ваш парольroot
отличается от пароля sudo пользователя User2. - person Ludisposed   schedule 16.06.2017