Я не имею KDE удобный, но я ввел по абсолютному адресу в gnome-keyring
немного и похоже, что это выполняет это путем предоставления ssh клиенту альтернативу askpass
программа.
Проверьте значение $KWALLET_ASKPASS
от Вашего терминала в KDE. Если это установлено на что-то, пробуют это: export SSH_ASKPASS=$KWALLET_ASKPASS
.
Если не озираются через пакеты Вашего дистрибутива и видят, существует ли askpass
заменяющая программа, связанная с kwallet
. Если так, набор SSH_ASKPASS
к той программе.
Вы не можете: если Вы делаете /bin/ps
только исполняемый файл корнем, это будет только исполняемый файл корнем. Вы не можете только перенести сценарий вокруг этого для обхода проверки разрешения.
идентификатор пользователя набора
Если Вы хотите это, обычный пользователь звонит ps
как базируются, необходимо посмотреть на разрешение набора-uid. От setuid статьи о Википедии:
setuid и setgid (короткий для "идентификатора пользователя аппарата после выполнения" и "идентификатора группы набора после выполнения", соответственно) 1 являются флагами прав доступа Unix, которые позволяют пользователям выполнять исполняемый файл с полномочиями владельца или группы исполняемого файла. Они часто используются, чтобы позволить пользователям на компьютерной системе запускать программы со временно поднятыми полномочиями для выполнения определенной задачи. В то время как принятый идентификатор пользователя или идентификационные обеспеченные полномочия группы не всегда поднимаются, как минимум они конкретны.
См. также страницу справочника chmod
sudo
Если вместо этого Вы хотите, чтобы обычный пользователь выполнил что-то, что исполняемый файл корнем только использует sudo
. Это позволит Вам настраивать, какой пользователь сможет выполниться что.
-rwxr--r-- 1 root root ...... ps
Это говорит, что пользователь, который владеет им, читал, запишите и выполните разрешение и всех других просто чтение. Таким образом, никто, но корень не может выполниться ps
.
Сценарий, который Вы записали, является исполняемым файлом всеми, но наследовал полномочия от того, который вызывает его, таким образом, он также получает "разрешение, отклоненное" при попытке выполниться ps
, поскольку он - все еще обычный пользователь.
Мое предположение - то, что Вы хотите препятствовать тому, чтобы обычные пользователи выполнились ps
с определенными опциями (не, что это имеет смысл мне), но затем необходимо добавить setuid
бит или setgid
бит к Вашему сценарию (см. страницу справочника chmod
). Когда Вы делаете это, это получает полномочия не от invoker сценария, а от того, который владеет сценарием.
НО ОСТЕРЕГАЙТЕСЬ: установка suid
обдумал сценарии, по сути небезопасно. Можно сделать очень много с переменными среды, этим, например, сказать оболочке выполнять команды - и затем они выполняются как корень (здесь, пользовательская c-программа с липким битом является лучшим решением).
Править: Другое решение состояло бы в том, чтобы использовать sudo
. Здесь можно также настроить, какие параметры позволяются a sudo
программа редактора.
EDIT2: Почему я думаю, что это не хорошая идея запретить пользователя только от выполнения ps
? Насколько я знаю, вся информация ps
выводы могут быть также быть полученными через /proc
система - поэтому, если Вы не делаете ничего иного, которое это - просто безопасность (или независимо от того, что Вы хотите достигнуть) путаницей.
sudo
потребности, которые будут сделаны правильно. В частности, когда предоставление ограничило полномочия, удостоверьтесь это sudo
только позволяет несколько переменных среды в белом списке через.
– Gilles 'SO- stop being evil'
04.11.2011, 00:56
Обычно лучше использовать 'sudo'. Если у Вас нет sudo установленным и настроенным
su - someuser -c "/yourscript.sh"
Иногда Вы хотите предоставить пользовательский доступ к информации, которая является только доступными корневыми инструментами использования, не давая пользовательские полномочия пользователя root через sudo
. Например, предоставить информацию a smartctl -A
не обеспечивая доступ к полной функциональности smartctl
.
Рассмотрите, например, программу hddtemp
. Это читает температуру данного жесткого диска от данных S.M.A.R.T. диска и печатает его к stdout. При нормальной необходимости в полномочиях пользователя root сделать так это также обеспечивает режим демона, s.t. программа работал бы как корень, ожидал бы в фоновом режиме некорневых клиентских запросов и направил бы выходные данные им каждый раз, когда они подключают сокет. Этим способом Вы могли реализовать демона (запустился как корень), который работает ps
и перенаправляет его вывод каждый раз, когда клиент хочет.
Рассмотрите этот пример Python (возможно, должен быть, работал как корень):
import socket, subprocess
HOST = '127.0.0.1'
PORT = 50006
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))
s.listen(1)
while True:
conn,addr = s.accept()
pipe = subprocess.Popen(["/bin/ps"],stdout=subprocess.PIPE).stdout
for line in pipe:
conn.send(line)
conn.close()
можно затем поместить a netcat localhost 50006
в Вашем call_ps_via_root.sh
и Вы сделаны.
smartctl -A
только, настроить sudo
позволить ему работать smartctl -A
только.
– Gilles 'SO- stop being evil'
04.11.2011, 00:54