Centos

找出其他使用者的限制

  • December 4, 2015

在 CentOS 6.4 / 64 位 - 如何找到使用者“nobody”的限制?

因為我不能只是su - nobody打電話ulimit -a

# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)

# su - nobody
This account is currently not available.

更新:

我在問:如何呼叫ulimit -aCentOS 使用者nobody,以便我可以調整/etc/security/limits.conf該使用者的最大打開文件數。

更多細節:

我有一個 perl 腳本(一個基於非分叉 TCP-sockets 的紙牌遊戲守護程序),它正在由init(我為它創建了一個文件/etc/init/my_card_game.conf:)啟動,但隨後放棄了超級使用者權限並執行為nobody

sub drop_privs {
       my ($uid, $gid) = (getpwnam('nobody'))[2, 3];
       die "User nobody not found\n" unless $uid && $gid;

       umask(0);
       chdir('/tmp') or die "Can not chdir to /tmp: $!\n";
       #chroot('/tmp') or die "Can not chroot to /tmp: $!\n";

       # try to set the real, effective and save uid
       setgid($gid) or die "Can not set gid to $gid: $!\n";
       setuid($uid) or die "Can not set uid to $uid: $!\n";
       # try to regain privileges - this should fail
       die "Not able to drop privileges\n" if setuid(0) || setgid(0);
}

我想確保它有足夠大的最大數量nofiles- 以便它可以為所有連接的客戶端提供服務。

由於需要特權來提高硬資源限制,因此必須在放棄特權之前提高限制。您可以在腳本中添加程式碼來執行此操作。但最簡單的方法是製作一個 shell 腳本來啟動您的 perl 腳本。shell 腳本可以使用ulimit,因為它仍然具有特權。(使用者與此無關。資源限制是程序的屬性。)

ulimit 手冊頁中的 -u 標誌:

-u 單個使用者可用的最大程序數

在 RedHat / CentOS 中,該文件/etc/security/limits.conf描述了每個使用者的限制。因此,如果您的特定使用者(例如您的 apache“nobody”使用者)的文件描述符用完了,您可以在該文件的末尾添加一行(預設情況下它是空的)。將此從 4096 增加到 32768 為我們在 ColdFusion 10 / apache 2.2 / RedHat 伺服器上解決了一個問題。

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