-
本帖最后由 达康书记 于 2017-9-23 16:13 编辑不同人对noVNC窗口大小有不同的诉求,笔者教大家如何自己调整,高手飘过,请轻拍砖。 管理控制台终端Web VNC窗口大小实际是由系统设置的分辨率相关,Linux系统控制分辨率需要将vga参数传递到kernel中。 通过VGA启动参数来设置屏幕分辨率模式: [code] Mode 0x0317: 1024x768 (+2048), 16 bits Mode 0x0318: 1024x768 (+4096), 24 bits --------推荐使用 Mode 0x0314: 800x600 (+1600), 16 bits Mode 0x0315: 800x600 (+3200), 24 bits Mode 0x0311: 640x480 (+1280), 16 bits Mode 0x0312: 640x480 (+2560), 24 bits[/code]修改VNC窗口大小方法如下: 编辑文件/boot/grub/grub.conf,在kernel的最后一行加入:vga=0x0318 (代表1024x768,24色) [code]default=0 timeout=5 splashimage=(hd0,1)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32-696.6.3.el6.x86_64) root (hd0,1) kernel /boot/vmlinuz-2.6.32-696.6.3.el6.x86_64 ro root=UUID=f382872b-eda6-43df-9516-5a687fecdce6 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM vga=0x0318 rhgb quiet initrd /boot/initramfs-2.6.32-696.6.3.el6.x86_64.img [/code]输入命令:vi /boot/grub/grub.conf,然后在窗口中编辑。修改后保存,重启服务器后生效。 2262
-
本帖最后由 达康书记 于 2017-9-23 15:42 编辑华为云Linux弹性云服务器的静态主机名来源于创建弹性云服务器时,通过Cloud-init注入的用户自定义名称。 虽然hostname命令可以修改Linux弹性云服务器的主机名,但是,如果您希望修改后的主机名在弹性云服务器关机、重启后仍然生效,需要将其写入相应的配置文件中,使之永久生效。 假设修改后的主机名为“new_hostname”。 步骤 1 修改配置文件“/etc/hostname”。 a. 执行以下命令,编辑配置文件“/etc/hostname”。 [code]sudo vim /etc/hostname[/code]b. 修改配置文件,将文件中的主机名替换为修改后的主机名(new_hostname)。 c. 执行以下命令,保存并退出文件。 [code]:wq[/code]步骤 2 修改配置文件“/etc/sysconfig/network”。 a. 执行以下命令,编辑配置文件“/etc/sysconfig/network”。 [code]sudo vim /etc/sysconfig/network[/code]b. 修改涉及“HOSTNAME”的参数值,将其设置为修改后的主机名(new_hostname)。 [code]HOSTNAME=修改后的主机名[/code][code]示例:HOSTNAME=new_hostname[/code]c. 执行以下命令,保存并退出文件。 [code]:wq[/code]步骤 3 修改配置文件“/etc/cloud/cloud.cfg”。 a. 执行以下命令,编辑配置文件“/etc/cloud/cloud.cfg”。 [code]sudo vim /etc/cloud/cloud.cfg[/code]b. 按需选择如下方法,修改配置文件。 − 方法:删除或者注释语句- update_hostname。 弹性云服务器关机、重启后,修改后的主机名(new_hostname)仍然生效。但是,如果使用该云服务器制作私有镜像,并使用生成的镜像重新创建弹性云服务器,用户可以通过Cloud-init注入用户自定义名称(如new_new_hostname),并长久有效地修改静态主机名。 步骤 4 执行以下命令,重启弹性云服务器。 [code]sudo reboot[/code]步骤 5 执行以下命令,验证主机名的修改是否永久生效。 [code]sudo hostname[/code]如果回显的内容是修改后的主机名(new_hostname),则表示主机名修改成功,永久生效。
-
本帖最后由 达康书记 于 2017-9-20 21:17 编辑我申请了一个云主机,利用密钥对远程登录,隔一段时间我要更换密钥对,删除老的,通过portal新建一个,无法应用新的密钥对注入来登陆。 还有,我申请了一个云主机,利用密码对远程登录,隔一段时间我要更换密钥对来登陆,通过portal新建一个,无法应用新的密钥对注入来登陆。 这个华为云是出于啥考虑呢,若要将华为云Linux云服务器的秘钥重置或密码切秘钥,我该如何办呢?这个估计是出于仿照公有云大厂商AWS做法为了安全考虑,平台不提供在线监控或注入虚拟机的后门操作,华为云号称zero-inject零注入果真名不虚传的。 1、首先登陆华为云Linux云服务器上制作密钥对,首先用密码或老秘钥登录到你打算使用密钥登录的账户,然后执行以下命令: [code][root@host ~]$ ssh-keygen == 建立密钥对 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): == 按 Enter Created directory ´/root/.ssh´. Enter passphrase (empty for no passphrase): == 输入密钥锁码,或直接按 Enter 留空 Enter same passphrase again: == 再输入一遍密钥锁码 Your identification has been saved in /root/.ssh/id_rsa. == 私钥 Your public key has been saved in /root/.ssh/id_rsa.pub. == 公钥 The key fingerprint is: 0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host[/code]密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用,也可以留空,实现无密码登录。现在,在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件:id_rsa 为私钥,id_rsa.pub 为公钥。 2、在华为云Linux云服务器上安装公钥 键入以下命令,在服务器上安装公钥: [code][root@host ~]$ cd .ssh [root@host .ssh]$ cat id_rsa.pub >> authorized_keys[/code] 如此便完成了公钥的安装。 为了确保连接成功,请保证以下文件权限正确: [code][root@host .ssh]$ chmod 600 authorized_keys [root@host .ssh]$ chmod 700 ~/.ssh[/code] 3、[可选项] 设置 SSH,打开密钥登录功能(华为云Linux云服务器默认是开启的) 编辑 /etc/ssh/sshd_config 文件,进行如下设置: [code]RSAAuthentication yes PubkeyAuthentication yes[/code] 另外,请留意 root 用户能否通过 SSH 登录: [code]PermitRootLogin yes[/code] 当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录: [code]PasswordAuthentication no[/code] 最后,重启 SSH 服务: [code][root@host .ssh]$ service sshd restart[/code] 4、将私钥下载到客户端,然后转换为 PuTTY 能使用的格式。 使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上,请谨慎保管好以防丢失。 然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。 载入成功后,PuTTYGen 会显示密钥相关的信息。 在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。 今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。 当然,根据个人喜欢,也可以使用xshell,我就比较喜欢xshell工具。 至此,成功安全的完成华为云Linux云服务器的秘钥重置或密码切秘钥的诉求,完了可以将portal的秘钥对删掉,不依赖平台的秘钥对,是不是很简单也安全啊,高手请飘过,拍砖的请轻点。
-
本帖最后由 我要选李白 于 2017-9-15 18:20 编辑Mysql是一款很常见的关系型数据库,虽然目前在逐渐式微,并且分裂出了MariaDB, 但仍然是很多的轻型应用的首选。 那么如何在华为云上部署Mysql呢,笔者经过实验,发现与传统部署模式完全一致,无需做任何改动,现提供以下安装步骤,仅作抛砖引玉: Linux/UNIX上安装MysqlLinux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址: [*]MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。 [*]MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。 [*]MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。 [*]MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。 [*]MySQL-bench - MySQL数据库服务器的基准和性能测试工具。 以下安装Mysql RMP的实例是在SuSE Linux系统上进行,当然该安装步骤也适合应用于其他支持RPM的Linux系统,如:Centos。 安装步骤如下: 使用root用户登陆你的Linux系统。 下载Mysql RPM包,下载地址为:MySQL 下载。 通过以下命令执行Mysql安装,rpm包为你下载的rpm包: [code][root@host]# rpm -i MySQL-5.0.9-0.i386.rpm[/code]以上安装mysql服务器的过程会创建mysql用户,并创建一个mysql配置文件my.cnf。 你可以在/usr/bin和/usr/sbin中找到所有与MySQL相关的二进制文件。所有数据表和数据库将在/var/lib/mysql目录中创建。 以下是一些mysql可选包的安装过程,你可以根据自己的需要来安装:[code][root@host]# rpm -i MySQL-client-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-devel-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-shared-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-bench-5.0.9-0.i386.rpm[/code] Window上安装Mysql Window上安装Mysql相对来说会较为简单,你只需要载 MySQL 下载中下载window版本的mysql安装包,并解压安装包。 双击 setup.exe 文件,接下来你只需要安装默认的配置点击"next"即可,默认情况下安装信息会在C:\mysql目录中。 接下来你可以通过"开始" =》在搜索框中输入 " cmd" 命令 =》 在命令提示符上切换到 C:\mysql\bin 目录,并输入一下命令: [code]mysqld.exe --console[/code]如果安装成功以上命令将输出一些mysql启动及InnoDB信息。 验证Mysql安装 在成功安装Mysql后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证Mysql是否工作正常。 使用 mysqladmin 工具来获取服务器状态: 使用 mysqladmin 命令俩检查服务器的版本,在linux上该二进制文件位于 /usr/bin on linux ,在window上该二进制文件位于C:\mysql\bin 。 [code][root@host]# mysqladmin --version[/code]linux上该命令将输出以下结果,该结果基于你的系统信息: [code]mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386[/code]如果以上命令执行后未输入任何信息,说明你的Mysql未安装成功。 使用 MySQL Client(Mysql客户端) 执行简单的SQL命令你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到Mysql服务器上,默认情况下Mysql服务器的密码为空,所以本实例不需要输入密码。 命令如下:[indent][code][root@host]# mysql [/code][/indent]以上命令执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在 mysql> 提示符执行SQL命令:[code]mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.13 sec) [/code]Mysql安装后需要做的 Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码: [indent][code][root@host]# mysqladmin -u root password "new_password"; [/code][/indent]现在你可以通过以下命令来连接到Mysql服务器: [code][root@host]# mysql -u root -p Enter password:******* [/code]注意:在输入密码时,密码是不会显示的,请确保输入正确。 Linux系统启动时启动 MySQL如果你需要在Linux系统启动时启动 MySQL 服务器,你需要在 /etc/rc.local 文件中添加以下命令:[indent][code]/etc/init.d/mysqld start[/code]同样,你需要将 mysqld 二进制文件添加到 /etc/init.d/ 目录中。 [/indent]
-
本帖最后由 达康书记 于 2017-9-15 11:05 编辑华为云上以CentOS 7.3 64bit为例,root分区在非末尾分区(e.g: /dev/xvda1: root,/dev/xvda2: swap),如何自定义个可自动扩容root分区的Linux私有镜像。 1、查询扩容系统盘分区情况,第一分区是根分区,第二分区是swap [code][root@sluo-ecs-e6dc-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot 2 41.0GB 42.9GB 2000MB primary linux-swap(v1) [root@sluo-ecs-e6dc-resizefs ~]# blkid /dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4" /dev/xvda2: UUID="5de3cf2c-30c6-4fb2-9e63-830439d4e674" TYPE="swap" [/code] 2、编辑fstab分区表将swap分区挂载删掉 [code][root@sluo-ecs-e6dc-resizefs ~]# tail -n 3 /etc/fstab # UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1 UUID=5de3cf2c-30c6-4fb2-9e63-830439d4e674 swap swap defaults 0 0 [root@sluo-ecs-e6dc-resizefs ~]# vi /etc/fstab [root@sluo-ecs-e6dc-resizefs ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jun 27 10:03:28 2017 # # Accessible filesystems, by reference, are maintained under ´/dev/disk´ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1 [/code] 3、关闭swap [code][root@sluo-ecs-e6dc-resizefs ~]# swapoff -a[/code] 4、删掉swap分区 [code][root@sluo-ecs-e6dc-resizefs ~]# parted /dev/xvda GNU Parted 3.1 Using /dev/xvda Welcome to GNU Parted! Type ´help´ to view a list of commands. (parted) p Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot 2 41.0GB 42.9GB 2000MB primary linux-swap(v1) (parted) rm 2 (parted) p Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot (parted) quit Information: You may need to update /etc/fstab. [root@sluo-ecs-e6dc-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot[/code] 5、用yum安装一个叫growpart的工具,growpart可能集成在cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init包里,可以直接yum install cloud-*确保growpart命令可用即可 [code][root@sluo-ecs-e6dc-resizefs ~]# yum install cloud-utils cloud-utils-growpart[/code] 6、使用growpart将swap扩容到第一分区的root分区 [code][root@sluo-ecs-e6dc-resizefs ~]# growpart /dev/xvda 1 CHANGED: partition=1 start=2048 old: size=79978496 end=79980544 new: size=83873317,end=83875365 [root@sluo-ecs-e6dc-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 42.9GB 42.9GB primary ext4 boot[/code] 7、关闭虚拟机转成私有镜像 [code][root@sluo-ecs-e6dc-resizefs ~]# poweroff Connection closed by foreign host. Disconnected from remote host(139.159.209.21:22) at 11:08:54. Type `help´ to learn how to use Xshell prompt.[/code] 8、用此新私有镜像发放虚拟机,指定系统盘100G,登陆虚拟机检查是不是自动扩容到root分区了 [code][root@ecs-b002-100g-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 107GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 107GB 107GB primary ext4 boot [root@ecs-b002-100g-resizefs ~]# blkid /dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4" [root@ecs-b002-100g-resizefs ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jun 27 10:03:28 2017 # # Accessible filesystems, by reference, are maintained under ´/dev/disk´ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1[/code] 9、OK成功了,是不是很简单啊。
-
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,于1998年发布到Linux社区中,它允许你在Linux系统上用简单的命令行管理一个完整的逻辑卷管理环境。 Physical volume (PV)、Volume group (VG)、Logical volume(LV)、 Physical extent (PE),下面我们用一个简单的图来说明下物理卷、卷组、逻辑卷他们之间的关系(此图只是个人理解,仅供参考),LVM 详解。 1454 简而言之:逻辑卷的创建,就是将多块硬盘创建物理卷,而将这些物理卷以逻辑的形式总成一个容器,然后从这个容器里面创建大小不同的分区文件,而这个容器就是所谓的逻辑卷,而从这个容器里创建大小不同的分区文件,这个分区文件就叫做逻辑卷。嘿嘿,你懂了吗? ^_^ …… 1、将物理分区与硬盘创建为物理卷(pvcreate) [code][root@sluo-ecs-683c ~]# fdisk -l ...... Disk /dev/xvdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/xvdc: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes [root@sluo-ecs-683c ~]# pvcreate /dev/xvdb /dev/xvdc Physical volume "/dev/xvdb" successfully created Physical volume "/dev/xvdc" successfully created [root@sluo-ecs-683c ~]# pvscan PV /dev/xvdc lvm2 [10.00 GiB] PV /dev/xvdb lvm2 [10.00 GiB] Total: 2 [20.00 GiB] / in use: 0 [0 ] / in no VG: 2 [20.00 GiB][/code] 2、将物理卷(pv)创建为卷组(vgcreate),名为VGtest [code][root@sluo-ecs-683c ~]# vgcreate VGtest /dev/xvd{b,c} Volume group "VGtest" successfully created [root@sluo-ecs-683c ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "VGtest" using metadata type lvm2[/code] 3、在卷组里创建逻辑卷并格式化、挂载使用 [code][root@sluo-ecs-683c ~]# lvcreate -L 10G -n LVtest1 VGtest Logical volume "LVtest1" created [root@sluo-ecs-683c ~]# lvscan ACTIVE ´/dev/VGtest/LVtest1´ [10.00 GiB] inherit [root@sluo-ecs-683c ~]# mke2fs -t ext4 /dev/VGtest/LVtest1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655360 inodes, 2621440 blocks 131072 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2151677952 80 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@sluo-ecs-683c ~]# mkdir /LVtest1 [root@sluo-ecs-683c ~]# mount /dev/VGtest/LVtest1 /LVtest1 [root@sluo-ecs-683c ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 36G 3.7G 33G 11% / devtmpfs 478M 0 478M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 6.8M 480M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/VGtest-LVtest1 9.8G 37M 9.2G 1% /LVtest1[/code]
-
本帖最后由 沙书记 于 2017-9-13 21:54 编辑1. 查看系统磁盘fdisk -lfdisk -lu 2.对磁盘进行分区fdisk /dev/sda 3. 分区格式化mkfs.ext2 /de/sda1 4. 挂载设备mount /dev/sda1 /目录 5.查看文件系统挂载情况mount 6.查看文件系统使用情况df -h 7. 查看设备的文件系统类型file -s /dev/sda1 8. 查看linux内核信息uname -a 9.创建多级目录mkdir -p /xx1/xx2/xx3 10. linux LVM 逻辑卷管理vgdisplay(查看VG)lvdisplay(查看lv)pvdisplay(查看PV)vgscanpvscanlvremove lv名称vgremovepvremove
-
本帖最后由 达康书记 于 2017-9-13 20:33 编辑经常碰到没有repo源或没有依赖包,无法安装cloud-init包。笔者结合自己的实战经验,给出如何利用Canonical社区的cloud-init源码编译成RPM包的方法,一解大家的苦恼。 1、从Canonical社区下载cloud-init-0.7.9.tar.gz源码包 [code][root@SZV1000153057 home]#wget https://launchpad.net/cloud-init/trunk/0.7.9/+download/cloud-init-0.7.9.tar.gz -O /root/rpmbuild/SOURCES[/code] 2、解压cloud-init [code][root@SZV1000153057 home]# tar -zxvf cloud-init-0.7.9.tar.gz [/code] 3、修改SPEC文件,见底下SPEC样例 [code][root@SZV1000153057 home]# scp -r cloud-init-0.7.9 /root/rpmbuild/BUILD [root@SZV1000153057 home]#cp /root/rpmbuild/BUILD/cloud-init-0.7.9/packages/redhat/cloud-init.spec.in /root/rpmbuild/SPECS/cloud-init-0.7.9.spec[/code] 4、编译cloud-init成rpm [code][root@SZV1000153057 home]# rpmbuild -ba /root/rpmbuild/SPECS/cloud-init-0.7.9.spec [root@SZV1000153057 home]# ls /root/rpmbuild/RPMS/x86_64/ cloud-init-0.7.9-0.el7.centos.x86_64.rpm cloud-init-debuginfo-0.7.9-0.el7.centos.x86_64.rpm[/code] 5、安装cloud-init rpm [code][root@SZV1000153057 home]# yum localinstall /root/rpmbuild/RPMS/x86_64/cloud-init-0.7.9-0.el7.centos.x86_64.rpm[/code] FYI,SPEC样例参考: [code][root@SZV1000153057 home]# cat /root/rpmbuild/SPECS/cloud-init-0.7.9.spec ## template: cheetah %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} # See: http://www.zarb.org/~jasonc/macros.php # Or: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets # Or: http://www.rpm.org/max-rpm/ch-rpm-inside.html Name: cloud-init Version: 0.7.9 Release: 0%{?dist} Summary: Cloud instance init scripts Group: System Environment/Base License: GPLv3 URL: http://launchpad.net/cloud-init Source0: https://launchpad.net/cloud-init/trunk/%{version}/+download/cloud-init-%{version}.tar.gz BuildArch: x86_64 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: python-devel BuildRequires: python-setuptools BuildRequires: python-cheetah # System util packages needed Requires: shadow-utils Requires: rsyslog Requires: iproute Requires: e2fsprogs Requires: net-tools Requires: procps Requires: shadow-utils Requires: sudo >= 1.7.2p2-3 # Install pypi ´dynamic´ requirements #for $r in $requires #Requires: ${r} #end for # Custom patches #set $size = 0 #for $p in $patches #Patch${size}: $p #set $size += 1 #end for #if $sysvinit #Requires(post): chkconfig #Requires(postun): initscripts #Requires(preun): chkconfig #Requires(preun): initscripts #end if #if $systemd BuildRequires: systemd-units Requires(post): systemd-units Requires(postun): systemd-units Requires(preun): systemd-units #end if %description Cloud-init is a set of init scripts for cloud instances. Cloud instances need special scripts to run during initialization to retrieve and install ssh keys and to let the user run various scripts. %prep %setup -q -n %{name}-%{version} # Custom patches activation #set $size = 0 #for $p in $patches #%patch${size} -p1 #set $size += 1 #end for %build %{__python} setup.py build %install %{__python} setup.py install -O1 \ --skip-build --root $RPM_BUILD_ROOT \ --init-system=systemd # Note that /etc/rsyslog.d didn´t exist by default until F15. # el6 request: https://bugzilla.redhat.com/show_bug.cgi?id=740420 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d cp -p tools/21-cloudinit.conf \ $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudinit.conf # Remove the tests rm -rf $RPM_BUILD_ROOT%{python_sitelib}/tests # Required dirs... mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/cloud mkdir -p $RPM_BUILD_ROOT/%{_libexecdir}/%{name} #if $systemd mkdir -p $RPM_BUILD_ROOT/%{_unitdir} cp -p systemd/* $RPM_BUILD_ROOT/%{_unitdir} #end if %clean rm -rf $RPM_BUILD_ROOT %post #if $systemd if [ $1 -eq 1 ] then /bin/systemctl enable cloud-config.service >/dev/null 2>&1 || : /bin/systemctl enable cloud-final.service >/dev/null 2>&1 || : /bin/systemctl enable cloud-init.service >/dev/null 2>&1 || : /bin/systemctl enable cloud-init-local.service >/dev/null 2>&1 || : fi #end if #if $sysvinit #/sbin/chkconfig --add %{_initrddir}/cloud-init-local #/sbin/chkconfig --add %{_initrddir}/cloud-init #/sbin/chkconfig --add %{_initrddir}/cloud-config #/sbin/chkconfig --add %{_initrddir}/cloud-final #end if %preun #if $sysvinit #if [ $1 -eq 0 ] #then # /sbin/service cloud-init stop >/dev/null 2>&1 || : # /sbin/chkconfig --del cloud-init || : # /sbin/service cloud-init-local stop >/dev/null 2>&1 || : # /sbin/chkconfig --del cloud-init-local || : # /sbin/service cloud-config stop >/dev/null 2>&1 || : # /sbin/chkconfig --del cloud-config || : # /sbin/service cloud-final stop >/dev/null 2>&1 || : # /sbin/chkconfig --del cloud-final || : #fi #end if #if $systemd if [ $1 -eq 0 ] then /bin/systemctl --no-reload disable cloud-config.service >/dev/null 2>&1 || : /bin/systemctl --no-reload disable cloud-final.service >/dev/null 2>&1 || : /bin/systemctl --no-reload disable cloud-init.service >/dev/null 2>&1 || : /bin/systemctl --no-reload disable cloud-init-local.service >/dev/null 2>&1 || : fi #end if %postun #if $systemd /bin/systemctl daemon-reload >/dev/null 2>&1 || : #end if %files /lib/udev/rules.d/66-azure-ephemeral.rules #if $sysvinit #%attr(0755, root, root) %{_initddir}/cloud-config #%attr(0755, root, root) %{_initddir}/cloud-final #%attr(0755, root, root) %{_initddir}/cloud-init-local #%attr(0755, root, root) %{_initddir}/cloud-init #end if #if $systemd /usr/lib/systemd/system-generators/cloud-init-generator %{_unitdir}/cloud-* %{_unitdir}/cloud-* #end if %{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager %{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient # Program binaries %{_bindir}/cloud-init* %{_libexecdir}/%{name}/uncloud-init %{_libexecdir}/%{name}/write-ssh-key-fingerprints # Docs %doc LICENSE ChangeLog TODO.rst requirements.txt %doc %{_defaultdocdir}/cloud-init/* # Configs %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg %dir %{_sysconfdir}/cloud/cloud.cfg.d %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/*.cfg %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/README %dir %{_sysconfdir}/cloud/templates %config(noreplace) %{_sysconfdir}/cloud/templates/* %config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf %{_libexecdir}/%{name} %dir %{_sharedstatedir}/cloud # Python code is here... %{python_sitelib}/*[/code]
-
本帖最后由 达康书记 于 2017-12-8 17:05 编辑公有云上云windows服务器登陆密码丢失了如何重置呢?公有云上讲求的是安全,安全,安全!大家不可能都像阿里云那样内置一个aliyun-service在虚拟机里完成各种注入,重置和分区等等的事后操作,这个之前一直被大家质疑和诟病,如你住个酒店,屋子里一直有个监控摄像头一样。 云大厂商亚马逊利用Ec2离线卸卷挂卷方式自助完成的,不过这个在华为云上暂时无法借鉴: [code]http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/ResettingAdminPassword_EC2Config.html[/code] 云大厂商微软云利用组策略方式离线卸卷挂卷方式自助完成的,这个也可以很好的在华为云上使用,具体参考: [code]https://docs.microsoft.com/en-us/azure/virtual-machines/windows/reset-local-password-without-agent[/code] 笔者结合多年的经验另辟蹊径,给出一个更加牛B更简单的自助方式重置华为云Linux弹性云服务器的密码,抛砖引玉,请轻拍。 1、关闭原云服务器,卸载其系统盘,并将系统盘挂载到临时云服务器。 [*]原弹性云服务器关机,进入详情页,并选择“云硬盘”页签。 说明:原弹性云服务器关机时,请勿执行强制关机操作,否则可能引起重置密码操作失败。 [*]单击系统盘所在行的“卸载”,卸载该系统盘。 [*]展开临时云服务器的详情页,并选择“云硬盘”页签。 [*]单击“挂载磁盘”,在“挂载磁盘”对话框中,选择2中卸载的系统盘,将其挂载到临时云服务器上。 [*]远程登录临时云服务器,并重置密码。 [*]在临时云服务器的“操作”列下,单击“远程登录”。 [*]执行以下命令,查看原云服务器上卸载的系统盘在临时云服务器上根分区位置(根分区在第一分区)。 [code][root@SZV1000153057 ~]# fdisk -l ....... Disk /dev/xvdb: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000a7cfb Device Boot Start End Blocks Id System /dev/xvdb1 * 2048 75497471 37747712 83 Linux /dev/xvdb2 75497472 83886079 4194304 82 Linux swap / Solaris ......[/code] 2、将上述磁盘的根分区挂载到/mnt目录下进行秘密修改。 [*]挂载磁盘分区 [code][root@SZV1000153057 ~]#mount /dev/xvdb1 /mnt/[/code] [*]使用python对密码:1234qwerP生成一个加密文,随机加盐sha-512单向hash如下 [code][root@SZV1000153057 ~]# python -c "import crypt, getpass;print crypt.crypt('1234qwerP')" $6$TWIuNPv3VartQ1Kh$onI0rkrg7V.Ya.rlrCbBNK0f.LiUk0xQ1anntlUv9TW6/CmncIWxYuKT0hRR0F.MmzC5tYKjNUhPXebyF511W1[/code] [*]将密文改到/mnt/etc/shadow, 修改前如下 [code][root@SZV1000153057 ~]# cat /mnt/etc/shadow | grep root root:$6$MYUPZkL4$/Qs1/7Cqtzn7Fjg5TdescgE9ztQKFZINa6hIzruKGVUE/JSty8/btMzl1H2sEQkd.a5fOU.XyU2HWJWTs/JSE0:17423:0:99999:7:::[/code] 更新修改后如下(第一个和第二个冒号之间): [code][root@SZV1000153057 ~]# cat /etc/shadow | grep root root:$6$TWIuNPv3VartQ1Kh$onI0rkrg7V.Ya.rlrCbBNK0f.LiUk0xQ1anntlUv9TW6/CmncIWxYuKT0hRR0F.MmzC5tYKjNUhPXebyF511W1:17423:0:99999:7:::[/code] [*]卸载挂载分区 [code][root@SZV1000153057 ~]#umount /mnt/[/code] 3、关闭临时云服务器,卸载原云服务器的系统盘,并将其重新挂载回原云服务器后执行重启操作。 [*]临时云服务器关机,并进入详情页,选择“云硬盘”页签。 [*]单击“卸载”,卸载2中临时挂载的数据盘。 [*]展开原Linux云服务器的详情页,选择“云硬盘”页签。 [*]单击“挂载磁盘”,在“挂载磁盘”对话框中,选择2中卸载的数据盘,并设置挂载点为“/dev/sda”。 [*]重启原云服务器。
-
Iptable的基本概念与结构 iptables组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。 iptables的结构:iptables -> Tables -> Chains -> Rules. 简单地讲,tables由chains组成,而chains又由rules组成,如下图所示。 1437 Iptables的命令详解 [code]iptables [-t table] command [match] [target] iptables [-t table] command [chain] [rules] [-j target][/code] 表(table) [-t table] 选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。 IPTABLES 规则(Rules) Rules包括一个条件和一个目标(target),如果满足条件,就执行目标(target)中的规则或者特定值;如果不满足条件,就判断下一条Rules。 目标值(TargetValues): ACCEPT – 允许防火墙接收数据包 REJECT – 防火墙拒绝数据包,与”DROP”相比会有回应产生 DROP – 防火墙丢弃包 REDIRECT – 防火墙将数据包重定向 SNAT – 源地址翻译,将内网地址转换成公网的合法地址 DNAT – 目标地址翻译,多用在内部服务器的发布 MASQUERADE – 地址伪装,用在外网口地址经常发生变动(如pppoe拨号上网)的情况下 QUEUE – 防火墙将数据包移交到用户空间 RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。 IPTABLES命令参数 [code]参数 功能 样例及说明 -A, --append 新增规则(追加方式)到某个规则链中,该规则将会成为规则链中的最后一条规则。 iptables -A INPUT ... -D, --delete 从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。 iptables -D INPUT 1 删除INPUT链中的第一条规则 -I, --insert **一条规则 iptables -I INPUT 1 --dport 80 -j ACCEPT **一条规则,原本该位置(位置1)上的规则将会往后移动一个顺位,变成第二条规则 -R, --replace 取代现行规则,规则被取代后并不会改变顺序 iptables -R INPUT 1 -s 192.168.0.1 -j DROP -L, --list 列出某规则链中的所有规则。 iptables -L INPUT -S, --list-rules 直接列出某规则链中的规则。 iptables -S INPUT -F, --flush 删除某规则链中的所有规则。 iptables -F INPUT -Z, --zero 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。 iptables -Z INPUT -N, --new-chain 定义新的规则链。 iptables -N allowed 定义一条名为“allowed”的新链 -X, --delete-chain 删除某个规则链。 iptables -X allowed 删除一条名为“allowed”的新链 -P, --policy 定义过滤政策。也就是未符合过滤条件之封包,预设的处理方式。 iptables -P INPUT DROP -E, --rename-chain 修改某自订规则链的名称。 iptables -E allowed disallowed 将名为“allowed”的链更名为”disallowed” -h 显示帮助信息 iptables -h -p, --protocol 比对通讯协议类型是否相符,可以使用 ! 运算子进行反向比对,例如:-p ! tcp iptables -A INPUT -p tcp (指定协议) -p all 所有协议, -p !tcp 去除tcp外的所有协议。 -s, --src,--source 用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,比对 IP 时可以使用 ! 运算子进行反向比对 iptables -A INPUT -s 192.168.1.1 匹配源地址192.168.1.1 -d, --dst,--destination 用来比对封包的目的地 IP,设定方式同上。 iptables -A INPUT -d 192.168.1.1 -j, --jump 用来指定要进行的处理动作 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 -g, --goto 用于指明包需要进行一个用户自定义链的处理。当使用--jump转到某个链中时,return不会继续后面的链中处理,而是返回至调用--jump的链中。而--goto与之不同。 iptables -N TESTA iptables -A FORWARD -s 192.168.1.1 -j TESTA 上面的例子中-j(jump)相当于调用,自定义链结束后返回 iptables -N TESTB iptables -A FORWARD -s 192.168.1.1 -j TESTB -g(goto)一去不复返 -i, --in-interface 用来比对封包是从哪个网卡进入,可以使用通配字符 + 来做大范围比对 iptables -A INPUT -i eth0 -i eth+ 表示所有的 ethernet 网卡 -i ! eth0 表示eth0以外的所有ethernet网卡 -o, --out-interface 用来比对封包要从哪个网卡送出,设定方式同上。 iptables -A FORWARD -o eth0 -f, --fragment 这意味着在分片的包中,规则只询问第二及以后的片。自那以后由于无法判断这种把包的源端口或目标端口(或者是ICMP类型的),这类包将不能匹配任何指定对他们进行匹配的规则。如果"!"说明用在了"-f"标志之前,表示相反的意思。 iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT 指定第二个及其以后的 ip 碎片的数据流向 -c, --set-counters 在创建或更改规则时设置计数器 --set-counters 20 4000,意思是让内核把包计数器设为20,把字节计数器设为4000。 -v, --verbose 在查看规则时显示详细信息 iptables -t filter -L -n -v --line-number -n, --numeric 在查看规则时以数字形式显示 iptables -t filter -L -n -v --line-number -x, --exact 扩展数字,显示包和字节计数器的精确值,代替用K,M,G表示的约数。这个选项仅能用于 -L 命令。 iptables -t filter -L -n –v -x --line-number --sport, --source-port 用来比对封包的来源端口号,可以比对单一端口,或是一个范围 :--sport 22:80,表示从 22 到 80 端口之间都算是符合件 --dport, -destination-port 用来比对封包的目的端口号,设定方式同上。 iptables -A INPUT -p tcp --dport 22 --tcp-flags 比对 TCP 封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号第二部分则列举前述旗号中哪些有被设,未被列举的旗号必须是空的。TCP 状态旗号包括:SYN(同步)、ACK(应答)、 FIN(结束)、RST(重设)、URG(紧急)PSH(***推送)等均可使用于参数中,除此之外还可以使用关键词 ALL 和 NONE 进行比对。比对旗号时,可以使用 ! 运算子行反向比对。 iptables -p tcp --tcp-flags SYN,FIN,ACK SYN --syn 用来比对是否为要求联机之 TCP 封包 iptables -p tcp --syn -m multiport --source-port 用来比对不连续的多个来源埠号,一次最多可以比对 15 个埠,可以使用 ! 运算进行反向比对。 iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110 -m multiport --destination-port 用来比对不连续的多个目的地埠号,设定方式同上。 iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110 -m multiport --port 这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。 iptables -A INPUT -p tcp -m multiport --port 22,53,80,110 注意:在本范例中,如果来源端口号为 80目的地埠号为 110,这种封包并不算符合条件。 --icmp-type 用来比对 ICMP 的类型编号,可以使用代码或数字编号来进行比对。 iptables -A INPUT -p icmp --icmp-type 8 可以使用iptables -p icmp --help 来查看有哪些代码可用。 -m limit --limit 用来比对某段时间内封包的平均流量 iptables -A INPUT -m limit --limit 3/hour 表示每小时平均流量是否超过一次 3 个封包。除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。除了进行封数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。 --limit-burst 用来比对瞬间大量封包的数量 iptables -A INPUT -m limit --limit-burst 5 比对一次同时涌入的封包是否超过 5 个(这是默认值),超过此上限的封将被直接丢弃。 -m mac --mac-source 用来比对封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和 Postrouting规则链上,这是因为封包要送出到网后,才能由网卡驱动程序透过 ARP 通讯协议查出目的地的 MAC 地址,所以 iptables 在进行封包比对时,并不知道封包会送到哪个网络接口去。 iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01 --mark 用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过 MARK 处理动作,将该封包标示一个号码,号码最不可以超过 4294967296。 iptables -t mangle -A INPUT -m mark --mark 1 -m owner --uid-owner 用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用 root 或其它身分将敏感数据传送出,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。 iptables -A OUTPUT -m owner --uid-owner 500 -m owner --gid-owner 用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。 iptables -A OUTPUT -m owner --gid-owner 0 -m owner --sid-owner 用来比对来自本机的封包,是否为某特定联机(Session ID)的响应封包,使用时机同上。 iptables -A OUTPUT -m owner --sid-owner 100 -m state --state 用来比对联机状态,联机状态共有四种:INVALID、ESTABLISHED、NEW 和 RELATED。 INVALID 表示该封包的联机编号(Session ID)无法辨识或编号不正确。 ESTABLISHED 表示该封包属于某个已经建立的联机。 NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。 RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA 联机必定是源自某个 FTP 联机。 iptables -A INPUT -m state --state RELATED,ESTABLISHED --line-numbers 在列出规则的时候加上行号 iptables -t filter -L -n -v --line-number --modprobe 添加规则时加载必需的模块 iptables -t nat -A PREROUTING -d 192.168.1.44 -p tcp --dport 21 -i eth0 -j DNAT --to 192.168.2.100 --modprobe=ip_nat_ftp[/code]
-
大家使用华为云Linux服务器时经常使用常用命令汇总,高手请飘过,拍砖请绕道。 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent) cd 切换目录 touch 创建空文件 echo 创建带有内容的文件。 cat 查看文件内容 cp 拷贝 mv 移动或重命名 rm 删除文件 -r 递归删除,可删除子目录及文件 -f 强制删除 find 在文件系统中搜索某文件 wc 统计文本中行数、字数、字符数 grep 在文本文件中查找某个字符串 rmdir 删除空目录 tree 树形结构显示目录,需要安装tree包 pwd 显示当前目录 ln 创建链接文件 more、less 分页显示文本文件内容 head、tail 显示文件头、尾内容 ctrl+alt+F1 命令行全屏模式 系统管理命令 stat 显示指定文件的详细信息,比ls更详细 who 显示在线登陆用户 whoami 显示当前操作用户 hostname 显示主机名 uname 显示系统信息 top 动态显示当前耗费资源最多进程信息 ps 显示瞬间进程状态 ps -aux du 查看目录大小 du -h /home带有单位显示目录信息 df 查看磁盘大小 df -h 带有单位显示磁盘信息 ifconfig 查看网络情况 ping 测试网络连通 netstat 显示网络状态信息 man 命令不会用了,找男人 如:man ls clear 清屏 alias 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。 打包压缩相关命令 gzip: bzip2: tar: 打包压缩 -c 归档文件 -x 压缩文件 -z gzip压缩文件 -j bzip2压缩文件 -v 显示压缩或解压缩过程 v(view) -f 使用档名 例: tar -cvf /home/**.tar /home/** 只打包,不压缩 tar -zcvf /home/**.tar.gz /home/** 打包,并用gzip压缩 tar -jcvf /home/**.tar.bz2 /home/** 打包,并用bzip2压缩 当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。 关机/重启机器 shutdown -r 关机重启 -h 关机不重启 now 立刻关机 halt 关机 reboot 重启 Linux管道 将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。 例:grep -r "close" /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。 Linux软件包管理 dpkg (Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。 比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。 sudo dpkg -i tree_1.5.3-1_i386.deb 安装软件 sudo dpkg -r tree 卸载软件 注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等; APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。 依然以tree为例 sudo apt-get install tree 安装tree sudo apt-get remove tree 卸载tree sudo apt-get update 更新软件 sudo apt-get upgrade 将.rpm文件转为.deb文件 .rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。 sudo alien **.rpm vim使用 vim三种模式:命令模式、**模式、编辑模式。使用ESC或i或:来切换模式。 命令模式下: :q 退出 :q! 强制退出 :wq 保存并退出 :set number 显示行号 :set nonumber 隐藏行号 /apache 在文档中查找apache 按n跳到下一个,shift+n上一个 yyp 复制光标所在行,并粘贴 h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→) 用户及用户组管理 /etc/passwd 存储用户账号 /etc/group 存储组账号 /etc/shadow 存储用户账号的密码 /etc/gshadow 存储用户组账号的密码 useradd 用户名 userdel 用户名 adduser 用户名 groupadd 组名 groupdel 组名 passwd root 给root设置密码 su root su - root /etc/profile 系统环境变量 bash_profile 用户环境变量 .bashrc 用户环境变量 su user 切换用户,加载配置文件.bashrc su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile 更改文件的用户及用户组 sudo chown [-R] owner[:group] {File|Directory} 例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop 要想切换此文件所属的用户及组。可以使用命令。 sudo chown root:root jdk-7u21-linux-i586.tar.gz 文件权限管理 三种基本权限 R 读 数值表示为4 W 写 数值表示为2 X 可执行 数值表示为1 例如,当前目录下一个文件jdk-7u21-linux-i586.tar.gz的权限为-rw-rw-r-- -rw-rw-r--一共十个字符,分成四段。 第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录 第二三四个字符“rw-”表示当前所属用户的权限。 所以用数值表示为4+2=6 第五六七个字符“rw-”表示当前所属组的权限。 所以用数值表示为4+2=6 第八九十个字符“r--”表示其他用户权限。 所以用数值表示为2 所以操作此文件的权限用数值表示为662 更改权限 sudo chmod [u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录名 例如:有一个文件filename,权限为“-rw-r----x” ,将权限值改为"-rwxrw-r-x",用数值表示为765 sudo chmod u+x g+w o+r filename 上面的例子可以用数值表示 sudo chmod 765 filename
-
XEN和KVM镜像如何兼容统一,必须将Linux原生xen-pv和virtio前端驱动装载到动到initrd中,这个如何做到的呢? 只需要添加module形式存在OS内的驱动,在内核中以build-in形式存在的驱动不需要添加。 [*]RHEL、CentOS、Oracle系列操作系统,以CentOS 7.1为例,需修改“/etc/dracut.conf”文件,在add-driver项中添加xen-pv以及virtio的驱动(xen-pv驱动:xen-blkfront、xen-netfront;virtio驱动:virtio_blk、virtio_scsi 、virtio_net、virtio_pci、virtio_ring、virtio),驱动名之间以空格隔开,保存并退出/etc/dracut.conf文件,执行dracut -f命令,重新生成initrd。 [*]Ubuntu和Debian系列系统,修改/etc/initramfs-tools/modules文件,添加xen-pv以及virtio的驱动(xen-pv驱动:xen-blkfront、xen-netfront;virtio驱动:virtio_blk、virtio_scsi 、virtio_net、virtio_pci、virtio_ring、virtio),驱动名之间是空格隔开,保存并退出/etc/initramfs-tools/modules文件,执行update-initramfs -u命令,重新生成initrd。 [*]SUSE和openSUSE系列系统,修改/etc/sysconfig/kernel文件,在INITRD_MODULES=""添加xen-pv以及virtio的驱动,(xen-pv驱动:xen_vnif、xen_vbd、xen_platform_pci;virtio驱动:virtio_blk、virtio_scsi 、virtio_net、virtio_pci、virtio_ring、virtio),驱动名之间是空格隔开,执行mkinitrd命令,重新生成initrd。 1、以CentOS为例,修改/etc/dracut.conf在add-driver项中添加xen-pv和virtio的驱动(具体格式要根据OS本身的要求来决定): [code][root@CTU10000xxxxx ~]# vim /etc/dracut.conf # additional kernel modules to the default add_drivers+="xen-blkfront xen-netfront virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio" ……[/code] 2、保存并退出/etc/dracut.conf文件,执行dracut -f命令,重新生成initrd。 3、检查是否已经成功装载了XEN和KVM的PVOPS相应模块。 [code][root@CTU10000xxxxx home]# lsinitrd /boot/initramfs-`uname -r`.img | grep xen -rwxr--r-- 1 root root 54888 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/block/xen-blkfront.ko -rwxr--r-- 1 root root 45664 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/net/xen-netfront.ko [root@CTU10000xxxxx home]# lsinitrd /boot/initramfs-`uname -r`.img | grep virtio -rwxr--r-- 1 root root 23448 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/block/virtio_blk.ko -rwxr--r-- 1 root root 50704 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/net/virtio_net.ko -rwxr--r-- 1 root root 28424 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/scsi/virtio_scsi.ko drwxr-xr-x 2 root root 0 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio -rwxr--r-- 1 root root 14544 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio.ko -rwxr--r-- 1 root root 21040 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio_pci.ko -rwxr--r-- 1 root root 18016 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio_ring.ko[/code] 说明: 如果误将build-in形式存在内核中的驱动添加到initrd或initramfs文件中,不会影响虚拟机正常使用,这里全写进去只是为了修改的方便,但是使用lsinitrd命令无法检查到。可使用如下方法确定这些驱动是否以build-in形式存在内核中,例如: [code][root@ CTU10000xxxxx home]# cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y [root@ CTU10000xxxxx home]# cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y[/code]
-
Linus Torvalds 在内核邮件列表上宣布释出 Linux 4.13。主要特性(kernelnewbies 的页面还是空白)包括: 通过结构布局随机化加固内核, 原生支持 TLS 协议, 改善大页交换, 改进写回错误处理, 更好的支持异步 I/O, 改进电源管理, 以及因为 SMB 1.0 相关的漏洞 cifs 挂载默认为 SMB 3.0。 Fedora 的 Yum 或将在一两年内退休 随着 DNF 软件包管理器在最近的 Fedora 版本里面工作日益工作良好,我们可以预见到 Yum 将在之后的 Fedora 版本中谢幕。当然,Yum 还一直广泛用在 RHEL 7 中,而在 Fedora 这边,估计在大约一年后的 Fedora 28 乃至 29 中正式退休。 在 Fedora 开发者邮件列表中有一个讨论 Yum 退休的新话题。看起来在 Fedora 28 或 29 的时候会移除 Yum。DNF 已经提供了与 Yum 一样的能力。 Fedora 也在开发一个 “富依赖” 的支持,而这个功能 Yum 不支持,所以这也表明了 Yum 将在以后的 Fedora 系统中消失。 邮件列表中也提到了 Yum 和 DNF 还存在一些差异需要解决,但是看起来在 2018 年应该可以看到希望。
人生苦短,我用Python 发表于2017-09-06 09:20:54 2017-09-06 09:20:54 最后回复 人生苦短,我用Python 2017-09-06 09:20:54
3467 0 -
1、服务 OS-Linx-关闭不需要的服务 建议项:关闭不必要的服务(普通服务和xinetd服务); 操作指南:执行chkconfig --list查看系统启动的服务,关闭不必要的服务; 如:关闭xinetd服务:chkconfig --level 123456 xinetd off 检测方法:逐个检查系统服务,检查系统是否有不必要的服务; 判定条件:支持系统最小化运行的服务。 补充说明:常见不必要服务:bootps,pure-ftpd,pppoe,sendmail,isdn,zebra,cupsd,cups-config-daemon,hplip,hpiod,hpssd,bluetooth,hcid,hidd,sdpd,dund,pand,rsh 2、日志 编号:OS-Linux-审计日志设置建议项:启用syslog系统日志审计功能操作指南: CentOS5.X检查:/etc/rsyslog.conf CentOS6.X及以上,Fedora,Debain,Ubuntu检查:/etc/rsyslog.conf SUSE检查:/etc/syslog-ng/syslog-ng.conf cat /etc/syslog.conf 查看是否有:authpriv.* /var/log/secure检测方法:远程ssh登录成功后检查secure日志是否记录认证信息判定条件:有成功登录的记录认证信息判定为配置成功;补充说明: 将authpirv设备的任何级别的信息记录到/var/log/secure文件中,这主要是一些和认证、权限使用相关的信息。OS-Linux-日志权限设置建议项:系统日志文件由root创立并且其它用户不可读取(日志文件权限不高于600);操作指南:查看如下等日志的访问权限:#ls –l查看下列日志文件权限 /var/log/messages、/var/log/secure、/var/log/auth、/var/log/maillog、/var/log/cron、/var/log/spooler、/var/log/boot.log 如:修改message文件权限,执行命令:chmod 600 messages检测方法:使用ls -l 命令依次检查系统日志的读写权限。判定条件:日志文件权限小于600判断为成功;补充说明:
-
本部分根据需要,且使用vsftp做为文件服务器时需要参照本部分设置,其它文件系统不涉及;编号:OS-Linux-vsftp配置建议项:安装最新的vsftp服务器操作指南: 执行rpm -qa|grep vsftpd检查是否安装最新的vsftpd,如果没有安装则执行yum install vsftpd安装最新的软件vsftpd包,安装完成后执行service vsftpd start启动vsftp服务。检测方法:执行service vsftpd stauts检查服务是否启动。判定条件:service vsftpd stauts响应OK表示服务正常启动。编号:OS-Linux-禁用匿名登录vsftp服务建议项: vsftp不能匿名登录操作指南: 执行:vim /etc/vsftpd/vsftpd.conf查看: anonymous_enable=NO -----配置为NO为禁止匿名登录,必须要创建用户认证后登录;检测方法:匿名登录vsftp查看登录是否成功;判定条件:匿名登录不成功表示配置正常;编号:OS-Linux-banner信息修改建议项:禁止显示vsftp banner信息操作指南:执行:vim /etc/vsftpd/vsftpd.conf查看: 去掉ftpd_banner=Welcome…的注释 配置完成后重启vsftp服务。检测方法:远程登录FTP查看banner是否已修改。判定条件:banner信息已修改表示配置正常。编号:OS-Linux-限制FTP用户目录建议项:每个FTP用户只能在自己的目录下活动,不能向上遍历;操作指南: 执行:vim /etc/vsftpd/vsftpd.conf查看: chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 新建/etc/vsftpd/chroot_list,添加用户名,如:user1 #表示user1登录FTP后,只允许在user1用户的home目录中活动 配置完成后重启服务。检测方法:远程登录FTP查看是否可以向上遍历到根目录。判定条件:不能遍历表示表示配置正常。编号:OS-Linux-启用FTP日志记录建议项:开启FTP的日志记录功能操作指南: 执行:vim /etc/vsftpd/vsftpd.conf修改以下行,启用日志记录: xferlog_enable=YES xferlog_std_format=YES 如果需要自定义日志存放位置,xferlog_file=/var/log/ftplog 配置完成后重启服务。检测方法:远程登录FTP查看日志记录是否成。判定条件:能正常记录日志表示配置正常。编号:OS-Linux-FTP网络连接限制建议项:FTP的最大连接数和传输速度必须限制操作指南: 执行:vim /etc/vsftpd/vsftpd.conf修改以下行,启用日志记录: anon_max_rate=0:限制匿名最大传输速率(字节/秒) local_max_rate=0:限制用户最大传输速率(字节/秒) max_clients=0:限制并发客户端连接数 max_per_ip=0:限制同一 IP 地址的并发连接数 配置完成后重启服务。检测方法:查看配置选项是否已修改。判定条件:已修改表示配置正常。