当前位置 : 首页 » 文章分类 :  开发  »  Linux-常用配置

Linux-常用配置

[TOC]


用户和组管理

/etc/passwd

在该文件中,每一行用户记录的各个数据段用“:”分隔,分别定义了用户的各方面属性。各个字段的顺序和含义如下:
注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序

口令(passwd):系统用口令来验证用户的合法性。超级用户root或某些高级用户可以使用系统命令passwd来更改系统中所有用户的口令,普通用户也可以在登录系统后使用passwd命令来更改自己的口令。
现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。


/etc/group

/etc/group文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中。具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。
将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:
组名:口令:组标识号:组内用户列表
组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是x,密码存放在/etc/gshadow中
组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。


iptables防火墙

iptables简介

iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。

iptables安装

centos最小化安装也自带iptables防火墙,如果系统中没有iptables,可使用yum安装:
yum install iptables
如何检查系统中是否有iptables?
执行命令:service iptables status查看防火墙状态,如果提示 iptables:unrecognized service 则表示系统尚未安装。


iptables配置

安装完iptables后,配置文件默认在/etc/sysconfig/iptables

查看防火墙状态

查看防火墙配置
/etc/init.d/iptables statusservice iptables status
结果为:

Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

开放指定端口

添加规则开放80端口:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
保存配置:
/etc/rc.d/init.d/iptables saveservice iptables save
显示

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

或者使用vi打开/etc/sysconfig/iptables文件修改手动添加

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

重启防火墙:
service iptables restart
再次查看防火墙状态可见多了一条

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80

表明80端口开启成功

临时停止防火墙

service iptables stop
重启系统后失效,防火墙依然存在

重启防火墙

service iptables restart

永久关闭防火墙

chkconfig iptables off
即关闭iptables开机自启动
执行chkconfig命令,iptables行0-6全是off说明成功关闭:

iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off

永久关闭后启用

chkconfig iptables on
即添加iptables开机自启动


/etc/sysconfig/network

设置主机名

临时设置
使用hostname命令设置主机名。格式为:hostname 主机名,如下:
hostname hadoop1
该设置为临时生效。重新启动系统后,设置失效。

永久设置
编辑/etc/sysconfig/network文件中的HOSTNAME字段就可以修改主机名。如下所示:

NETWORKING=yes                                                                    
NETWORKING_IPV6=yes                                                               
HOSTNAME=hadoop1

HOSTNAME=hadoop1 表示主机设置为hadoop1 .
注意:修改主机名后,需要重启系统后永久生效。


/etc/security/limits.conf

限制系统用户对shell资源的访问。

用命令ulimit -a可以查看所有shell资源限制值
ulimit -n <文件数目>:指定同一时间最多可开启的文件数
但此命令修改的值只适用于当前shell登录,要想永久修改,需要修改/etc/security/limits.conf配置文件

limits.conf工作原理

limits.conf文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,突破系统的默认限制,对系统访问资源有一定保护作用。 limits.conf 和sysctl.conf区别在于limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置。
limits.conf是 pam_limits.so的配置文件,然后/etc/pam.d/下的应用程序调用pam_*.so模块。譬如说,当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目 录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。

limits.conf文件格式

limits.conf文件格式:username|@groupname type resource limit

  • username|@groupname
    设置需要被限制的用户名,组名前面加@和用户名区别。也可用通配符*来做所有用户的限制

  • type
    类型有softhard-,其中soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了soft 和hard的值

  • resource
    表示要限制的资源,包括如下:

    • core - 限制内核文件的大小
      何谓core文件?当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像,系统默认core文件的大小为0,所以没有被创建。可以用ulimit命令查看和修改core文件的大小,但如果想让修改永久生效,则需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf
    • date - 最大数据大小
    • fsize - 最大文件大小
    • memlock - 最大锁定内存地址空间
    • nofile - 打开文件的最大数目
      对于需要做许多套接字连接并使它们处于打开状态的应用程序而言,最好通过使用ulimit -n,或者通过设置nofile参数,为用户把文件描述符的数量设置得比默认值高一些
    • rss - 最大持久设置大小
    • stack - 最大栈大小
    • cpu - 以分钟为单位的最多 CPU 时间
    • noproc - 进程的最大数目
    • as - 地址空间限制
    • maxlogins - 此用户允许登录的最大数目

limits.conf设置生效

  • 暂时生效,适用于通过 ulimit 命令登录 shell 会话期间
  • 永久生效,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或者通过编辑 /etc/security/limits.conf

注意:要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。
查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so

实例

永久修改所有用户打开文件最大数目

修改/etc/security/limits.conf,添加:* - nofile 1006154
修改/etc/pam.d/login,添加:session required /lib/security/pam_limits.so

限制admin用户登录到sshd的服务不能超过2个

在/etc/security/limits.conf中添加:admin - maxlogins 2
在/etc/pam.d/sshd中添加:session required pam_limits.so


/etc/profile环境变量配置

  • /etc/profile,系统级环境变量,对所有用户起作用。profile文件在系统启动时将被运行。在profile文件添加或修改的内容需要注销系统或执行source命令才能生效。
  • /etc/bashrc,系统级环境变量,对所有用户起作用。修改这个文件不用重启,重新打开一个bash即可生效。

  • ~/.bash_profile,需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。

  • ~/.bashrc,此文件类似于/etc/bashrc,不需要重启生效,重新打开一个bash即可生效,/etc/bashrc对所有用户新打开的bash都生效,但~/.bashrc只对当前用户新打开的bash生效。

login方式与non-login方式

~/.bash_profile 是交互式、login 方式进入bash 运行的;
~/.bashrc 是交互式、non-login 方式进入bash 运行的;
简单地说,.bash_profile只在会话开始时被读取一次,而.bashrc则每次打开新的终端时,都会被读取。
所以一般优先把变量设置在.bashrc里面。
通常二者设置大致相同,所以通常前者会调用后者。

交互式的:顾名思义,这种shell中的命令时由用户从键盘交互式地输入的,运行的结果也能够输出到终端显示给用户看。
非交互式的:这种shell可能由某些自动化过程启动,不能直接从请求用户的输入,也不能直接输出结果给终端用户看。输出最好写到文件。

:表示并列含义,例如A变量值有多个,用:符号进行分离。
.表示你操作的当前目录。
使用env命令显示所有的环境变量 ,set命令显示所有本地定义的Shell变量。

常见的环境变量

  • PATH:决定了shell将到哪些目录中寻找命令或程序
  • HOME:当前用户主目录
  • MAIL:是指当前用户的邮件存放目录。
  • SHELL:是指当前用户用的是哪种Shell。
  • HISTSIZE:是指保存历史命令记录的条数。
  • LOGNAME:是指当前用户的登录名。
  • HOSTNAME:是指主机名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
  • LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
  • PS1:是基本提示符,对于root用户是#,对于普通用户是$。
  • PS2:是附属提示符,默认是“>”。

系统全局代理配置

vi /etc/profile
添加如下内容:

http_proxy=http://[username:password@]proxy_ip:port/
https_proxy=http://[username:password@]proxy_ip:port/
ftp_proxy=http://[username:password@]proxy_ip:port/
no_proxy = 192.168.20. # 访问局域网地址192.168.20.*时不使用代理,可以用逗号分隔多个地址
export http_proxy
export https_proxy
export ftp_proxy
export no_proxy

例如:

http_proxy=http://172.17.18.80:8080/
https_proxy=http://172.17.18.80:8080/
ftp_proxy=http://172.17.18.80:8080/
export http_proxy
export https_proxy
export ftp_proxy

如果需要为某个用户设置一个系统级的代理,可以在~/.bash_profile中设置。


上一篇 2016年第三季度运动记录

下一篇 Hexo博客(08)Hexo主题分析

域名迁移公告
2017年12月20日起,本博客迁移到新域名madaimeng.com,旧域名masikkk.com不再更新内容,但将永久保持可访问!
阅读
3,248
阅读预计13分钟
创建日期 2016-06-17
修改日期 2017-07-23
类别
标签
百度推荐