ulimit -n không thay đổi - giá trị giới hạn. không có hiệu lực


13

Tôi đang cố gắng tăng tối đa bộ mô tả tệp mở cho tất cả người dùng trên máy ubfox.

Câu hỏi này là một phần của một câu hỏi tiếp theo cho câu hỏi này.

mở mô tả tập tin giới hạn mở. Cài đặt không được đọc bởi ulimit ngay cả khi pam_limits.so được yêu cầu

ngoại trừ việc tôi đã thêm các mục "root" cần thiết trong giới hạn.

Dưới đây là các mục

*               soft    nofile           100000
*               hard    nofile           100000
root            soft    nofile           100000
root            hard    nofile           100000

Các dòng liên quan đến pam_limits.sođã không được nhận xét trong tất cả các tệp có liên quan trong /etc/pam.d/ và fs.file-maxđã được đặt chính xác trong /etc/sysctl.conf

Tuy nhiên, tôi vẫn thấy

abc@machine-2:/etc/pam.d$ ulimit -n
1024

sau khi khởi động lại.

Điều gì có thể là vấn đề?

Shell mặc định của tôi là / bin / sh và tôi không thể sử dụng chsh để thay đổi shell mặc định vì người dùng của tôi trên máy được xác thực thông qua một số sơ đồ xác thực phân tán.


strace -o loglimit su - abc và sau đó egrep "(giới hạn | mở)" loglimit, có thể cấu hình pam của bạn sai
c4f4t0r

@ c4f4t0r, tùy chọn - su chỉ gây ra thông tin đăng nhập mới khi đó là đối số cuối cùng. Tôi chỉ biết điều này bởi vì tôi chỉ đọc trang người đàn ông đó. Ngoài ra, như một chi tiết, một người dùng thông thường không thể tạo ra một nhị phân gốc suid.
etherfish

với quyền root, bạn cần sử dụng lệnh strace -o loglimit su - abc
c4f4t0r

xin lỗi vì spam nhưng tôi có loại vấn đề này unix.stackexchange.com/questions/200 310/ Đổi
vladeli

Câu trả lời:


5

Tôi đã có một vấn đề tương tự, nhưng chỉ với thông tin đăng nhập SSH. Đăng nhập cục bộ (thông qua bảng điều khiển) tôn trọng /etc/security/limits.conf.

Khi nó bật ra, khi bạn đặt:

UsePrivilegeSeparation yes

trong /etc/ssh/sshd_configtệp, sau đó sshd cho phép một đứa trẻ không có đặc quyền thiết lập env của tài khoản. Bởi vì đứa trẻ này không được ưu tiên, nên pam_limits.so thiết lập giới hạn trên không có hiệu lực.

Ngay khi tôi đặt

UsePrivilegeSeparation no

trong /etc/ssh/sshd_configvà bị trả lại dịch vụ SSH, sau đó tệp giới hạn. được tôn trọng với thông tin đăng nhập SSH.


2
Trong trường hợp của tôi, tôi đã thay đổi sshd-config thành UsePAM yes. (+1 để chỉ cho tôi đến sshd-config)
Randall Whitman

4

Tôi nghi ngờ ulimit đang được áp dụng bởi / etc / profile hoặc a ~ / .bashrc. Thực tế là hệ thống của bạn có một sự cố phức tạp, tôi sẽ xác nhận rằng một cái gì đó sẽ không ổn.

Tôi cũng xác nhận rằng không có tệp errant trong /etc/security/limits.d/ được phân tích cú pháp như được đề cập trong pam_limits (8).

Tôi muốn thêm tham số gỡ lỗi vào dòng pam_limits.conf yêu cầu phiên và sau đó xem /var/log/auth.log khi bạn đăng nhập.

Nếu giới hạn mềm của bạn là 1024, giới hạn cứng của bạn là gì?

su sẽ giúp bạn đăng nhập mới, mới bằng su bằng cách sử dụng đối số -l.

su -l -s / bin / bash

Chúc may mắn.


giới hạn cứng của tôi là 4096 tức làulimit -Hn
Nerrve

4

Trên máy chủ Redhat đăng nhập bằng root

/etc/security/limits.conf

user01  -       nofile  2048

lệnh strace đăng nhập với quyền root

strace -o loglimit su - user01

với loglimit vỏ khác

grep "limit" loglimit
open("/lib64/security/pam_limits.so", O_RDONLY) = 6
 ..........
 ..........
 open("/etc/security/limits.conf", O_RDONLY) = 3
 read(3, "# /etc/security/limits.conf\n#\n#E"..., 4096) = 1823
 open("/etc/security/limits.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
 setrlimit(RLIMIT_NOFILE, {rlim_cur=2*1024, rlim_max=2*1024}) = 0

Tôi theo cách này tôi biết rằng, pam_limits đã được tải và giới hạn. Đã đọc, nếu pam_limits của bạn đã được tải nhưng bạn vẫn thấy các giá trị khác bằng ulimit -n, hãy kiểm tra hồ sơ shell của bạn như @etherfish đã nói


3

Tôi đã có một vấn đề như thế này, đây là những gì tôi đã làm.

Lệnh strace sẽ in tất cả các tương tác mà quá trình đang thực hiện với các thư viện bên ngoài, vì vậy với nó, chúng ta có thể xem liệu cấu hình của chúng ta có được tải hay không.

Vì vậy, tôi làm, như đề xuất ở trên:

root:/etc/pam.d$ strace -o ~/loglimit su - glaudiston
glaudiston:~$ exit
logout
root:/etc/pam.d$ cat ~/loglimit | grep limits.conf

Trong vấn đề của tôi, nhật ký strace (strace -o log su - tên người dùng) không có bất kỳ trường hợp nào của văn bản giới hạn, do đó, tệp giới hạn.

Đầu tiên tôi đảm bảo pam_limits.so tìm /etc/security/limits.conf

root:/etc/pam.d$ strings /lib/security/pam_limits.so | grep limits.conf
/etc/security/limits.conf

Vì vậy, tôi đảm bảo rằng mô-đun pam_limits.so được tải trong hoạt động auth trong các tệp nằm ở /etc/pam.d ... ví dụ: trong /etc/pam.d/su, tôi đã thêm:

session   required    pam_limits.so

Bây giờ, tôi có thể tạo "su" cho người dùng của mình và các giới hạn sẽ được tải. Bạn có thể làm lại bước strace để làm cho nó chắc chắn.

Linux của tôi là một LFS, do đó, lỗi của tôi là sự vắng mặt của pam_limits.so trong các tập tin /etc/pam.d. Trong các bản phát hành khác, tôi không nghĩ là vấn đề chính xác này.

Nhưng hy vọng điều này sẽ giúp.


1

Trong trường hợp của tôi (Centos 6.10) cho thấy rằng sau khi giới hạn được đặt từ /etc/security/limits.conf sau này trong quá trình đăng nhập, nó đã được đặt lại từ /etc/security/limits.d/90-nproc.conf cho tất cả người dùng -root:

*          soft    nproc     1024
root       soft    nproc     unlimited
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.