Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
为什么要求privs将setgid()添加到补充组
set*gid()除极少数情况外,各种系统调用都需要特权来更改组。将主要组更改为进程的补充组之一似乎不是其中之一,这意味着例如newgrp/ sg命令需要提升特权才能切换主要组。 是否有一个原因,为什么setgid()/ setegid()/ setregid()/ setfsgid()不允许没有PRIVS切换到补充组?如果是这样,原因是什么?

1
如何在启动序列结束时暂停(或捕获)通过的消息?
在“启动序列” 1即将结束时,我看到一连串漫长的诊断消息飞速地飞过,就在我看到登录提示2之前。 AFAICT,构成这个短暂输出的大部分(如果不是全部)行都从下面显示的任一字符串开始 [ OK ] [FAILED] ...其中OK绿色FAILED为,红色为3。 这些消息闪烁太短,我无法阅读。 我的问题是: 有没有一种方法可以使这些消息更易于阅读? 我想到的可能解决方案包括(按优先顺序排列): 发球(或简单地重定向)这些消息逐字 4到一些持久日志文件; 启用分页类型机制(Press any key to continue...); 在打印这些消息后插入一个暂停(可配置的长度); 使某些键(或组合键)暂停输出到屏幕5。 编辑:根据我到目前为止的评论,我必须得出结论,即使我已尽我所能地强调,上述(1)中的逐字这个词还是不被理解或未被重视。如果可以的话,我会使其闪烁... EDIT2:meuh在评论中给出的建议对我来说很有希望,但是我还无法使它生效。这是我所做的: 首先,我在的末尾添加了以下内容/etc/rsyslog.conf: # Save boot messages also to boot.log local7.* /var/log/boot.log ...然后重新启动。我看到通常的诊断消息飞过,但是没有/var/log/boot.log创建文件。 然后,在/var/log/boot.log必须rsyslog写入之前已经存在的(极不可能的)事件中,我以root用户身份执行: touch /var/log/boot.log chgrp adm /var/log/boot.log chmod 640 /var/log/boot.log ... chgrp和chmod命令旨在使所有权和权限/var/log/boot.log与之下的所有其他日志文件的所有权和权限匹配/var/log。然后,我重新启动,看到了消息等。/var/log/boot.log此重新启动后,文件仍然为空。 (我得到了相同的非结果,当我改变的权限/var/log/boot.log来666。) 我想出的所有内容都grep输出到journalctl --boot或其中的文件下/var/log,这可能表示我的问题了rsyslog,但没有找到任何东西。(我对一点都不熟悉rsyslog,所以我确定搜索不力。) 显然,到目前为止,我所做的不足以启用所需的日志记录。我现在正在寻找我所缺少的东西。但是,我找不到太多相关的文档。例如,既不rsyslog.conf(5)也不rsyslogd(8)打算解释什么local7(rsyslog.conf(5)至少足够亲切地提及一次,而没有提供任何进一步的信息)。 编辑3 …

1
md raid5:将md内部扇区号转换为偏移量
TL; DR摘要:将md扇区号转换为/dev/mdX设备内的偏移量,以及如何使用进行调查xfs_db。扇区号来自sh->sector中linux/drivers/md/raid5.c:handle_parity_checks5()。 我不知道MD的内部原理,所以我不知道该如何处理printk我添加的日志记录的输出。 偏移到组件设备中(对于dd十六进制编辑器或查看器)也将很有趣。 我想我应该在Linux突袭邮件列表中问这个问题。它是仅订阅者,还是可以不订阅而发布? 我将xfs直接放在桌面上的4个磁盘的MD RAID5上(没有LVM)。最近的mismatch_cnt清理发现非零值(实际上是8,因为md一次在4kiB页上运行)。 这是RAID5,而不是RAID1 / RAID10 ,mismatch_cnt在正常操作期间,其中!= 0可能会发生。(此Wiki页面底部的其他链接可能对某些人有用。) 我可以盲目地做repair,但是那时我不知道该检查哪个文件可能的损坏,除了失去选择哪种重建方法的机会。 Frostschutz对类似问题的答案是我发现的唯一回溯到文件系统差异的建议。它既麻烦又缓慢,我宁愿使用更好的方法来首先将其缩小到几个文件。 内核补丁添加日志 奇怪的是,md的检查功能不会报告发现错误的位置。 我加入了printk在MD / raid5.c记录sh->sector在if该增量分支mddev->resync_mismatches中handle_parity_checks5()(小片在github上发布,最初基于4.5 RC4从kernel.org。)对于这个是确定用于一般用途,它可能会需要避免充斥大量不匹配的维修日志(也许仅在新值resync_mismatches<1000 时才记录日志)。也可能只登录check而不是repair。 我敢肯定,我正在记录一些有用的信息(即使我不知道MD内部信息!),因为在处理错误的情况下,switch相同的函数会打印该扇区号。 我编译了修改后的内核并启动了它,然后重新运行检查: [ 399.957203] md: data-check of RAID array md125 ... [ 399.957215] md: using 128k window, over a total of 2441757696k. ... [21369.258985] md/raid:md125: check found mismatch at …

1
如果我在CentOS服务器中找不到ssl.conf文件,该怎么办?
我正在准备一台新的CentOS Linux服务器,其中之一。当我尝试在此服务器上配置SSL时,我注意到没有ssl.conf文件。不在/etc/httpd/conf.d/ssl.conf,不在/etc/httpd/conf/ssl.conf。 我也尝试过locate ssl.conf,但没有结果。 我需要自己创建它吗?我可以从其他的CentOS服务器复制文件吗?这样可以吗? Centos 6.3(64位),Apache / 2.2.15(CentOS),PHP版本5.3.3,MySQLi 5.1.73
8 centos  ssl 

2
如何验证文件副本为reflink / CoW?
我正在玩btrfs,它允许cp --reflink写时复制。其他程序(例如lxc-clone)也可以使用此功能。我的问题是,如何判断一个文件是否是另一个文件的CoW?就像硬链接一样,我可以从inode编号看出来。

2
如何获取特定文件的文件系统信息?
找出有关文件的文件系统信息的最佳方法是什么。 例如,如果我有一个文件 /media/xyz/path/to/file.ext 并且/etc/fstab包含 //server1/Share1 /media/xyz cifs option1=value1,... 如何确定文件在Samba共享上,是否具有本地路径/path/to/file.ext以及文件系统的挂载选项? 正在解析mount便携式解决方案的输出吗?还是解析findmnt?是否有符合POSIX的方法来实现?
8 mount  posix 

3
通过以太网电缆“管道” Wi-Fi信号
目前,我工作过的建筑物中的以太网端口已关闭,但Wi-Fi有效。我有一台支持Wi-Fi的笔记本电脑(Ubuntu 14.04 LTS(Trusty Tahr))和一个没有Wi-Fi的工作台(Debian 8(Jessie)),仅带有以太网插头。 是否可以通过以太网电缆将两者连接并能够在工作站上获得网络连接?

2
如何使用安全启动保护initrd和grub.cfg?
我将默认的ubuntu方法与shim和grub2结合使用,并结合了自己的平台密钥(带有sbsign的自签名shim)和加密的根分区,以安全引导我的ubuntu安装。但这仅验证grubx64.efi和内核,而不能保护未加密启动分区上的initrd.img和grub.cfg文件免受恶意修改。 那么,在使用它们引导之前,如何验证initrd和grub的配置(可能使用sha256哈希)?验证可以在垫片,grub或其他我可能使用的其他工具中进行,以补充或替代垫片和/或grub。 这个问题的目的是防止在修改后的环境(内核命令行和initrd)下执行内核,以防止将根分区加密密码泄漏到任何地方。 尽管已经阅读了几天有关安全启动的Web教程/博客,但仍未找到任何方法来验证启动配置,包括Ubuntu和Linux Foundation的PreLoader.efi,所有这些都解释了如何验证包括内核模块在内的可执行文件的工作方式,但是没有一个其中提到了grub.cfg和initrd(其中的shell脚本和配置文件),因此看起来我是第一个在引导过程中要求验证非二进制文件的人。我发现过的最好的资料是罗德·史密斯(Rod Smith)的资料。 我还没有尝试过修改shim或grub的源代码,创建一个fork或直接对其进行贡献。那是唯一的方法吗?

1
在awk脚本中陷阱Ctrl-C
我相信Ctrl- C可以陷入bash脚本中。是否也可以将其捕获在Awk脚本中以处理该事件? 例如,对于中止处理,而是打印已经处理过的结果,而不是仅静默退出?

1
节点JS-获取FQDN [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 4年前关闭。 如何获得运行该节点的计算机的FQDN(完全合格域名)? os.gethostname()这是不够的,因为它通常仅返回不合格的DN。对于同样的事情dns.reverse(ip, callback)-假设IP与主机名相关联的一个,例如,使用获得的dns.lookup(os.gethostname()[, options], callback)。 也shell.exec("hostname -f", { silent: true }, cb)不能选择a,因为它不符合POSIX,因此会失败,例如在Solaris等上。等,这是一个非常糟糕的技巧,因为exec()是一个非常非常昂贵的调用wrt。RAM和CPU等资源(导致上下文切换)。
8 node.js 

1
改善我的Bash脚本
我需要改进我的Bash脚本,以使其完美运行而不会出现问题。该脚本ds4drv在其中使用,并且我不确定如何更正某些问题。 第一个问题是,在检测到控制器时它并不总是运行或正常工作,我已经为其创建了udev规则,但尚不清楚为什么在检测到该控制器时并不总是运行该脚本。 第二个问题,ds4drv只能被允许以root用户身份运行,而不能以普通用户身份运行。 第三个问题,创建PID锁定文件后,我不知道如何处理它们,因此,当PID进程不再存在时,它将在之后删除PID锁定文件。很难找到有关如何在bash脚本中使用PID文件的适当文档,因此只能有1个正在运行的实例。 这是我对ds4drv的udev规则: 50-ds4drv.rules KERNEL=="uinput", GROUP="users", MODE="0666" KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05c4", GROUP="users", MODE="0 666" KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="0005:054C:05C4.*", GROUP="users" MODE="0666" ACTION=="add", SUBSYSTEM="usb", ATTRS{idProduct}=="054c", RUN+="/home/user/scripts/ds4check.sh", GROUP="users" , MODE="0666" 我很确定这是udev规则的样子,权限对我来说似乎是正确的,因为它对GROUP用户是读写的。似乎确实存在一些问题的实例,一旦我的bash脚本运行并且此规则设置为在连接控制器设备时自动运行,那么某些游戏将变得无响应,例如在没有控制器设备的情况下就连接了它。采取行动,/dev/js0而是采取行动/dev/js1。特别是如果它不是以root身份执行的,通常会返回此错误。 OSError: [Errno 13] Permission denied: '/dev/input/event17' 当然还有bash脚本; ds4check.sh #!/bin/bash # DS4 Check Script pidfile=/tmp/ds4drv.pid # check if process is already running …

1
减少*极端*长行
使用less(例如使用Space和B)浏览日志文件时,有时我会遇到非常长的行,如120,000个字符长。我猜想,浏览这些内容会变得很慢,因为它必须弄清楚终端中可能发生的事情以及将换行符放在何处。 可以肯定的是,在我的日志文件中的其他任何地方,这些行最多只能换行10次,而不会超过一页。因此,我不想做一些麻烦的事情,例如不包装文件。 当我点击这些行时,是否有办法将其结束?
8 less 

1
为什么在使用此find -execdir {} +(加号)时最终得到4次调用而不是3次调用?
我在这里读到,您可以通过管道传输到commandin 末尾来计数in 的调用次数。-exec command {} +| wc -l 尽管我理解这-execdir是不同的,但是对于find发现的每个匹配子目录,它都会command从其包含的子目录中运行一个调用,如果我在一个子目录中有多个匹配的文件,则不应我最终得出的调用数量等于匹配的子目录的数量,而不是与这些子目录中的匹配文件的数量匹配的调用数量? 当我运行以下命令时,我将以后者结尾: $ find . -name "bob*" -execdir echo {} + | wc -l 手册页execdir command {} +指出应该是前者: 与该-exec操作一样,的+形式-execdir将构建一个命令行来处理多个匹配文件,但是任何给定的调用command都只会列出存在于同一子目录中的文件。 即 我越来越: ./file1inDir1 ./file2inDir1 ./file3InDir2 ./file4InDir3 当我期望这一点时,基于手册页: ./file1inDir1 ./file2inDir1 ./file3InDir2 ./file4InDir3
8 find 

3
从函数内部执行邮件命令会导致“叉子炸弹”
当我尝试mail从bash脚本中的函数内部执行时,它会创建类似于fork炸弹的内容。为了澄清,这会引起问题: #!/bin/bash mail() { echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org" } mail exit 0 有时您只需要杀死该命令,它就会杀死子进程,但是有时您必须这样做killall -9。 不管邮件是否已发送。该叉炸弹创建两种方式。而且似乎没有为退出代码添加任何检查,例如if ! [ "$?" = 0 ]帮助。 但是以下脚本可以按预期工作,要么输出错误,要么发送邮件。 #!/bin/bash echo "Free of oxens" | mail -s "Do you want to play chicken with …

1
Emacs中的完美像素映射字体
在Ubuntu中,在IntelliJ中,PragmataPro Mono字体如下所示: 注意完美映射的像素。IntelliJ设置Appearance & Behavior > Appearance > Antialiasing > Editor为No antialiasing。 在Emacs中,抗锯齿相同的字体: 如果我添加一个~/.Xresources包含的文件Emacs.font: PragmataPro Mono-12:antialias=false,则Emacs如下所示: 字体会自动进行位图映射,但不符合字体规范。 如何在Emacs中复制IntelliJ的渲染? 我已在Ubuntu-Cinnamon和Arch-Xfce上重现了此问题。谢谢。
8 x11  emacs  fonts 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.