Я скопировал свой/usr/bin/ping файл в другое местоположение (мой корневой каталог) только с типичным cp /bin/ping p
команда и затем это прекратило работать, потому что отсутствие полномочий. Точно:
Ping: icmp открывают сокет: Операция, не разрешенная.
Я знаю это sudo
решили бы мою проблему, но я не должен входить в систему как суперпользователь.
Я также знаю, что это - (вероятно), все об отсутствии некоторых полномочий или возможностей (на самом деле getcap
поскольку мой скопированный файл показывает, что пропускает возможности исходного ping), но к сожалению я не могу использовать setcap
без полномочий пользователя root.. или возможно я? Так или иначе?
Как я мог решить эту проблему и смочь использовать свою копию файла ping ./p
?
-rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping
s
в rws
средство ping
является setuid. При выполнении его это работает как его владелец, корень.
Это - то, как это имеет разрешение проверить с помощью ping-запросов. Вы можете sudo setcap cap_net_raw=ep ./ping
, но в конечном счете ICMP находится под "неструктурированными сокетами", таким образом, это не небольшое количество операций. Это позволило бы другому приложению имитировать сетевой трафик.
, Чтобы это было "безопасно" и ping, файл должен будет принадлежать корню для остановки приложения, отредактированного другими пользователями.
, Возможно setcap
однажды позволит Вам определить подпись хеша для исполняемого файла также.
Как замеченный Oli, ping
setuid---выполненный как корень при вызове.
Однако при копировании его с
cp -a /usr/bin/ping ./myping
, цель проиграет, setuid укусил---, Вы копируете файл, но можно только создать файлы с полномочиями собственного пользователя, и обычный пользователь не может создать setuid-корневой двоичный файл. Это будет огромная дыра в системе безопасности иначе (теперь, можно изменить копию ping
)!
, Если Вы хотите поддержать setuid, укусил, необходимо скопировать с sudo cp -a
. Никакой путь вокруг этого, я надеюсь.