一、知识点扩充
1.嵌入式Linux 开发与运维 、安卓手机 、
Linux真正的用武之地是蓬勃发展的信息接入设备市 场。这些新兴的设备只有有限的内存,价格也只有几百美元,因此开发者需要新的操作 系统来代替像Windows这样昂贵、臃肿的操作系统。而Linux具有的短小、可定制、对Internet 极好的兼容性和低价特性使它成为这一领域的最佳选择。正是由于这一原因,软件开发 商已经推出了可以在手机、Palm装置甚至汽车上运行的Linux版本。
此外,Linux还非常适合于各种专用计算机,例如收银机 和其他专用终端等。在这些应用领域,Linux是一个廉价、连网性能好且能替代Windows 等通用操作系统的替代品。
2.回环网址
:IPv6的回环地址是 0:0:0:0:0:0:0:1,相当于IPv4中的127.0.0.1
主要作用有两个:一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题;
另一个作用是某些SERVER/CLIENT的应用程序在运行时需调用服务器上的资源,一般要指定SERVER的IP地址,
但当该程序要在同一台机器上运行而没有别的SERVER时就可以把SERVER的资源装在本机,SERVER的IP地址设为127.0.0.1同样也可以运行。
本地回环地址指的是以127开头的地址(127.0.0.1 - 127.255.255.254),通常用127.0.0.1来表示。
3.什么是DNS
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。[1]
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
4.cat !$
最近还找到一种快速回退上一条历史的一些小技巧,暂记录之。
1、 除了方向键上,还可以用“!!”代表上一条输入的命令,用这个的好处在于可以将这两个字符放在命令行任何位置以便于构成新的命令。
例如:
$./some-shell-command
$cat !!
则后一条命令就相当于cat ./some-shell-command,这样做比先按方向键上回退一条命令,然后定位到开始,插入cat要快捷得多。
2、 除了!!,!$代表得是上一条命令中最后一个parameter,这是个更有用的变量,例如:
$ls /some-path-to-a-directory
$cat !$/some-file.txt
如果some-path-to-a-directory不幸为一个非常长的路径的时候,使用!$恰好就能省去输入这个超长路径的麻烦,这条命令实际 上就相当于cat /some-path-to-a-directory/some-file.txt
3、 !str代表以历史命令中最近一条以str开头的命令。
比如!ssh 就是最后一次执行ssh的命令
4、 !?str?代表历史命令中最近一条包含str的命令。
5、 !n和!-n,前者代表history命令显示出来前面的条目数为n的那条命令,后者代表当前命令条目数减去n的那条命令,例如!-3就代表3 条前的那个命令。
对比起来,1和2是相当实用的,剩下3条记得住就用,记不住也无妨了。
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
设置密钥私钥
http://www.vpser.net/security/linux-ssh-authorized-keys-login.html
. 配置Linux中的ssh
[root@Centos1 ~]# mkdir /root/.ssh #创建.ssh隐藏目录
[root@Centos1 ~]# chmod 700 /root/.ssh/ #将.ssh目录权限修改为700
[root@Centos1 ~]# vim /root/.ssh/authorized_keys #在.ssh目录下创建公钥文件
[root@Centos1 ~]# chmod 700 /root/.ssh/ #将.ssh目录权限修改为700
[root@Centos1 ~]# vim /root/.ssh/authorized_keys #在.ssh目录下创建公钥文件
将本地的公钥文件里的密码复制到authorized_keys内
[root@Centos1 ~]# chmod 600 /root/.ssh/authorized_keys #将公钥文件权限修改为600
[root@Centos1 ~]# service sshd restart #重启sshd服务
[root@Centos1 ~]# vim /etc/selinux/config #关闭selinux防火墙
………………………………/省略
SELINUX=disabled #将enforcing修改为disabled
………………………………/省略
暂时关闭selinux:setenforce 0: 永久性关闭: vi /etc/linux/config selinux=disable (ssh 登陆,密钥登陆)
去除防火墙规则: iptables -F 保存防火墙规则: /etc/init.d/iptables save
6.SElinux
SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNⅨ权限更好的访问控制。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
#SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
SELINUX有「disabled」「permissive」,「enforcing」3种选择。
Disabled就不用说了,permissive就是Selinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来。在我们开发策略的时候非常的有用。
相当于Debug模式。
Enforcing就是你违反了策略,你就无法继续操作下去。
SELINUXTYPE呢,现在主要有2大类,一类就是红帽子开发的targeted,它只是对于,主要的网络服务进行保护,比如 apache,sendmail,bind,postgresql等,不属于那些domain的就都让他们在unconfined_t里,可导入性高,可用性好但是不能对整体进行保护。
另一类是Strict,是NAS开发的,能对整个系统进行保护,但是设定复杂,我认为虽然它复杂,但是一些基本的会了,还是可以玩得动的。
上面的变更可以让它无效。
[root@python sysconfig]# /usr/sbin/getenforce
Enforcing
确认有效后重新对文件系统赋予标签:
[root@python sysconfig]# /sbin/fixfiles relabel
或者
[root@python /]# touch /.autorelabel
然后 reboot,你就在secure的Linux环境下工作了。