Запуск pacman без рута

vadik
Если пакет у вас лежит в основной системе, то покажите пожалуйста выхлоп:
ls -la /usr/bin/guake
спасибо.
$ sudo chmod +s /usr/bin/pacman
$ \pacman -S guake
$ \pacman -Qlq guake | grep -x /usr/bin/guake
/usr/bin/guake
$ la /usr/bin/guake
-rwxr-xr-x 1 root root 54682 окт 16  2012 /usr/bin/guake
(на всякий случай, для тех кто не в курсе, бэкслеш - чтобы алиас не запускался (у меня стоит sudo pacman для пользователя))
но не запускается правда =) Подозреваю, что из за невыполненного gconfpkg, который есть в install.
add
проверил, так и есть.
PGP 0x31361F01
arcanisrepo
arcanis, я уже устал ходить вокруг да около. Можно сколько угодно менять биты, права запуска, исходный код пакмана и прочее. Но если у пользователя нет прав на запись в какую-то директорию, то и пляски с пакманом не помогут. Ну не сможет пакман распаковать бинарник из архива - в /usr/bin. У простого пользователя (не root и не входит в группу) - нет прав на запись в данный каталог!
Уберите алиас, перелогиньтесь и проверьте. У вас, по видимому, алиас срабатывает. А пароль не запрашивает, потому, что перед этим выполнялась команда с sudo (или в судоерс настроено).
Может-не может, но ведь делает! Настроено через конфиг шелла (zsh). И точно не алиас, т.к. у меня стоит подсветка синтаксиса, он алиасы и команды разным цветом окрашивает. Но раз вы настаиваете =)
$ which pacman
pacman: aliased to sudo pacman
$ \pacman -S test
ошибка: Вы не можете выполнить эту операцию, не являясь суперпользователем (root).
$ sudo chmod +s /usr/bin/pacman
$ \pacman -S test
ошибка: цель не найдена: test
$ bash
$ alias
alias ls='ls --color=auto'
$ ls -la `which pacman`
-rwsr-sr-x 1 root root 110464 июн 18 08:01 /usr/bin/pacman
$ pacman -S guake
$ pacman -Qlq guake | grep -x /usr/bin/guake
/usr/bin/guake
$ ls -la /usr/bin/guake
-rwxr-xr-x 1 root root 54682 окт 16  2012 /usr/bin/guake
$ ls -lad /usr/bin
drwxr-xr-x 4 root root 135168 окт  2 22:46 /usr/bin
$ ls -lad /usr
drwxr-xr-x 12 root root 4096 сен 28 06:10 /usr
$ ls -lad /
drwxr-xr-x 19 root root 4096 сен 28 05:38 /
$ groups
lp ftp log tor network video audio optical storage scanner users vboxusers bumblebee cdemu plugdev i2p
(guake старательно удаляю после каждого теста - ибо мне не нужен - и чищу кэш)
Даже если я укажу ему четко /usr/bin/pacman результат не изменится
Еще так для убедительности grep -v "^#\|^$" /etc/sudoers
PGP 0x31361F01
arcanisrepo
Можно сколько угодно менять биты, права запуска, исходный код пакмана и прочее. Но если у пользователя нет прав на запись в какую-то директорию, то и пляски с пакманом не помогут.
Извините, что вмешиваюсь в ваш спор, но я же выше писал: пакман с установленным suid битом может писать куда угодно, ибо его euid=0. Поэтому он успешно распаковывает все пакеты. Но в то-же время, чтобы завершить установку пакману нужно выполнить установочный скрипт, и для этого запустить bash. В этом месте начинаются проблемы - т.к. баш сбрасывает euid в uid и соответственно постинсал не отрабатывает из-за недостатка прав. Пакман эту ошибку никак не обрабатывает, и файлы которые он распаковал остаются..
Собственно виноват баш и неопределенное поведении пакмана в этой ситуации. По хорошему пакману бы ставить uid в euid перед порождением детишки, если разработчики хотят разрешить запускать его с установленным suid атрибутом или вываливаться с ошибкой, стерев все предварительно распакованное - если автор не хочет чтобы пакман работал с suid битом. В конце концов можно проверять uid а не euid в самом начале... а так, имеем что имеем - ситуация не была предусмотрена и поведение не определено... определить поведение пакмана в этой ситуацией можно извинением/добавлением одной строчки в исходный код.. но.. может им написать?
Мне вполне достаточно остановиться на make и запускать pacman из самой папки с исходниками, свои логи он согласно конфиг файлу итак выведит в нужные мне каталоги а прова на них я точно назначаю.
Тут еще одна маленькая трудность может возникнуть. Наткнулся в другой ветке. Если вы ставите пакет, указывая пакману новый корень, командой
pacman -r /<new_root> -S packege
пакман делает системный вызов chroot()... а man 2 chroot говорит, в частности
Only a privileged process (Linux: one with the CAP_SYS_CHROOT capability) may call chroot().
Так сказать, информация к размышлению... сложную вы задачку придумали. Может поможет man 7 capabilities и setcap.. но это если у вас есть рутовый доступ к системе.
Оого! Уже три страницы, и собственно непонятно о чём спор, и зачем так извращатся над бедным пакмэном? ;)

Зачем нужен pacman без пароля? То ли им так часто приходится пользоваться? У меня для периодической синхронизации кроном запускается pacman -Syy от имени root, и то это нужно для работы индикатора доступных обновлений на раб. столе. А так, для апдейта раз в день не влом и пароль ввести, имхо.

P. S.: Подозреваю, что это нужно для автоматизации каких-то действий с использованием pacman )
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.org
Затупил. naszar, arcanis - спасибо.
 
Зарегистрироваться или войдите чтобы оставить сообщение.