Centos
找出其他使用者的限制
在 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 -a
CentOS 使用者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 伺服器上解決了一個問題。