Linux下关于用户账户的几个文件解析
Linux是一个多用户系统,但是对于一个多用户共存的系统中,当然不能够出现用户相互越权等一系列的安全问题,所以如何正确的管理账户成为了Linux系统中至关重要的一环。
Linux是一个多用户系统,但是对于一个多用户共存的系统中,当然不能够出现用户相互越权等一系列的安全问题,所以如何正确的管理账户成为了Linux系统中至关重要的一环。
前期准备
1.配置hostname(可选,了解)
在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty)。“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如Linuxidc)。
在CentOS7以前,配置主机的静态hostname是在/etc/sysconfig/network中配置HOSTNAME字段值来配置,而CentOS7之后若要配置静态的hostname是需要在/etc/hostname中进行。
进入Linux系统,命令行下输入hostname可以看到当前的hostname,而通常默认的hostname是local.localadmin。
本次试验环境在CentOS7下,所以我们编辑/etc/hostname文件,试验hostname为:hadoop.w4ng,填入其中,重启Linux,可以看到已经生效。
2.配置静态IP
同样,在CentOS7以后,其网卡配置已经有原先的/etc/sysconfig/network/network-scripts下面的ifcfg-eth0等改名为乐ifcfg-enpXsY(en表示ethnet,p表示pci设备,s表示soket)
本人这里有两个ifcfg文件是因为配置了两块网卡分别做NAT以及与虚拟机Host-Only两个功能,实现双网卡上网
打开ifcfg-enp0s8,配置如下:
1 | DEVICE=enp0s8 #设备名 |
3.配置hosts
打开/etc/hosts
配置为如下的:
1 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 |
配置hosts的理由是后期hadoop配置中相关的主机填写我们都是使用域名的形式,而IP地址与域名的转换在这里进行查询(还有DNS,但是这里不讨论)。
4.关闭防火墙
CentOS7与6的防火墙不一样。在7中使用firewall来管理防火墙,而6是使用iptables来进行管理的。当然,我们可以卸载7的firewall安装6的iptables来管理。本人就切换回了6的防火墙管理方式。
1 | [root@localhost ~]#servcie iptables stop # 临时关闭防火墙 |
5.JDK与Hadoop的安装
下载JDK8
下载Hadoop3-binary
下载完毕将文件传到主机中。
在/usr/local/下创建java文件夹,并将JDK解压至该文件夹下。
在根目录下创建/bigdata文件夹,并将Hadoop解压至其中。
1 | 解压命令 tar -zxv -f [原压缩文件.tar.gz] -C [目标文件夹目录] # 实际命令没有中括号,其次,命令参数重-z对应gz压缩文件,若为bz2则使用-j |
在JDK解压完成后,在~/.bash_profile中配置环境变量 点这里看/etc/bashrc、/.bashrc、/.bash_profile关系
1 | export JAVA_HOME=/usr/local/java/jdkx.x.x_xxx |
配置完成,保存退出并 source ~/.bash_profile
hadoop无需配置环境变量
6.配置hadoop
在hadoop的home下,进入etc文件夹,有五个主要的文件需要进行配置:
1 | hadoop-env.sh |
基本配置如下
1 | 1.配置 hadoop-env.sh |
然后配置相关服务启动过程中需要的配置变量:
进入${HADOOP_HOME}/sbin中,在start-dfs.sh与stop-dfs.sh中添加字段:
1 | HDFS_DATANODE_USER=root |
在start-yarn.sh与stop-yarn.sh中添加:
1 | YARN_RESOURCEMANAGER_USER=root |
配置完成以后,进行hadoop的文件系统格式化,执行
1 | ${HADOOP_HOME}/bin/hdfs namenode -format |
最后是启动服务:
1 | 执行${HADOOP_HOME}/sbin/start-all.sh # 他会去调用start-dfs.sh与start-yarn.sh |
根据配置中我们都是配置的root用户,显然需要我们以root身份进行,且过程中需要root密码。当然,通过ssh免密可以方便很多。启动完成以后,命令行中使用jps命令打印Java进程,会看到下图五个进程(忽略Jps进程):
当然,Hadoop在服务启动以后以提供web端:
1 | visit hdfs manage page |
最近开始学习Spring,在看《Spring实战4th》3.3“处理自动装配的歧义性”那一部分时,书上提到(也从网上看到了类似的用法):
通过在一个类上加注@Component以及@Qualifier(“x”)可以为其配置限定符来标识区分同一个接口下的不同实现类,用以在需要进行@Autowired自动装配的地方使用@Qualifier(“x”)来指定特定的实现类对象bean。
尽管从Mac的Terminal可以看出,macOS与UNIX、Linux或多或少都有血缘关系(shell、bash等),但是在mac进行Linux开发,或者把macOS直接当作Linux来使用依然是说不过去的,这其中包括一些命令行的使用,一些基本的文件夹体系等(如,在Linux上的/home目录与在macOS下的/Users)不一致。如果想要在macOS上进行Linux的学习,或者进行Linux开发,最完美的方案自然是安装虚拟机。
众所周知,在Java中,存在着值比较与应用比较两种情况。例如,如下的比较,可以根据值比较与引用比较来跟容易的判断出结果来:
1 | int a = 123; |
这里,a与b由于是基本类型,所以Java在比较的时候直接就是按值来比较,而下面的s1与s2则是由于分别指向内容为“123”的字符串对象引用(关于string的细节,见本人的另一篇文章),而这两个字符串的地址并不一样,所以结果是false。
那么,今天要讨论的是,对于Java自动拆装箱的问题的深入探讨。如下所示,请问结果是什么呢?
1 | Integer a = 666; |
结果是false,您可能会说,这有什么好问的,Integer对象的比较,引用的比较,而这两个只是值相同,而对象不同的Integer对象罢了,所以当然为false。好,那么我再问你,下面的结果是什么?
1 | Integer a = 100; |
您可能说,哇,当我傻吗,当然还是false了。可是,结果是true。
为什么同样的情况下,当值变小了,结果就变为true了呢。
其实,Java中,对于可装箱的对象类型,都存在一个1字节的范围:-128到127。在这个范围类的数字,Java认为是常用的数字,所以自动进行了值比较,而不是进行引用的比较。所以,无论是Long还是Integer,只有你的值在-128到127,这两个对象的比较直接按照其所存储的值来进行。就像如下的情况:
1 | Integer a = 128; |
关于String相关内容的学习,历来都是Java学习必不可少的一个经历。
以前一直想要好好总结一下String的相关的知识点,苦于没有时间,终于在今天有一个闲暇的时间来好好总结一下,也希望这文章能够加深我对于String相关内容的理解(ps:在我看来,学习某些知识点的时候把学到的想到的都记录下一方面能够加深自己学习印象,二者能够锻炼锻炼我的文笔)
曾几何时,我也是记得MySQL root密码的人,想要修改root密码还不是轻而易举的事?下面前三种修改改方式都是在记得密码的情况下进行修改,如果你忘记了原本的root,请直接跳至 终极