Linux配置文件


一、Linux文件目录结构

在Linux系统中,文件和目录被组织成一个单根层级结构,称为文件系统。这意味着所有的文件和目录都直接或间接地从根目录(“/”)开始。以下是一些常见的目录及其含义:

/bin:包含基本命令行程序。
/boot:包含启动系统所需的内核和启动文件。
/dev:包含设备文件,允许访问硬件设备。
/etc:包含配置文件。
/home:用户的家目录通常位于此,每个用户都有自己的子目录。
/lib:包含系统的共享库文件。
/media:用于挂载可移动媒体设备,如CD、DVD等。
/mnt:用于临时挂载文件系统。
/opt:第三方软件的安装位置。
/proc:包含有关正在运行的进程的信息。
/root:root用户的家目录。
/sbin:包含系统管理命令。
/srv:服务启动后,它们将使用的数据。
/sys:包含系统硬件的相关信息。
/tmp:临时文件存放位置。
/usr:包含用户程序和数据。
/var:包含经常变化的文件,如日志文件。

这些目录的结构是固定的,但是具体的目录和文件可能会根据不同的发行版有所不同。

二、Linux配置文件

1./etc/passwd

用户账户的详细信息在此文件中更新。包括:用户名,密码,用户标识,组标识等。

示例:

root:x:0:0:root:/root:/bin/bash
longl:x:1000:1000:longl:/home/longl:/bin/bash

说明:

字段1:帐号名,这是用户登陆时使用的账户名称,在系统中是唯一的,不能重名。

字段2:密码占位符x;早期的unix系统中,该字段是存放账户和密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了。这里可以看到一个字母x,表示该用户的密码是/etc/shadow文件中保护的。

字段3:UID;用户ID,范围是0-65535(超级用户=0,程序系统用户=1-999,普通用户=1000-65535);

字段4:GID;组ID,范围是0-65535;当添加用户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。

字段5:用户说明;这个字段是对这个账户的说明

字段6:宿主目录;用户登陆后首先进入的目录,一般与"/home/用户名"这样的目录

字段7:登录Shell   当前用户登陆后所使用的shell,在centos/rhel系统中,默认的shell是bash;如果不希望用户登陆系统,可以通过usermod或者手动修改passwd设置,将该字段设置为/sbin/nologin 即可。出于安全考虑,大多数内置系统账户都是/sbin/nologin,这表示禁止登陆系统。

2./etc/shadow

用户账户密码在此文件中更新。作为真正的口令文件,只有超级管理员才能有权限读取。

新用户群组的详细信息在"/etc/group"中更新。
新用户群组密码在"/etc/gshadow"中更新。

示例:

root:$6$UO16eYxtA8giNKhW$K/KliiKfDQEjBMnM8a0HzxBkPSsiCyNUhQTUWQzfwVfcxqcOnMVnibJuswm9I630lwG/Z91yYTAKogNjakjKR/::0:99999:7:::
longl:$6$eX$j8gaeonTLdOPRKWY20p0DLbbpvAWMJdoaubKw.NRhXUWg/vT6cqL.GvZj7oHuhqvhlnt5Ln7o/YaW.W2Q.kiJ/:19828:0:99999:7:::

说明:

字段1:帐号名称

字段2:加密的密码,通常使用SHA512加密(1为MD5,5为SHA256,6为SHA512)。*或!!均表示为锁定账户,无法登录

字段3:最近更改密码的时间;从1970/1/1到上次修改密码的天数

字段4:禁止修改密码的天数;多少天之内不能修改密码,默认值为0

字段5:用户必须更改口令的天数;密码的最长有效天数,默认值为99999

字段6:警告更改密码的期限;密码过期之前警告天数,默认值为7;在用户密码过期前多少天提醒用户更改密码

字段7:不活动时间;密码过期之后账户宽限时间;在用户密码过期之后到禁用账户的天数

字段8:帐号失效时间,默认值为空;从1970/1/1日起,到用户被禁用的天数

字段9:保留字段(未使用),标志

3./etc/login.defs

此文件是登陆程序配置文件,该文件中设置密码长度和定期更换要求,对用户的一些基本属性做设置。设置参数以/etc/pam.d/system-auth为准。

说明:

MAIL_DIR /var/spool/mail 	#创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 lamp 用户的邮箱是 /var/spool/mail/lamp。

PASS_MAX_DAYS 99999	#密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。

PASS_MIN_DAYS 0	#表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。

PASS_MIN_LEN 5	#指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。

PASS_WARN_AGE 7	#指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。

UID_MIN 500 	#指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。

UID_MAX 60000	#指定用户最大的 UID 为 60000。

GID_MIN 500	#指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。

GID_MAX 60000 	#用户 GID 最大为 60000。

CREATE_HOME yes	#指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。

UMASK 077	#用户主目录的权限默认设置为 077。

USERGROUPS_ENAB yes	#指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。

ENCRYPT_METHOD SHA512	#指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。

4./etc/pam.d/system-auth

PAM(插入式验证模块),可查看密码长度和复杂度要求。该文件优先级高于其他文件。

PAM作为一个验证机制,可以被其他程序调用,因此无论你用什么程序,都可以用PAM来验证,如此一来让账号和密码或者是其他方式的验证有一致性的结果,方便程序员处理验证问题。
~
PAM用来验证的数据成为模块,它有很多模块,每个模块的功能是不太一样的,有的验证账户的存在性,有的验证密码的正确性,有的验证新建密码的可靠性等。

auth模块: 用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root等。

account模块: 对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等。

session模块: 这个模块用来定义用户登录前的,及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等。

password模块: 使用用户信息来更新。如:修改用户密码。

密码复杂度配置:

retry=N #定义登录/修改密码失败时,可以重试的次数

minlen=N #新密码的最小长度

dcredit=N #当N>0时表示新密码中数字出现的最多次数;当N<0时表示新密码中数字出现最少次数;

ucredit=N #当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现最少次数;

lcredit=N #当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现最少次数;

ocredit=N #当N>0时表示新密码中特殊字符出现的最多次数;当N<0时表示新密码中特殊字符出现最少次数;

maxrepeat=N #拒绝包含多于N个相同连续字符的密码。 默认值为0表示禁用此检查

maxsequence=N #拒绝包含长于N的单调字符序列的密码。默认值为0表示禁用此检查。实例是'12345'或'fedcb'。除非序列只是密码的一小部分,否则大多数此类密码都不会通过简单检查。

enforce_for_root #如果用户更改密码是root,则模块将在失败检查时返回错误。默认情况下,此选项处于关闭状态,只打印有关失败检查的消息,但root仍可以更改密码。不要求root用户输入旧密码,因此不会执行比较旧密码和新密码的检查

登入失败处理配置:

示例:

auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=10

说明:

onerr=fail:#表示定义了当出现错误时的缺省返回值;

deny:#表示设置普通用户和root用户(存在even_deny_root)连续错误登陆的最大次数,超过最大次数,则锁定该用户;

lock_time:#每一次登录失败后,在尚未达到deny所设置的次数时,会限制下一次登录的时间,单位是秒;

unlock_time:#表示设定普通用户锁定后,多少时间后解锁,单位是秒;

even_deny_root:#表示也限制root用户,针对所有用户生效,包含root;

root_unlock_time:#表示设定root用户锁定后,多少时间后自动解锁否则手动,单位是秒;

所有登入失败处理配置:/etc/pam.d/system-auth
ssh远程登入失败处理配置:/etc/pam.d/sshd
本地登入失败处理配置:/etc/pam.d/login

5./etc/profile

文件里存放的是系统的环境变量

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

6./etc/ssh/sshd_config

大佬文章:https://blog.csdn.net/ichen820/article/details/111643232

#Port 22                                          监听端口,默认监听22端口   【默认可修改】
#AddressFamily any                        IPV4和IPV6协议家族用哪个,any表示二者均有
#ListenAddress 0.0.0.0                   指明监控的地址,0.0.0.0表示本机的所有地址  【默认可修改】
#ListenAddress ::                            指明监听的IPV6的所有地址格式
# The default requires explicit activation of protocol 1   
#Protocol 2                                      使用SSH第二版本,centos7默认第一版本已拒绝
# HostKey for protocol version 1      一版的SSH支持以下一种秘钥形式
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2                  使用第二版本发送秘钥,支持以下四种秘钥认证的存放位置:(centos6只支持rsa和dsa两种)
HostKey /etc/ssh/ssh_host_rsa_key               rsa私钥认证 【默认】
#HostKey /etc/ssh/ssh_host_dsa_key            dsa私钥认证
HostKey /etc/ssh/ssh_host_ecdsa_key          ecdsa私钥认证
HostKey /etc/ssh/ssh_host_ed25519_key      ed25519私钥认证
# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 1024        主机秘钥长度        
# Ciphers and keying      
#RekeyLimit default none
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV                   当有人使用ssh登录系统的时候,SSH会记录信息,信息保存在/var/log/secure里面
#LogLevel INFO                                  日志的等级
# Authentication:
#LoginGraceTime 2m                           登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
#PermitRootLogin no
PermitRootLogin yes                            是否允许管理员直接登录,'yes'表示允许
#StrictModes yes                                 是否让sshd去检查用户主目录或相关文件的权限数据
#MaxAuthTries 6                                  最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
#MaxSessions 10                                 允许的最大会话数
#RSAAuthentication yes
#PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys                 服务器生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面,将私钥发给客户端
#AuthorizedPrincipalsFile none 
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes                    是否允许支持基于口令的认证
# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no     是否允许任何的密码认证
# Kerberos options                                   是否支持kerberos(基于第三方的认证,如LDAP)认证的方式,默认为no 
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes
# GSSAPI options                                       
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
UsePAM yes
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes                    是否允许x11转发,可以让窗口的数据通过SSH连接来传递(请查看ssh -X 参数):#ssh -X  user@IP
#X11DisplayOffset 10
#X11UseLocalhost yes 
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
UsePrivilegeSeparation sandbox # Default for new installations.
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes              是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server                    支持 SFTP ,如果注释掉,则不支持sftp连接
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
AllowUsers user1 user2                登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

7./etc/sudoers

管理员权限分配配置

8./etc/selinux/config

设置SELinux参数

示例:

# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing

说明:

Disabled :不启用控制系统。
permissive:开启控制系统,但是处于警告模式。即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来。
Enforcing:开启控制系统,处于强制状态。一旦违反了策略,就无法继续操作下去。

9./etc/auditd/audit.rules

该文件为安全审计配置文件,可配置安全事件审计规则。
auditd:审计守护进程,主要用于记录安全信息及对系统安全事件进行回溯。
rsyslog:进程用于记录系统中的各种信息(如:硬件报警信息和软件日志)。
syslog:日志守护进程

示例:

-w /etc/passwd -p wa
#监控/etc/passwd文件的修改行为(写,权限修改)

说明:

r:读取文件
w:写入文件
x:执行文件
a:修改文件属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值