簡體   English   中英

如何在Linux上更改tty組(使用buildroot構建)

[英]How to change tty group on Linux (build with buildroot)

我正在使用Buildroot為嵌入式設備構建Linux Kernel 3.14.28。

/dev/ ,所有ttys都是root:root而不是root:dialout就像標准Linux一樣。 因此,如果沒有以root身份登錄,則無法訪問任何ttyX。

如何將tty組永久更改為root:dialout 我嘗試使用chown命令更改它,但它在重新啟動時再次成為root:root

devtmpfs總是將權限設置為0600並使其達到udev (或其后的任何運行)來維護它們 它的來源證實沒有辦法明確地覆蓋它( tty設備驅動程序在某些情況mode無條件覆蓋mode )。

假設您正在使用Buildroot的默認busybox作為init ,有一種方法可以使用busyboxinittab的以下附加(除了必要的行(或者它們的替換)之外還必須存在這些行,這些行是隱含的)沒有inittab - 因為它們不再隱含,所以有)

::sysinit:<path_to_your_script>

腳本調用chownchmod循環。

但是,最好在現有的/etc/init.d/rcS (在默認情況下也由sysinit的BusyBox的init運行)中處理這個問題。

庫存buildroot的/etc/init.d/rcS可以看到,你需要做的就是創建一個腳本/etc/init.d/S<whatever>.sh <whatever> /etc/init.d/S<whatever>.sh (其中“what”將它放入所需的位置在/etc/init.d/S??*輸出中)使用您的命令:

for tty in /dev/tty*; do
    chown root:dialout "$tty"
    chmod ug+rw "$tty"   #do not touch other bits
done
unset tty

TL; DR :選擇mdev作為您的設備管理器,並使用tty組而不是dialout

內核的devtmpfs使用默認名稱,所有者和權限創建設備節點。 它還會在創建節點時發送一個uevent ,這允許uevent處理程序更改名稱,所有權或權限,或執行其他任何需要的操作。 以前這被稱為hotplug系統,但現在它更通用。

Buildroot提供了三個uevent處理程序之間的選擇: mdev ,它是busybox的一部分, eudev是一個獨立的udev fork,而udevsystemd init系統的一部分。 這些處理程序配置有規則文件,這些規則文件指定在出現特定類型的設備時如何處理。

根據您的具體需要, mdev是最佳選擇,因為它非常簡單,易於理解,不占用太多空間,默認配置就足夠了。 在Buildroot的menuconfig中,轉到系統配置/ dev管理,然后使用mdev選擇Dynamic 然后重建您的根文件系統。 它現在將填充mdev二進制文件( busybox一部分),啟動它的init腳本和/etc/mdev.conf的默認規則文件。 此默認文件包含:

tty[0-9]*       root:tty 660

這意味着tty設備將其組更改為tty並將其權限更改為分組讀寫。 所以你可以確保登錄的用戶屬於tty組,Bob是你的叔叔。

如果默認的mdev.conf文件不夠用(例如,如果你真的需要將組dialout ),那么你可以創建一個文件系統覆蓋,復制package/busybox/mdev.conf /etc/mdev.conf並根據需要進行修改。 可以在busybox源中找到有關mdev.conf格式的完整文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM