Linux各种重要配置文件详解
1:网卡文件/etc/sysconfig/network-scripts/ifcfg-eth0
[root@Gin scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ## 物理设备名,eth0为第一块网卡;eth1为第二块网卡 HWADDR=00:0C:29:84:0C:21 ## 网卡的MAC地址,48位 TYPE=Ethernet ## 以太网 UUID=09ae6890-2925-4ca0-9cbc-e937593624f8 ## 唯一的一个用户标识,相当于身份证号码!如查看磁盘设备的UUID使用blkid命令 ONBOOT=yes ## 控制网卡是否开机启动 NM_CONTROLLED=yes ##是否通过networkmanager管理网卡设备 BOOTPROTO=dhcp ## proto取下列值之一:none,引导时不使用协议;static,静态分配地址;bootp,使用BOOTP协议;dhcp,使用DHCP协议 IIPADDR=192.168.17.128 ## IP地址 NETMASK=255.255.255.0 ## 子网掩码,划分网络位和主机位 DNS2=202.106.0.20 ## DNS是把baidu.com变成了baidu服务器IP。DNS就是域名和IP的解析工具 DNS1=8.8.8.8 GATEWAY=192.168.0.1 ## 网关地址,路由器的地址 USERCTL=no PEERDNS=yes IPV6INIT=no
2:/etc/fstab
fstab - static information about the filesystems
作用:设置文件系统挂载信息的文件,使得开机能够自动挂载磁盘分区
[root@Gin scripts]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jan 24 02:46:13 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=91a2efd1-8bf1-42d2-a387-e22e4b665a36 / ext4 defaults 1 1 UUID=3f124651-9d7a-42b4-8cfa-11053a5a8ffc /boot ext4 defaults 1 2 UUID=8cb814f4-f2f4-4bb0-a127-c97092845fcf swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
字段定义
/etc/fstab
文件包含了如下字段,通过空格或 Tab 分隔:
<file system> <dir> <type> <options> <dump> <pass>
#第一列:要被挂载的磁盘设备
#第二列:前面目录的挂载点(前面的目录挂载到哪个目录下)
#第三列:挂载的文件系统类型!支持许多种不同的文件系统:ext2
, ext3
, ext4
, reiserfs
, xfs
, jfs
, smbfs
, iso9660
, vfat
, ntfs
, swap
及 auto
。 设置成auto
类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。
#第四列:挂载的选项!注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有
auto
- 在启动时或键入了mount -a
命令时自动挂载。noauto
- 只在你的命令下被挂载。exec
- 允许执行此分区的二进制文件。noexec
- 不允许执行此文件系统上的二进制文件。ro
- 以只读模式挂载文件系统。rw
- 以读写模式挂载文件系统。user
- 允许任意用户挂载此文件系统,若无显示定义,隐含启用noexec
,nosuid
,nodev
参数。users
- 允许所有 users 组中的用户挂载文件系统.nouser
- 只能被 root 挂载。owner
- 允许设备所有者挂载.sync
- I/O 同步进行。async
- I/O 异步进行。dev
- 解析文件系统上的块特殊设备。nodev
- 不解析文件系统上的块特殊设备。suid
- 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。nosuid
- 禁止 suid 操作和设定 sgid 位。noatime
- 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。nodiratime
- 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。relatime
- 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。flush
-vfat
的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。defaults
- 使用文件系统的默认挂载参数,例如ext4
的默认参数为:rw
,suid
,dev
,exec
,auto
,nouser
,async
.
#第五列:是否需要备份磁盘,1表示需要备份,0表示不需要备份
#第六列:开机是否自检
文件系统标识
在 /etc/fstab
配置文件中你可以以三种不同的方法表示文件系统:内核名称、UUID 或者 label。使用 UUID 或是 label 的好处在于它们与磁盘顺序无关。如果你在 BIOS 中改变了你的存储设备顺序,或是重新拔插了存储设备,或是因为一些 BIOS 可能会随机地改变存储设备的顺序,那么用 UUID 或是 label 来表示将更有效。
要显示分区的基本信息请运行:
[root@Gin scripts]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sr0 iso9660 CentOS_6.6_Final sda ├─sda1 ext4 3f124651-9d7a-42b4-8cfa-11053a5a8ffc /boot ├─sda2 swap 8cb814f4-f2f4-4bb0-a127-c97092845fcf [SWAP] └─sda3 ext4 91a2efd1-8bf1-42d2-a387-e22e4b665a36 /
UUID
所有分区和设备都有唯一的 UUID。它们由文件系统生成工具 (mkfs.*
) 在创建文件系统时生成。
lsblk -f
命令将显示所有设备的 UUID 值。/etc/fstab
中使用 UUID=
前缀:
手动挂载测试
1:创建一个虚拟的块设备
[root@Gin scripts]# dd if=/dev/zero of=/dev/sdb1 bs=4096 count=10
2:格式化
[root@Gin scripts]# mkfs.ext4 /dev/sdb1
3:挂载
[root@Gin scripts]# mount -t ext4 -o loop,noatime,noexec /dev/sdb1 /mnt
4:查看挂载设置
[root@Gin scripts]# df -hT
5:写入/etc/fstab配置文件,开机自动挂载!也可以写入到/etc/rc.local文件
[root@Gin scripts]# cat /etc/fstab UUID=435a2a45-0f41-49b0-b3f2-5d4a00615339 / ext4 defaults 1 1 UUID=851d3618-fb61-40cb-ba6d-e0879a7d06a3 /boot ext4 defaults 1 2 UUID=91f17110-1462-4327-82ce-474f728f2e62 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sdb1 /mnt ext4 loop,noatime,noexec 0 0
#上面的/dev/sdb1需要挂载的目录,可以使用UUID来替代,查看UUID命令如下:blkid 或 ls -l /dev/disk/by-uuid
fstab出问题的修复方案:
1)开机提示,输入密码 修改
2)救援模式,rescue
修复/etc/fstab只读状态:mount -o rw,remount /
3:/etc/passwd
[root@Gin scripts]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
............................................
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
root | :x | :0 | :0 | :root | :root | :/bin/bash |
账号名称 | 账号密码 | 账号UID | 账号GID | 用户说明 | 用户家目录 | shell解释器 |
账号名称(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
账号密码(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
账号UID(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
账号GID(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
用户说明(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
用户家目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
Shell解释器(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
4:/etc/shadow
文件属性:
[root@Gin scripts]# ll /etc/shadow ---------- 1 root root 964 Jan 26 14:30 /etc/shadow
文件内容:
[root@Gin scripts]# ll /etc/shadow poe:$6$c3hp3bcj$f2i1namN9feDDhgda3mdtVEb5PyWFyw2MCeshWHajq7OJ0.0Bo0Lh0FY2W3BaVOztszOip/D4h5LF9pRLJfe11:12784:0:99999:7:::
以‘:’作为分隔符号,如果数一数,会发现共有九个位啊, 这九个位的用途是这样的:
1. 帐号名称:由于密码也需要与帐号对应啊~因此, 这个档案的第一栏就是帐号,必须要与 /etc/passwd 相同才行!
2. 密码:这个才是真正的密码,而且是经过编码过的密码! 你只会看到有一些特殊符号的字母就是了!需要特别留意的是, 虽然这些加密过的密码很难被解出来,但是‘很难’不等于‘不会’,所以, 这个档案只有 root 才可以读写!你得随时注意,不要不小心更动了这个档案的属性呢!另外, 如果是在密码栏的第一个字元为‘ * ’或者是‘ ! ’,表示这个帐号并不会被用来登录的意思。 所以万一哪一天你的某个使用者不乖时,可以先在这个档案中,将他的密码栏位的最前面多加一个 * !他就无法使用该帐号!
3. 最近更动密码的日期:这个栏位记录了‘更动密码的那一天’的日期, 不过,很奇怪呀!在我的例子中怎么会是 12784呢?呵呵,这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 ,而 1971 年 1 月 1 日则为 366 ! 所以这个日期是累加的!得注意一下这个资料呦!那么最近的 2005 年 1 月 1 日就是 12784 啦,瞭解了吗?
4. 密码不可被更动的天数: 第四个栏位记录了这个帐号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。这样的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码!
5. 密码需要重新变更的天数: 由于害怕密码被某些‘有心人士’窃取而危害到整个系统的安全,所以有了这个栏位的设计。 你必须要在这个时间之内重新设定你的密码,否则这个帐号将会暂时失效。 而如果像上面的 99999 的话,那就表示,密码不需要重新输入! 不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码!
6. 密码需要变更期限前的警告期限:当帐号的密码失效期限快要到的时候, 就是上面那个‘必须变更密码’的那个时间时, 系统会依据这个栏位的设定,发出‘警告’言论给这个帐号,提醒他‘再过 n 天你的密码就要失效了,请尽快重新设定你的密码!如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。
7. 密码过期的受限时间:如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在‘必须变更密码的期限前,并没有变更你的密码!’ 那么该组密码就称为‘失效的密码’~怎么办?没关系,还有这个栏位的天数设计啊~ 意思就是说,当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,那么您的帐号就失效了!无法登入!
8. 帐号失效日期:这个日期跟第三个栏位一样,都是使用 1970 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’的系统中, 你可以规定一个日期让该帐号不能再使用!
9. 保留:最后一个栏位是保留的
举例:假如系统有一个dmtsai 用户,它的/etc/passwd文件信息如下所示
dmtsai:$1$8zdAKdfC$XDa8eSus2I7nQL7UjRsIy/:13025:5:60:7:2:13125:
这表示什么呢?要注意的是, 13025 是 2005/08/30 ,所以, dmtsai 这个使用者他的密码相关意义是:
You must wait longer to change your password passwd: Authentication token manipulation error
Warning: your password will expire in 5 days