На CentOS 6.4 / 64 bit - как найти пределы пользователя «никто»?
Потому что я не могу просто 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-сокеты на основе карточная игра демон), который запускается 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
- чтобы он мог обслуживать всех подключенных клиентов.
Пределы должны быть увеличены до того, как привилегии будут отменены, поскольку привилегии необходимы для повышения жестких ограничений ресурсов. Для этого вы можете добавить код в свой скрипт. Но самый простой способ - создать сценарий оболочки, запускающий ваш сценарий Perl. Сценарий оболочки может использовать ulimit
поскольку у него все еще будут привилегии. (Пользователи не имеют к этому никакого отношения. Ограничения ресурсов являются атрибутами процессов.)
Флаг -u для ulimit со страницы руководства ulimit:
-u Максимальное количество процессов, доступных одному пользователю
В RedHat / CentOS файл /etc/security/limits.conf
описывает ограничения для каждого пользователя. Поэтому, если у вас заканчиваются файловые дескрипторы для определенного пользователя (например, вашего пользователя apache «none»), вы можете добавить строку в конец этого файла (по умолчанию он пуст). Увеличение этого числа с 4096 до 32768 решило проблему для нас на сервере ColdFusion 10 / apache 2.2 / RedHat.