我想限制每个用户对系统的使用。由于 Systemd 对 cgroups 有本机支持,我认为使用用户切片是可行的方法。
问题是:我不知道如何设置个人限制。我可以编辑 user.slice 单元文件以设置共同适用于所有用户切片的限制,但我没有看到对这些用户切片进行模板化的方法。
我可以通过创建一个 user-(uid).slice 单元文件来覆盖单个用户的这些设置,但我更愿意默认对所有用户应用限制。
是否可以设置默认限制?
编辑:经过一番探索后,我发现用户切片的单元文件是在 /run/systemd/system/ 中创建的。
[foo@bar Downloads]$ systemctl cat user-1000.slice
# /run/systemd/system/user-1000.slice
# Transient stub
# /run/systemd/system/user-1000.slice.d/50-After-systemd-logind\x2eservice.conf
[Unit]
After=systemd-logind.service
# /run/systemd/system/user-1000.slice.d/50-After-systemd-user-sessions\x2eservice.conf
[Unit]
After=systemd-user-sessions.service
# /run/systemd/system/user-1000.slice.d/50-Description.conf
[Unit]
Description=User Slice of foo
# /run/systemd/system/user-1000.slice.d/50-TasksMax.conf
[Slice]
TasksMax=infinity
Run Code Online (Sandbox Code Playgroud)
这些文件由 systemd 中的这段代码构建:https : //github.com/systemd/systemd/blob/401e33ed56f3cd3736bbab02ca6eb31aa592cf53/src/login/logind-dbus.c#L2928-L2998
这个文件的创建似乎被硬编码到 systemd 源代码中,并且不允许使用模板。
我们运行这对提供文件存储的 OpenSolaris 服务器。它们主动/被动运行,并通过每分钟左右的快照复制保持同步。最初,他们都运行 OpenIndiana,但由于 OI 的开发似乎停滞不前,我们决定切换到开发更积极的 OmniOS。
我们首先升级了备份服务器。一切都按计划进行,除了我看不到通过 SMB 从系统共享的 zfs 文件系统。
文件系统上启用 SMB 共享:
NAME PROPERTY VALUE SOURCE
zpool/data sharesmb abe=true,name=data,guestok=false local
Run Code Online (Sandbox Code Playgroud)
smb/server 服务上线,以及其依赖:
fmri svc:/network/smb/server:default
name smbd daemon
enabled true
state online
next_state none
state_time Mon Mar 7 14:31:29 2016
logfile /var/svc/log/network-smb-server:default.log
restarter svc:/system/svc/restarter:default
contract_id 16253
dependency require_any/error svc:/milestone/network (online)
dependency require_all/error svc:/system/filesystem/local (online)
dependency require_all/none svc:/system/idmap:default (online)
dependency require_all/none svc:/network/smb/client:default (online)
Run Code Online (Sandbox Code Playgroud)
Sharemgr 知道共享
default nfs=()
smb smb=()
* /var/smb/cvol
c$=/var/smb/cvol smb=(abe="false" guestok="false") "Default Share"
zfs smb=() nfs=() …Run Code Online (Sandbox Code Playgroud) 我有一台 CentOS 7 机器,我想在 sudo 期间身份验证失败时显示一条消息。pam_echo我尝试通过在 中添加一行来做到这一点/etc/pam.d/sudo。
为了进行测试,我创建了一个文件 ,/etc/security/foo其中包含字符串“bar”。
这是我的 sudo pam 堆栈/etc/pam.d/sudo:
auth include system-auth
auth optional pam_echo.so file=/etc/security/foo
account include system-auth
password include system-auth
session optional pam_keyinit.so revoke
session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)
由于某种原因,当我无法进行身份验证时,我看不到 pam_echo 的输出。
$ sudo ls
[sudo] password for steve:
Sorry, try again.
[sudo] password for steve:
Sorry, try again.
[sudo] password for steve:
sudo: 3 incorrect password attempts
Run Code Online (Sandbox Code Playgroud)
我用 pamtester 测试了 sudo pam 堆栈,输入错误密码后得到了预期的结果。
$ pamtester sudo steve …Run Code Online (Sandbox Code Playgroud)