我看过一些例子展示了如何davfs2在 linux 下使用,但每个例子都涉及以下其中一件事情:
mount以 root 身份运行
添加条目到 /etc/fstab
运行mount.davfssetuid,唉,仍然需要输入/etc/fstab
这可以避免吗?如果不是,webdav 的哪些方面会阻止它,而不是例如 sshfs?
在共享服务器上,我希望有一些非常低优先级的用户,这样每当其他用户(也没有 root 权限)需要资源时,他们可以杀死任何低优先级用户的进程。
是否有可能允许这样的事情?
我通过 sshkey ( ssh -i /home/me/.ssh/ssh-key me@server)登录到服务器。
我从管理员那里获得了该服务器上的 sudo 权限,但我无法行使它们,因为我忘记了我的实际 Unix 密码(或者我从未被告知)。我已经登录 - 我可以在passwd不知道旧密码的情况下通过 重置密码吗?
作为非 root 用户,我想在系统启动时运行后台作业。这是一种不需要root权限的服务。有没有办法做到这一点?
一种方法是把sudo -u user command在rc.local,但编辑rc.local需要root权限。
另一种方法是cron每分钟启动它并检查任何正在运行的实例,但首先它会不必要地唤醒系统,其次,在检查运行实例时可能存在竞争条件。
第三种方法是在 中运行它~/.bash_profile,但我想在没有用户登录的情况下启动它。
我希望用户在系统上运行具有负的 nice 值的特定进程。我不能简单地将进程分叉到后台,因为这个特定程序是一个 minecraft 服务器,我依靠命令行来控制服务器。
我当前的 bash 脚本如下所示(重要部分):
sleep 10 && \
sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \
java -Xmx8G -Xms2G -jar minecraft_server.jar nogui
Run Code Online (Sandbox Code Playgroud)
sleep只是延迟renice. renice它本身ps用于使用用户自己的 ID 检查 java 进程。在不同的用户下可能有其他 java 生成实例,但 minecraft 服务器在其自己的用户minecraft下运行。
我显然不想每次启动服务器时都输入密码。
来自/etc/sudoers:
minecraft ALL = NOPASSWD: /etc/renice
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点?简单地使用nice不是一个选项,sudo nice bash结合NOPASSWD:选项将是一个很大的安全问题。
我知道(例如在 Debian 中)可以dpkg-reconfigure tzdata用来更改系统的时区,但我想知道如何更改用户时区(如果 Linux/Unix 完全支持这样的想法)。
我通常通过 ssh 在服务器上远程工作,并且考虑到服务器在内部使用 UTC(文件,...)并且时区相当肤浅,我想根据我从哪里连接来查看所需时区中的时间。这可能吗?
我正在尝试在两个不同的操作系统(Ubuntu 和 CentOS)上使用控制组。我想问的问题很少。
我正在尝试使用该cgcreate命令创建一个控制组,看起来它需要对机器进行 root 访问。到目前为止,我看到的所有示例都没有说明需要成为 root 用户才能创建或修改控制组。
真的有必要成为root用户吗?最终目标是编写一个 C++ 应用程序,该应用程序创建和管理控制组以使用 libcgroup API 控制资源。但是 C++ 应用程序不会由任何 root 用户运行。它可以是任何普通用户。
我正在尝试为最小的源代码 linux 发行版编写引导程序。
我想在一个类似 chroot 的环境中构建。这应该简化包装。在这一点上,我不关心安全性。引导程序不应需要任何非标准的第三方命令。如果不需要 root 那就太好了。
这就是为什么 fakechroot(1) fakeroot(1) chroot(1) 不是我正在寻找的。
是否可以伪造 / 使用 unshare(1) 和 /bin/sh?
我已经构建了一个本土的 Linux 发行版,我可以以非 root 用户的身份制作完整的磁盘映像文件,但有一个例外——安装引导加载程序。我正在使用 syslinux(实际上是 extlinux),要安装它,我必须环回挂载引导分区,这需要 root/sudo 权限。这些命令是从一个 makefile 运行的,变量名应该清楚地表明用什么来替换它们。
sudo losetup -o $(BOOT_FS_PARTITION_OFFSET) $(LOOP_DEVICE) $(IMAGE_FILE_NAME)
sudo mount $(LOOP_DEVICE) $(LOOP_MOUNT_POINT)
sudo $(EXTLINUX) -S $(DISK_SECTORS) -H $(DISK_HEADS) -i $(LOOP_MOUNT_POINT)
sudo umount $(LOOP_MOUNT_POINT)
sudo losetup -d $(LOOP_DEVICE)
Run Code Online (Sandbox Code Playgroud)
有没有办法在不需要root权限的情况下将syslinux或extlinux写入磁盘映像文件?
我需要允许dba组中的用户控制database@服务。这个相关问题的答案是只列出systemctl我想在sudoers文件中允许的所有“动词” ,但是,这不适用于我的情况,因为我事先不知道系统中可能存在哪些数据库。例如,如果我列出
%dba = /usr/bin/systemctl start database@awsesomeapp
%dba = /usr/bin/systemctl start database@anotherawsesomeapp
%dba = /usr/bin/systemctl start database@yetanotherawsesomeapp
%dba = /usr/bin/systemctl start database@wowyetanotherawsesomeapp
# ... other "verbs" omitted for brevity
Run Code Online (Sandbox Code Playgroud)
这不包括将来可能存在的实例,并且 dba 将无法
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
Run Code Online (Sandbox Code Playgroud)
无论如何,我更多地考虑包装而不是摆弄特定系统。
请注意,如另一个相关问题的惊人答案所示,为此使用 sudo globs 最终是不安全的:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
Run Code Online (Sandbox Code Playgroud)
确实允许
$ sudo systemctl start database@awsesomeapp unrelatedservice
Run Code Online (Sandbox Code Playgroud)
我怀疑使用sudo不会解决我的问题(尽管我肯定希望我错了)。有没有其他方法可以让非root用户控制systemd服务?
对于它的价值,我需要在 CentOS 7 系统和未来的 RHEL7 系统中执行此操作。我也会对适用于 …