Не уверенный в ARM, но возможно можно использовать правила udev сделать это автоматически. например, посмотрите это здесь:
http://robots.mobilerobots.com/wiki/Linux_udev_USB_Device_Permissions_Configuration
Я думаю, что вы указываете на это с страницы человека:
Когда владелец или группа исполняемого файла изменяются Непродусный пользователь S_ISUID и S_ISGID Mode Bits очищены.
Так почему они очищаются сейчас. Вы видите, что они очищаются только в случае исполняемого файла . Поскольку, когда установлен один из битов (SUID / SGID), предвосплатный пользователь может выполнить файл как новый владелец файла. Это было бы огромным нарушением безопасности.
Я думаю, что вы обманываете Man 2 Chown
: Вы не должны очищать S_isuid
и S_ISGID
, они будут автоматически Очищено, когда вы используете эту функцию в качестве безвисильной пользователя. Если ваша программа работает как root
. Поведение (на Linux) зависит от версии ядра.
Если вам нужны биты, просто повторно примените их (при условии, что учетная запись, которая пытается установить их, имеет привилегии для этого).
От страницы человека:
When the owner or group of an executable file are changed by an
unprivileged user the S_ISUID and S_ISGID mode bits are cleared.
POSIX does not specify whether this also should happen when root does
the chown(); the Linux behavior depends on the kernel version. In
case of a non-group-executable file (i.e., one for which the S_IXGRP
bit is not set) the S_ISGID bit indicates mandatory locking, and is
not cleared by a chown().