使用sysvinit
,这样的sudoers
条目就足够了:
%webteam cms051=/sbin/service httpd *
Run Code Online (Sandbox Code Playgroud)
这将允许以下命令:
sudo service httpd status
sudo service httpd restart
现在,使用systemd
,服务名称是最后一个参数。即,服务重启将通过以下方式完成:
systemctl restart httpd.service
Run Code Online (Sandbox Code Playgroud)
自然,我认为定义命令systemctl * httpd.service
会起作用,但这会允许类似systemctl restart puppet.service httpd.service
的效果不是预期的。
考虑到这一点,那么允许非 root 用户控制systemd
服务的最佳方式是什么?这不需要是sudoers
;也许文件权限更改可能就足够了?
之前我安装了 Ubuntu 10.04 和 Windows 7。
现在我登录到 Windows,打开分区编辑器并删除包含 Ubuntu 的卷——我认为它会删除 Ubuntu,它可能会帮助我安装另一个操作系统——然后我重新启动了系统。
GRUB 救援提示在那里。
我想登录到 Windows。我怎样才能做到这一点?
在 GRUB 救援中,我尝试了以下操作:
ls
(hd0) (hd0,3) (hd0,2) (hd0,1) (hd1) (hda1,1)
Run Code Online (Sandbox Code Playgroud)
尝试了 的所有组合ls (hdax)/
,结果抛出:
error: Unknown Filesystem.
Run Code Online (Sandbox Code Playgroud)
我试过这个:
rootnoverify (hd0,0)
chainloader +1
makeactive
boot
Run Code Online (Sandbox Code Playgroud)
它抛出:
Unknown command.
Run Code Online (Sandbox Code Playgroud)
编辑:
我从 USB 安装了 Ubuntu。现在当我重新启动系统时,我得到了 GRUB,显示旧的 Windows 和新安装的 Ubuntu。我愉快地登录到Windows。然后我使用标准程序删除Ubuntu,以免grub救援。
我在 domain.fr 上有一台 CentOS 5 服务器。我正在尝试设置一个子域,以便我可以将它与 git 一起使用: git.domain.fr
我的存储库在 /home/git (例如 /home/git/repos.git)
我已经安装了git-http-backend
Nginx。我已经设置了这样的存储库:
cd /home/git/repos.git && git --bare init
Run Code Online (Sandbox Code Playgroud)
我已将我的git.conf
(包含在 中nginx.conf
)设置为如下。
但是,在我的客户端 shell 上,我收到致命错误“找不到存储库”: git clone http://git.domain.fr/repos.git
有谁知道我应该做什么?看起来很简单,我很沮丧,因为我确定这没什么。
server {
listen 80;
server_name git.domain.fr;
root /home/git;
location ~ /(/.*) {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/bin/git-http-backend;
fastcgi_param GIT_HTTP_EXPORT_ALL true;
fastcgi_param GIT_PROJECT_ROOT /home/git;
fastcgi_param PATH_INFO $1;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
}
Run Code Online (Sandbox Code Playgroud) 用户vi
和rust
共享组rust
并希望以共享方式使用某些文件。
rust$ ls -l myfile
-rw-rw-r-- 1 vi rust 0 May 30 03:48 myfile
rust$ stat myfile | grep Gid
Access: (0664/-rw-rw-r--) Uid: ( 1000/ vi) Gid: ( 1057/ rust)
rust$ id
uid=1048(rust) gid=1057(rust) groups=1057(rust),...
rust$ cat myfile
rust$ touch myfile
touch: cannot touch ‘myfile’: Permission denied
rust $ dd of=myfile
dd: failed to open ‘myfile’: Permission denied
vi$ id
uid=1000(vi) gid=1000(vi) groups=1000(vi),{many unrelated groups skipped},1057(rust),{many unrelated groups skipped}
vi$ touch myfile
vi$
Run Code Online (Sandbox Code Playgroud)
尽管有 …
是否可以从以非特权用户身份运行的 bash 将文件标记为免疫,以便它不能从以该用户身份运行的任何进程以任何方式进行更改?如果其他用户或 root 可以更改它,则可以。
我的用户案例是在开始另一个进程之前准备一个配置文件。我想阻止该进程通过错误或故意利用来对文件进行任何修改。
使用chmod a-w path
或类似的方法并不好,因为它可以被简单地撤消。我无法更改文件的所有权,因为该进程不是 root。我也不能使用,chattr +i path
因为进程没有 CAP_LINUX_IMMUTABLE。
是否唯一的选择是在其可执行文件上设置 setuid/sudo 程序或具有 CAP_LINUX_IMMUTABLE 的程序来执行此类更改?
服务器有一个 7 磁盘RAID 0
阵列,并且sdf
开始死亡。
有没有办法sdf
在保持阵列完整的同时删除?
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md1 14T 6.6T 7.0T 49% /var
[...]
# cat /proc/mdstat
Personalities : [raid0]
md1 : active raid0 sda4[0] sdf1[5] sdd1[3] sdb1[1] sde1[4] sdg1[6] sdc1[2]
14482788352 blocks 512k chunks
Run Code Online (Sandbox Code Playgroud)
希望将停机时间保持在最低限度。
澄清:
我知道没有冗余,并且我已经备份了重要数据。
但是是否有可能将“条纹”sdf
移到其他驱动器上?只是为了让它进入稳定状态而不必擦拭所有东西。到目前为止,我可以强行修复的只是几个坏道。
如果可能的话,之后我会计划对 3 个健康的驱动器做同样的事情,并镜像它们。最终我需要将其转换为RAID1
.
我不相信可以在此 Hetzner 服务器上添加另一个硬盘。此外,他们无法镜像有缺陷的驱动器并更换它:
“请注意,我们只能将您损坏的硬盘更换为空硬盘。我们不进行任何数据交换或备份。”
——赫兹纳