Linux

為單聲道應用程序提供提升權限的正確方法?

  • April 24, 2011

我有一個單聲道應用程序(在 Ubuntu 上),它跟踪 /var/log/messages 並接收 USB 插入,如果該設備位於某個埠上,則需要對其進行分區、格式化和掛載。顯然這需要root權限。我是 Linux 新手,我想知道“正確”的方法是什麼。

始終以 root 身份執行我的應用程序會更好嗎?還是讓我的應用程序權限更好(或可能)unmountpartedmkfsmount以及我需要的任何其他僅限 root 的程序?

背景:

一旦安裝,一些特定的客戶請求的文件將被載入到驅動器中。每個驅動器都是獨一無二的,因此無法進行複製,而且我每週將支持數百個驅動器,因此我需要盡可能實現自動化。我意識到這很危險,所以是的,我會在機器上發出警告,所有驅動器都將被格式化。我正在使用單聲道,因為它非常適合用 C# .net 編寫的大型應用程序。

實際上,您不必具有 root 權限即可執行此操作。如果事實如此,我強烈建議不要讓任何東西以 root 身份執行。這是我建議的最安全的方法。

  1. 編寫一個單行 shell 腳本,chown在設備節點上向您的單聲道應用程序正在執行的使用者執行操作,或者chmod打開足以讓您的應用程序修改設備的世界或組權限。
  2. 將腳本保存在/usr/local/binroot 擁有且使用者不可寫。
  3. 添加一個規則sudoers,允許使用者您的單聲道應用程序執行您剛剛創建的腳本。
  4. 在您的應用程序中檢測到設備後,首先執行該腳本,sudo以便您的使用者可以讀取/寫入設備。
  5. 以使用者身份在設備上執行所有操作!

注意:不要讓您的應用 sudo 訪問chmodchownfdisk任何其他此類管理工具,只有您編寫的受保護的單一用途腳本才能在您的一台設備上打開權限。

引用自:https://serverfault.com/questions/262809