2012-07-21 57 views
2

我有一個在啓動時自動運行的嵌入式系統上運行的應用程序。由於某些功能涉及讀取和寫入串行端口,因此我需要軟件具有root權限。在我的桌面上,這是沒有問題的,因爲我可以運行程序sudo,這很好。在我的嵌入式設備上,我無法做到這一點,所以我期望的是有一些linux系統函數可以讓代碼不以root身份運行,但是可以擁有超級用戶權限來訪問串口。我認識到,從安全角度來看,這可能不是一個好主意,但由於它在嵌入式設備上,我別無選擇。是否有系統函數允許我的應用程序擁有root權限?

+0

你可以學習更多關於setuid可執行文件的信息... – 2012-07-21 07:00:34

回答

10

您是否考慮過更改串行端口設備節點的權限,以便您的應用程序可以訪問它?

E.g.允許每個應用程序訪問/dev/ttyS0串口:

chmod a+rw /dev/ttyS0 

爲了提供更精細的控制,您可以創建一個單獨的用戶羣和chgrp您的串口設備節點:

chgrp serial /dev/ttyS0 
chmod 0660 /dev/ttyS0 

之後,您所需要的只是確保用戶的應用程序運行在serial用戶組中。

或者你甚至可以使應用程序的用戶設備節點的唯一擁有者:

chown appuser /dev/ttyS0 
chmod 0600 /dev/ttyS0 

需要root權限只訪問一個設備節點是不是正確的方法...

+0

這似乎是一個更明智的方法。感謝您的回答。 – mathematician1975 2012-07-21 07:05:00

相關問題