?

Log in

No account? Create an account
dil's journal [entries|archive|friends|userinfo]
You never can tell with bees

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Как всегда, загадочные грабельки. Нынче в Линуксе [Sep. 5th, 2019|09:22 am]
You never can tell with bees
[Tags|, , , , ]

Почему-то в ноутбуке ping перестал работать:

$ ping 192.168.1.15
ping: socket: Operation not permitted

Хотя от root’а и просто через sudo вполне работал. И с другой машины в этой сети вполне работал из моего account’а, не только от root. И даже со смартфона, зайдя в его консоль через JuiceSSH, тоже вполне работало.

Погуглил, нашёл вот такую команду, и после её выполнения (от root’а), ping стал нормально работать и от меня:

# setcap cap_net_raw=ep /bin/ping

Оригинал этой записи в личном блоге.

(comment count unavailable | Комментировать в Dreamwidth)
LinkReply

Comments:
[User Picture]From: lj_frank_bot
2019-09-05 08:25 am (UTC)
Hello!
LiveJournal categorization system detected that your entry belongs to the category: IT.
If you think that this choice was wrong please reply this comment. Your feedback will help us improve system.
Frank,
LJ Team
(Reply) (Thread)
[User Picture]From: dmarck
2019-09-05 10:30 am (UTC)
ping'у нужен raw socket, это привилегированная операция. раньше бинарник был suid root, теперь по каким-то причинам не.
(Reply) (Thread)
[User Picture]From: dil
2019-09-05 07:16 pm (UTC)
Он у меня везде одинаковый. Там, где работал:
$ ls -l /bin/ping
-rwsr-xr-x 1 root root 36136 Apr 12  2011 /bin/ping


И там, где не работал, а сейчас работает, но свойства этого файла вовсе не поменялись:
$ ls -l /bin/ping
-rwxr-xr-x 1 root root 61240 Nov 10  2016 /bin/ping
(Reply) (Parent) (Thread)
[User Picture]From: alexkuklin
2019-09-05 08:10 pm (UTC)
ну как бы немного очевидно, что классическими unix-атрибутами оно нынче не ограничивается

n# getcap /bin/ping
/bin/ping = cap_net_raw+ep
(Reply) (Parent) (Thread)
[User Picture]From: dil
2019-09-07 04:36 pm (UTC)
Там, где не работал, getcap выдаёт такое же:
/bin/ping = cap_net_raw+ep


А где и раньше работал, там вовсе ничего не выдаёт:
# getcap /bin/ping
#

(Reply) (Parent) (Thread)
[User Picture]From: dmarck
2019-09-05 08:24 pm (UTC)
"s" у первого видишь? вот это оно в предыдущей модели. а в теперешней -- extended capabilities
(Reply) (Parent) (Thread)
[User Picture]From: dil
2019-09-07 04:31 pm (UTC)
Теперь вижу, но толком не понимаю, что это значит. Я там знаю только r, w, и x.
И раз он eXecutable для всех пользователей, то должен для всех работать от root'а, который owner.
(Reply) (Parent) (Thread)
[User Picture]From: dmarck
2019-09-07 04:39 pm (UTC)
s == suid, set effective UID to owner; s у группы -- sgeid, то же самое для effective GID. это более грубое средство выполнения привилегирочванных операцый, чем extended capabilities
(Reply) (Parent) (Thread)
[User Picture]From: dil
2019-09-07 08:33 pm (UTC)
В смысле, чтобы такой файл запускался не от самого пользователя, который его пытается запустить, а именно от root'а, который его owner?
(Reply) (Parent) (Thread)
[User Picture]From: dmarck
2019-09-07 08:54 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: dil
2019-09-11 02:52 pm (UTC)
Но где ping не работал, а после "setcap cap_net_raw=ep /bin/ping" теперь работает, s там и раньше не было, и сейчас нет, просто вполне обычные свойства: -rwxr-xr-x
(Reply) (Parent) (Thread)