我一直在为一个非盈利的无线电天文台设置 Linux 桌面。对我来说,这是我第一次不得不考虑“部署”几台相同的机器、集中登录、主目录等。我很快就明白,也许与直觉相反,“一切都是文本”的哲学并不一定使这成为一项容易的任务,我想知道经验丰富的管理员对此做了什么。
就我而言,我在每台机器上都安装了 Ubuntu 10.04 LTS。安装后,我运行了一个自定义脚本,用于更改配置文件、删除和安装软件并从服务器复制一些文件,例如背景图像或浏览器书签。但是,我认为我的问题与发行版无关。
我主要遇到两个问题:首先,跨发行版和跨版本的工具和配置文件不一致,其次,一些关键软件没有以简单直观的方式将设置暴露给配置文件。
让我举两个简短的例子来说明我的意思:
该ifconfig工具正在被替换ip。例如,如果在当前的 ArchLinux 机器上运行,所有依赖于前者的脚本都会中断。所以,我需要检查在我运行脚本的机器上存在哪些版本的工具......这在某种程度上感觉像是在小范围内重新发明 autoconf。
对于第二个问题,请考虑我想为桌面提供某种“通用标识”。在我的 post-install-config-script 中,我使用以下几行来实现这一点:
scp user@server:/export/admin/*.jpg /usr/share/backgrounds/
scp user@server:/export/admin/ubuntu-wallpapers.xml /usr/share/gnome-background-properties/
sed 's/warty-final-ubuntu\.png/MyBackground\.jpg/' -i /usr/share/gconf/defaults/10_libgnome2-common
sed 's/warty\-final\-ubuntu\.png/MyBackground\.jpg/' -i /usr/share/gconf/defaults/16_ubuntu-wallpapers
sed 's/ubuntu-mono-dark/ubuntu-mono-light/' -i /usr/share/gconf/defaults/16_ubuntu-artwork
sed 's/Ambiance/Clearlooks/' -i /usr/share/gconf/defaults/16_ubuntu-artwork
Run Code Online (Sandbox Code Playgroud)
我认为创建 CI 是组织管理员的常见任务。那么,为什么没有中央配置工具,甚至可能没有跨桌面?必须在两个不同的配置文件中设置两个(相同!)未记录的值让我觉得很奇怪。
在组织环境中,您如何处理跨多个客户端的集中统一配置?
与我的“先安装,后运行脚本”的方法相比,像 Debian 的 FAI 这样的系统是否提供了显着的优势(除了不必更换 CD)?
在您的发行版的主要版本之间转换的良好做法是什么?而且,除了技术方面的东西:就用户体验而言,是否有一种桌面环境可以保证长期稳定性?我不认为我可以将我的用户迁移到 KDE 4 或 GNOME 3,但 XFCE 仍然有一些功能缺陷......
是否有解决此类配置问题的 *nix 系统?例如,我假设有些系统会要求您提供组织的一些图像(徽标、背景图像、颜色和字体集等)并将它们应用于登录管理器、用户桌面、网络应用程序(!)等在。注意:在我们的例子中,我必须使用胖客户端,所以纯粹的瘦客户端解决方案无济于事。
我有一台只在某些时候使用的计算机,我想知道是否有办法让它在一段时间不活动后自行关闭。
这是棘手的部分,如果我只是想在 GUI 空闲时让它自行关闭,那么我认为这会容易得多,但我正在努力确保我不会切断任何积极使用机器也通过SSH。有问题的计算机是 Debian 5.0。
有没有办法检测机器是否空闲,例如没有人使用 GUI 并且没有人通过 SSH 使用机器?如果 SSH 连接是打开的,但没有被主动使用,那么计算机应该认为是空闲的。
我认为这里的很多人都错误地输入rm -rf了错误的目录,希望它不会造成巨大的损失。有什么办法可以防止用户做类似的unix 恐怖故事?有人提到(在上一个链接的评论部分)
...我很确定现在每个使用 unix 的 unix 课程或公司都会设置 rm -fr 来禁用试图运行它的人的帐户或阻止他们运行它......
在任何当前的 Unix 或 Linux 发行版中是否有任何实现?即使是系统管理员(具有 root 访问权限),防止该错误的常见做法是什么?
似乎在 Solaris(自 2005 年)和 GNU(自 2006 年)中对根目录( /)有一些保护。无论如何也要对其他一些文件夹实施相同的保护方式吗??
为了更清晰,我没有询问有关使用的一般建议rm(并且我已经更新了标题以表明更多),我想要更像根文件夹保护的东西:为了rm -rf /您必须传递特定参数:rm -rf --no-preserve-root /.. 自定义目录集是否有类似的实现?或者我可以指定除了/受preserve-root选项保护的文件吗?
我正在尝试向系统添加新用户。我很困惑要运行哪个命令:useradd还是adduser?
是否有用于培训系统管理员的基于 Linux/Unix 的操作系统?
一些错误会被故意包含在系统中,而受训候选人应该解决所有这些错误。它应该类似于WebGoat。
是否可以查询我的 (MIT) Kerberos KDC 以返回已颁发当前有效 TGT 的主体列表?
我的用例是,我想通过仅查询 KDC 机器来找出哪些用户当前登录到网络环境中的任何机器上。
我试图允许一组用户获得对 dhcpcd 服务实例的一些控制。换句话说,我希望他们能够运行:
systemctl (start,stop,...) dhcpcd@eth0.service
Run Code Online (Sandbox Code Playgroud)
没有被提示输入密码,但只在 dhcpcd@eth0.service 上。我已经遇到过这样做的方法,但是它们需要在自己的行中枚举每个子命令。
%mygroup ALL=NOPASSWD: /usr/bin/systemctl start dhcpcd@eth0.service, /usr/bin/systemctl stop dhcpcd@eth0.service, ...
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点?
我想授予用户 sudo 访问权限。
我想主要是想授予安装软件的权限,但不太确定在 CentOS 中如何操作:
https://linuxize.com/post/how-to-add-user-to-sudoers-in-centos/
而在 Ubuntu 中,至少我记得的选项是:
sudo adduser foo sudo
将用户 foo 添加到 sudo。我也很好奇为什么这在 CentOS 中不可用——也许它的粒度不够细?
[nsaunders@rolly ~]$
[nsaunders@rolly ~]$ sudo usermod -aG sudo rdegamma
usermod: group 'sudo' does not exist
[nsaunders@rolly ~]$
Run Code Online (Sandbox Code Playgroud) 我正在尝试寻找我知道正在运行的 cron 作业(或等效的作业),但在我的系统(FreeBSD / Linux / BSD)的默认 cron 文件中找不到它。我怎么知道哪些实际上正在初始化?
问题可能不清楚且过于宽泛,但任何答案,无论它是短还是宽,都非常感谢。
前段时间我要求在我们的生产服务器上安装 zsh。我的管理员公司回复说这是无法完成的,因为这是生产服务器,而不是开发服务器。
过去 5 年我一直使用 zsh 和 oh-my-zsh,并且非常喜欢它,zsh 让我的工作更轻松、更快捷。但这还不够。
我不擅长安全或可能涉及的其他问题,这就是为什么我的问题是: