关于Debian的一些简记

2017-12-12  本文已影响0人  raphaelzhang

设置console的分辨率

  1. apt-get install hwinfo vim
  2. hwinfo --framebuffer | grep --color 1280确认有1280x1024x24bit的分辨率
  3. vim /etc/default/grub,然后把GRUB_CMDLINE_LINUX=""这一行改成GRUB_CMDLINE_LINUX="vga=795",注意795是十进制的,hwinfo列出来的是十六进制的
  4. update-grub
  5. init 6

设置console的字体

  1. ls /usr/share/consolefonts看看有哪些支持的console字体
  2. echo "setfont Uni2-TerminusBold20x10" >> ~/.bashrc
  3. . ~/.bashrc

获取某个命令如(useradd)所在的包

  1. apt-get install apt-file
  2. apt-file update
  3. apt-file search useradd
  4. 如果已经知道了具体的路径,使用这个命令更快:dpkg -S /usr/sbin/useradd

获取源码包

  1. /etc/apt/source.list中加入deb-src http://ftp.cn.debian.org/debian jessie main,不过一般都不用加
  2. apt-get update
  3. apt-get install dpkg-dev
  4. apt-get source passwd

将光驱数据导成iso

  1. cat /proc/sys/dev/cdrom/info获得对应的设备名,如/dev/sr0
  2. blockdev --getbsz /dev/sr0获得块大小,如2048
  3. dd if=/dev/sr0 of=~/theCD.iso bs=2048导出iso文件,不过网上有人说不用bs参数也可以,不过这样导出的iso可能在最后会有空白,所以还是需要知道原iso文件大小再head -c比较好

列出一个包里安装的文件

  1. dpkg-query -L john
  2. apt-file list john
  3. dpkg -c some-pkg.deb
  4. 查看http://packages.debian.org/distro-name/all/package-name/filelist,如http://packages.debian.org/jessie/all/bash/filelist

添加32位库

  1. dpkg --add-architecture i386
  2. apt-get update

capabilities

通过capabilities可以不用setuid,让普通用户运行一个需要root权限才能运行的程序,而且不会用到他/她不需要的root权限。

比如/bin/ping,它需要使用raw-socket,这是需要root权限的。

传统意义下,需要使用#chmod +s /bin/ping/bin/ping设置为setuid程序才行,但是现在我们可以#setcap cap_net_raw+ep /bin/ping即可,其中cap_net_raw对应raw-socket权限,ep是effective/permission权限。

若配合pam_cap与执行程序的+ei权限,可为单独某个用户设置某个程序是否可执行某些特权功能,将非常灵活。


限制root写某文件

由于root用户对所有文件都有rw权限,因此chmod -w somefile操作somefile后root仍然能改写此文件,但是可以通过chattr +i somefile将somefile设置为immutable(不可变),这样root也就无法改写此文件了。


查询已安装的软件包


使用ip/ss命令代替ifconfig等

ifconfig已经有十多年没有维护了(最近又有人要开始维护了...),而且对infiniband、输出信息的编码、CIDR格式的地址处理都有问题。

总地来说,ifconfig/arp/route/iptunnel需要使用ip命令代替,netstat可以使用ss代替,iwconfig使用iw代替。

列举

启动关闭

管理IP

设置网卡别名

管理ARP

路由

网络连接

网络流量


简单的TCP测试


从目录创建iso文件


静态IP设置

sudo vim /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.23.23
netmask 255.255.255.0
gateway 192.168.23.1

在Debian 8上从源码包构建软件


在CentOS 6上从srpm构建软件

[base-source]
name=CentOS-$releasever - Base Source
baseurl=http://vault.centos.org/6.6/os/Source/
enabled=1

[updates-source]
name=CentOS-$releasever - Updates Source
baseurl=http://vault.centos.org/6.6/updates/Source/
enabled=1

[extras-source]
name=CentOS-$releasever - Extras Source
baseurl=http://vault.centos.org/6.6/extras/Source/
enabled=1

[centosplus-source]
name=CentOS-$releasever - Plus Source
baseurl=http://vault.centos.org/6.6/centosplus/Source/
enabled=1

实际上,也可以不用设置源码仓库地址与使用yumdownloader,直接wget http://vault.centos.org/6.6/os/Source/SPackages/shadow-utils-4.1.4.2-19.el6.src.rpm就可以了。

如果需要加上额外的功能,例如加上对审计的支持,可以:

其它的步骤类似。


内核模块

使用modprobe载入内核模块:

  1. sudo cp my_mod.ko /lib/modules/$uname-r/extra/.,其中$uname-runame -r的执行结果
  2. sudo depmod -a

接着就可以通过modprobe my_mod来载入my_mod.ko了,也可以通过modinfo my_mod来查询信息

将内核模块在init运行后载入,可以修改/etc/modules加入my_mod这一行即可

在initrd.img里面载入:

  1. sudo vi /etc/initramfs-tools/modules,加入my_mod这一行
  2. sudo update-initramfs -u更新initrd.img
  3. sudo lsinitramfs -l /initrd.img | grep my_mod可以看到模块已经加入了initrd.img文件中

获取内核模块依赖的内核函数:

readelf -s abc.ko | awk '(NF == 8){ if ($7 == "UND") print $8 }'


cgroups (control groups,控制组)

现在的cgroups文件系统都是挂载到/sys/fs/cgroup目录下的。

在Debian下,缺省有blkiocpu,cpuacctcpusetdevicesfreezernet_cls,net_prio等,如果需要加上memory的cgroups,则需要修改/etc/default/grub,为GRUB_CMDLINE_LINUXGRUB_CMDLINE_LINUX_DEFAULT加上cgroup_enable=memory,然后sudo update-grub2后,重启即可生效。

可以通过手工来控制,例如:

也可以通过cgroup-tools包提供的工具来使用,在启动程序的时候更方便些,下面是等效命令:

此外,可以通过libcgroupcgroup-tools自动安装)的/etc/cgconfig.conf定义控制组,通过/etc/cgrules.conf定义进程与用户所应属的控制组。

值得注意的是:

开发可以基于libcgroup开发,当然其实也都挺简单的。可以使用的工具还有systemd.resource-controlcgmanager,不过后者已经于2016.6被Canonical放弃了。对于用户控制,还可以使用pam-cgroup

上述使用是基于cgroup v1的,v2的另有用法。

对于磁盘IO来说,可以使用blkio来限制进程的IO速度,主要可以通过blkio.throttle.read_bps_deviceblkio.throttle.write_bps_device来限制。

假设/dev/sda的主设备号与从设备号分别是8和0(可以通过ls -l /dev/sda看到),则可以通过echo "8:0 1048576" > /sys/fs/cgroup/blkio/myblkio/blkio.throttle.read_bps_device将进程从/dev/sda(含其下的各分区,如/dev/sda1等)设备读取数据的速率限制到1M bps。

除此之外,也可以通过配置文件来做,步骤如下:

  1. apt-get install cgroup-tools
  2. 编写/etc/cgconfig.conf如下:
group browsers {
    blkio {
        blkio.throttle.read_bps_device = "8:0 4194304";
    }

    memory {
        memory.soft_limit_in_bytes = "1G";
    }
}
  1. cgconfigparser -l /etc/cgconfig.conf创建相应的cgroups组
  2. 编写/etc/cgrules.conf如下:
raphael:/opt/google/chrome/chrome    memory,blkio    browsers
  1. cgrulesengd启动对进程的运行监控

参考资料

上一篇下一篇

猜你喜欢

热点阅读