770 likes | 907 Views
第 5 章 Linux 系统管理. 本章重点 : 文件系统 用户和工作组的管理 进程管理. 5.1 Linux 启动过程概述. Linux 的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段: 1. 启动内核。在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。 2. 执行程序 init 。装入内核并初始化设备后,运行 init 程序。 init 程序处理所有程序的启动 . 以 RH9.0 为例,说明启动过程. 1. 电脑启动时, BIOS 装载 MBR ,然后从当前活动分区启动
E N D
第5章 Linux系统管理 本章重点: • 文件系统 • 用户和工作组的管理 • 进程管理
5.1 Linux启动过程概述 Linux的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段: 1.启动内核。在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。 2.执行程序init。装入内核并初始化设备后,运行init程序。init程序处理所有程序的启动. 以RH9.0为例,说明启动过程
1.电脑启动时,BIOS装载MBR,然后从当前活动分区启动1.电脑启动时,BIOS装载MBR,然后从当前活动分区启动 2.grub获得引导过程的控制权后,会显示引导菜单。此时如果用户不进行任何操作,grub将在等待制定时间后自动引导默认的操作系统,如安装有其他系统,则在grub引导菜单上有多个选项,选择相应的操作系统名称就能进入相应的操作系统。 3.当用户选择启动LINUX操作系统时,grub就会根据事先设置好的信息从ROOT文件系统所在的分区读取LINUX映象,然后装入内核映象并将控制权交给LINUX内核。
LINUX内核获得控制权后, 以如下步骤继续引导系统: 4. LINUX内核一般是压缩保存的,因此,它首先要进行自身的解压缩。内核映象前面的一些代码完成解压缩。 5. 如果系统中安装有可支持特殊文本模式的、且LINUX可识别的SVGA卡,LINUX会提示用户选择适当的文本显示模式。但如果在内核的编译过程中预先设置了文本模式,则不会提示选择显示模式。该显示模式可通过GRUB或RDEV工具程序设置。 6. 内核接下来检测其他的硬件设备,例如硬盘、软盘和网卡等,并对相应的设备驱动程序进行配置。这时,显示器上出现内核运行输出的一些硬件信息。
7. 接下来,内核装载ROOT文件系统。ROOT文件系统的位置可在编译内核时指定,也可通过GRUB或RDEV指定。文件系统的类型可自动检测。如果由于某些原因装载失败,则内核启动失败,最终会终止系统。 8.启动init进程,切换到多用户模式,并为每个虚拟控制台和串行线路启动一个Getty进程。 9.引导过程结束
5.2 Linux的文件系统 什么是文件系统? 定义一: 文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区组织文件的方法,如NTFS或FAT 定义二; 文件系统是基于被划分的存储设备上的逻辑上单位上的一种定义文件的命名、存储、组织及取出的方法 定义三; 文件系统是文件的数据结构或组织方法。在Unix中,文件系统涉及两个非常独特的事情,目录树或在磁盘或分区上文件的排列 定义四; 在计算机业,一个文件系统是有组织存储文件或数据的方法,目的是易于查询和存取。文件系统是基于一个存储设备,比如硬盘或光盘,并且包含文件物理位置的维护;也可以说文件系统也是虚拟数据或网络数据存储的方法,比如NFS
5.2.1 Linux文件系统的发展史 • 最早的文件系统是Linus使用的 • 使用VFS使Linux可以支持多个不同的文件系统 • 1992.Ext 第一个专为Linux设计的文件系统 • 1993.Ext2 第二代扩展文件系统 • Ext3 融入了日志式文件系统技术,系统数据的修改过程得到记录和保存
5.2.2 Linux文件系统的基本概念 1.文件系统的总体结构 一个文件系统可以看成是一个连续的、由多个数据块组所组成的存储空间。 1)超级块 描述目录和文件在磁盘上的静态分布 2)索引节点表 (i-node table) 索引节点描述文件和目录的最基本单位,每个文件和目录对应且只对应一个i-node 3)组描述符 (Group Descriptors) 描述块组 4)数据区 (data block) 真正的文件数据区
2.虚拟文件系统 VFS • VFS设计目标——提供快速高校的文件访问服务 • VFS是物理文件系统与服务之间的一个接口 • VFS只存在与内存中 • VFS功能 • 记录可用文件系统的类型 • 将设备同对应的文件系统联系起来 • 处理一些面向文件的通用操作 • 涉及到针对文件系统的操作时,VFS把他们映射到与控制文件、目录及i-node相关的物理文件系统
5.2.3 目录结构 1,树形目录结构
/bin 这个目录存放着最经常使用的命令。 /boot 存放启动Linux时使用的一些核心文件 /dev 该目录下存放的是Linux的外部设备 /etc 存放所有的系统管理所需要的配置文件 和子目录。 /home 用户的主目录 /lib 存放着系统最基本的动态链接共享库 /lost+found 这个目录一般情况下是空的,当系 统非法关机,这里就存放了一些文 件。
/mnt 这里面系统提供的目录是为了让用户临时 挂载 别的文件系统的 /proc 这个目录是一个虚拟的目录,它是系统内 存的映射,这个目录的内容不在硬盘上而 是在内存里 /root 该目录为系统管理员的用户主目录 /sbin 存放的系统管理员使用的系统管理程序 /tmp 这个目录是用来存放一些临时文件的。 /usr 我们要用到的很多应用程序和文件几乎 都存放在usr目录下。 /var 这个目录中存放着在不断扩充着的东西, 我们习惯将那些经常被修 改的目录放在 这个目录下,包括各种日志文件。
5.3 文件系统管理 5.3.1 Linux文件系统的类型 • Linux目前几乎支持所有的Unix类的文件系统 • ext2 常用 • ext3 常用 • Iso9660 标准的光盘文件系统 • swap 用于交换的磁盘分区 • NTFS windows文件系统,不支持NTFS写入 • fat windows文件系统,支持fat的读写; • NFS 网络文件系统, • HFS 苹果MACOS文件系统 • XFS、JFS、Minix fs、UFS、Reiserfs
5.3.2 创建文件系统 1.通过fdisk -l 查看机器所挂硬盘个数及分区情况; 硬盘分区的表示: 在Linux 是通过hd*x 或 sd*x 表示的, 其中 * 表示的是a、b、c ... ... x表示的数字 1、2、3 ... ... hd大多是IDE硬盘 sd大多是SCSI或移动存储;
引导(Boot):表示引导分区,例子中 hda1 是引导分区; • Start (开始):表示的一个分区从X cylinder(磁柱)开始; • End (结束):表示一个分区到 Y cylinder(磁柱)结束; • id和System 表示的是一个意思.要fdisk 一个分区时,通过指定id来确认分区类型;比如 7表示的就NTFS 分区;这个在fdisk 中要通过t功能来指定 • Blocks(容量):表示容量的意思,其单位是K; 一个分区容量的值是由下面的公式而来的; Blocks = (相应分区End数值 - 相应分区Start数值)x 单位cylinder(磁柱)的容量 hda1 Blocks=(765-1)x8225.280=6284113.92 K = 6284.113.92M
# fdisk -l Disk /dev/hda: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 765 6144831 7 HPFS/NTFS /dev/hda2 766 2805 16386300 c W95 FAT32 (LBA) /dev/hda3 2806 9729 55617030 5 Extended /dev/hda5 2806 3825 8193118+ 83 Linux /dev/hda6 3826 5100 10241406 83 Linux /dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris /dev/hda8 5199 6657 11719386 83 Linux /dev/hda9 6658 7751 8787523+ 83 Linux /dev/hda10 7752 9729 15888253+ 83 Linux Disk /dev/sda: 1035 MB, 1035730944 bytes 256 heads, 63 sectors/track, 125 cylinders Units = cylinders of 16128 * 512 = 8257536 bytes Device Boot Start End Blocks Id System /dev/sda1 1 25 201568+ c W95 FAT32 (LBA) /dev/sda2 26 125 806400 5 Extended /dev/sda5 26 50 201568+ 83 Linux /dev/sda6 51 76 200781 83 Linux
2.使用fdisk操作硬盘 fdisk 操作硬盘的命令格式如下: # fdisk 设备 比如我们通过 fdisk -l 得知 /dev/hda 或者 /dev/sda设备;我们如果想再添加或者删除一些分区,可以用 # fdisk /dev/hda 或 # fdisk /dev/sda
# fdisk /dev/sda Command (m for help): 在这里按m ,就会输出帮助; Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition 注:这是删除一个分区的动作; l list known partition types 注:l是列出分区类型,以供我们设置相应分区的类型; m print this menu 注:m 是列出帮助信息; n add a new partition 注:添加一个分区; o create a new empty DOS partition table p print the partition table 注:p列出分区表; q quit without saving changes 注:不保存退出; s create a new empty Sun disklabel t change a partition's system id 注:t 改变分区类型; u change display/entry units v verify the partition table w write table to disk and exit 注:把分区表写入硬盘并退出; x extra functionality (experts only) 注:扩展应用,专家功能;
3.建立分区 # fdisk /dev/sda操作分区 然后使用如下指令来建立分区 1. p指令 列出当前操作硬盘的分区情况 2. n指令 增加一个分区; 3. t指令 指定分区类型;
4.创建文件系统(格式化) 1)mkfs命令的使用 # mkfs -t 文件系统 存储设备 注: • 这里的文件系统是要指定的,比如 ext3 ;reiserfs ;ext2 ;fat32 ;msdos 等... ... • 设备比如是一个硬盘的分区,软盘,光驱等.. ... • 在格式化分区之前,查看硬盘分区情况,并有针对性的格式化;比如用 fdisk -l 来查看
2)mkfs.ext3 mkfs.reiserfs mkfs.ext2 mkfs.msdos mkfs.vfat mke2fs 的介绍; mkfs 在执行的命令的时候,调用的这些工具 # mkfs.ext3 /dev/sda6 把该设备格式化成ext3文件系统 # mke2fs -j /dev/sda6 把该设备格式化成ext3文件系统 # mkfs.ext2 /dev/sda6 把该设备格式化成ext2文件系统 # mke2fs /dev/sda6 把该设备格式化成ext2文件系统 # mkfs.reiserfs /dev/sda6 把该设备格式化成reiserfs文件系统 # mkfs.vfat /dev/sda6 把该设备格式化成fat32文件系统 # mkfs.msdos /dev/sda6 把该设备格式化成fat16文件系 统,msdos 文件系统就是fat16; # mkdosfs /dev/sda6 把该设备格式化成fat16文件系统,同 mkfs.msdos
5.3.3 挂载与卸载文件系统 挂载文件系统,目前有两种方法, • 通过 mount 来挂载, • 通过/etc/fstab文件来开机自动挂载
1、通过mount 来挂载磁盘分区(或存储设备) 挂载文件系统的命令格式: [root@localhost beinan]# mount [-t 文件系统 ] [-o 选项] 设备 目录 -t 通过这个参数,我们来指定文件系统的类型,一般的情况下不必指定有时也能识别,-t 后面跟 ext3 、ext2 、reiserfs、vfat 、ntfs 等,其中 vfat 是fat32和fat16分区文件系统所所用的参数;如果您忘记了文件系统,也可以在-t 后面加auto ; -o 这个选项,主要选项有权限、用户、磁盘限额、语言编码等,但语言编码的选项,大多用于vfat和ntfs文件系统 设备 指存储设备,比如/dev/hda1, /dev/sda1 ,cdrom 等。通过 fdisk -l 或者查看 /etc/fstab 或 dmesg 得知有哪些具体设备;一般的情况下光驱设备是/dev/cdrom ;软驱设备是/dev/fd0 ;硬盘及移动硬盘以 fdisk -l 的输出为准;
1)对光驱和软驱的挂载; #mkdir /mnt/cdrom # mount /dev/cdrom /mnt/cdrom 我们先建一个目录,然后执行mount 命令,这样cdrom 就挂在 /mnt/cdrom 中了;我们就可以在/mnt/cdrom 中查看光盘中资料和文件;这个目录您想怎么建就怎么建
2)挂载Linux文件系统; 首先建一个文件系统挂载的目录;一个有文件系统的分区要挂到系统中,必须要有一个挂载点;这个挂载点就是一个目录。 要挂载/dev/hda5分区,hda5分区创建的是ext3文件系统; # mkdir /mnt/hda5/ 先创建一个挂载目录; # chmod 777 /mnt/hda5/ 设置/mnt/hda5的权限为任何用户可写可读可执行 # mount -t ext3 /dev/hda5 /mnt/hda5 通过-t ext3 来指定/dev/hda5是ext3 文件系统,并且挂载到/mnt/hda5目录; # mount -t auto /dev/hda5 /mnt/hda5 假如我们不知道hda5上ext3 文件系统,可以用 -t auto 让系统定夺 # mount /dev/hda5 /mnt/hda5 不加任何参数,直接 mount /dev/hda5 到/mnt/hda5;系统自动判断分区文件系统; 是不是被挂载了,通过df -lh 来查看;
3)卸载文件系统umount [root@localhost beinan]# umount 设备或挂载目录 举例: #mount -t auto /dev/hda5 /mnt/hda5 挂载/dev/hda5; #umount /dev/hda5 卸载/dev/hda5 #umount /dev/cdrom 卸载cdrom ; #umount /dev/fd0 卸载软驱;
2.通过/etc/fstab文件来开机自动挂载文件系统 #mkdir /mnt/hda5/ 先创建一个挂载目录; #chmod 777 /mnt/hda5/ 设置/mnt/hda5的权限为任何用户可写可读可执行 然后我们在/etc/fstab 中加如下的一行; /dev/hda5 /mnt/hda5 ext3 defaults 0 0 重启机器
5.3.4 管理Linux文件系统的常用命令 1.df 统计文件系统中可用空间 名称:df 使用权限: 所有使用者 使用方式: df [选项]... [FILE]... 说明:显示档案系统的状况,或是看所有档案系统的状况(默认值)
参数: -a, --all 包含所有的具有0 Blocks 的档案系统 --block-size={SIZE} 使用{SIZE} 大小的Blocks -h, --human-readable 使用人类可读的格式1024为单位 -H, --si 很像-h, 但是用1000为单位而不是用1024 -i, --inodes 列出inode信息,不列出已使用block -k, --kilobytes 就像是--block-size=1024 -l, --local 仅显示本地的文件系统 -m, --megabytes 就像--block-size=1048576 --no-sync 取得信息前不sync (预设值) -P, --portability 使用POSIX 输出格式 -t, --type=TYPE 限制列出档案系统的TYPE
T, --print-type 显示档案系统的形式-x, --exclude-type=TYPE 限制列出档案系统不要显示TYPE -v (忽略) 例如: #df –m [root@lab9 root]# df -m
2.du 用法:du [选项]... [文件]... 说明:总结每个<文件>的磁盘用量,目录则取总用量。 参数: -a, --all 递归的显示指定目录中各文件及子目录中各文件占用的数据块数 -B, --block-size=SIZE 使用设定的大小显示 -b, --bytes 以字节为单位 -c, --total 最后在加一个总计 -h, --human-readable 以容易理解的格式印出文件大小 (例如 1K 234M 2G) -H, --si 类似 -h,但取 1000 的次方而不是 1024
-k 即 --block-size=1K -l, --count-links 连硬链接的大小也计算在内 -L, --dereference 找出符号链接指示的真正目的地 -S, --separate-dirs 不包括子目录的占用量 -s, --summarize 只分别计算命令列中每个参数所占 的总用量 -x, --one-file-system 跳过在不同文件系统上的目录不 予统计 例如: #du –sh /usr 统计/usr目录的大小
3.dd 名称: dd 使用权限: 所有使用者dd 使用方式: dd [option] 说明:把指定的输入文件复制到指定的输出文件中,并进行格式转化 参数: if 输入文件 of 输出文件 ibs=[BYTE] 一次读取bytes字节 obs=[SIZE] 一次写入bytes字节
bs =[BYTE] 同时设置读写缓冲区字节数 cbs=BYTES 一次转换bytes字节 seek=BLOCKS 跳过一段以后才输出 skip=BLOCKS 输出跳过一段以后才输入 拷贝光盘(注意,光盘是标准的iso9660格式才可以) dd if=/dev/cdrom of=cdrom.iso 其中if 后面以及of 后面的内容依你的需求调整。
4.fsck 指令:fsck 使用权限: 超级使用者 使用方式: fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...] 说明: 检查与修复Linux 档案系统,可以同时检查一个或多个Linux 档案系统 参数: filesys : device 名称(eg./dev/sda1),mount 点(eg. / 或/usr) -t 给定文件系统的型式,若在/etc/fstab 中已有定义或kernel 本 身已支持的则不需加上此参数 -s 依序一个一个地执行fsck 的指令来检查 -A 对/etc/fstab 中所有列出来的partition 做检查 -C 显示完整的检查进度 -d 打印e2fsck 的debug 结果
-p 同时有-A 条件时,同时有多个fsck 的检查一 起执行 -R 同时有-A 条件时,省略/ 不检查 -V 详细显示模式 -a 如果检查有错则自动修复 -r 如果检查有错则由使用者回答是否修复 例子: 检查msdos 档案系统的/dev/hda5 是否正常,如果有异常便自动修复: fsck -t msdos -a /dev/hda5注意: 此指令可与/etc/fstab 相互参考操作来加以了解。
5.4 设备管理 1.配置键盘 1)配置键盘设备模块 /sbin/modprobe usbkbd /sbin/modprobe keybdev 2.设置自动加载别名 /etc/modules.conf alias usb-controller usb-uhci 3.键盘配置文件 /etc/sysconfig/keyboard
2.配置鼠标 1.创建设备文件 mkmod /dev/input/mice c 13 63 2.插入模块 /sbin/modprobe usbmouse /sbin/modprobe mousedev 3.创建别名 alias usb-controller usb-uhci 4.鼠标配置文件 /etc/sysconfig/mouse
3.网卡的配置 4.声卡的配置
5.5 用户管理 什么是帐号? 当一台计算机为多人所用时,通常需要区分用户,例如,使个人文件保持个人化。即使计算机同时只为一人所用,这也很重要,如多数微机。因此,每个用 户给定一个单独的用户名,这个名字被用于登录。用户除了名字还有更多。一个帐号是所有的文件、资源和属于这个用户的信息。
5.5.1用户和组文件 1,用户帐号文件-passwd 图3-2-1 Unix系统的基本用户数据库是文本文件/etc/passwd (叫口令文件),它列出所有有效用户名及其相关信息。文件的每个用户一行,分为用:分隔的7个域: 用户名 :加密格式的口令 :数字的user id :数字的group id :全名或帐户的其他说明 :家目录 :登录shell
2,用户口令文件-shadow图3-2-2 Linux系统有影子口令shadow passwords文件。这样将加密的口令存在另一文件/etc/shadow 中,而这个文件只有root能读。 在shadow文件中,每行定义了一个用户信息,行中各字段各字段用“:”隔开。为进一步提高安全性,shadow文件中保存的是已加密的口令。 “/etc/shadow”文件中的每个记录用“:”隔开为9个域,每个域的含义分别为: • 登录名 • 加密口令 • 口令上次更改时距1970年1月1日的天数 • 口令更改后不可以更改的天数 • 口令更改后必须再更改的天数(有效期) • 口令失效前警告用户的天数 • 口令失效后距账号被查封的天数 • 账号被封时距1970年1月1日的天数 • 保留未用
3. 用户组账号文件——group 图3-3-3 用户组是逻辑地组织用户账号集合的方便途径,它允许用户在组内共享文件。系统上的每一个文件都有一个用户和一个组的属主。使用“ls –l”命令可以看到每一个文件的属主和组。 系统上的每个组,在/etc/group文件中有一行记录,记录的格式为: groupname : passwd : GID : userlist 字 段 说 明 Groupname 是组的名字 Passwd 是组的加密口令 GID 是系统区分不同组的ID,/etc/passwd 域中的GID域是用这个数来指定用户的缺省组。 Userlist 是用“,”分开的用户名,列出的是这个 组的成员。
4. 用户组口令文件——gshadow gshadow文件用于定义用户组口令、组管理员等信息,该文件只有root用户可以读取。Gshadow文件中每行定义一个用户组信息,行中各字段间用“:”分隔,每行记录的格式为: groupname : Encrypted password: Group administrators: Group members 各字段的的含义如下: Groupname 用户组名称,该字段与group文件中的组名称对应。 Encrypted password 用户组口令,该字段用于保存已加密的口令 Group administrators 组的管理员账号,管理员有权对该组添加删除账号。 Group members 属于该组的用户成员列表,列表中多个用户间用“,”分隔。
5.5.2 用户和组帐户的维护 1,创建用户 Linux核心只不过视用户为数字。每个用户用一个单一的整数识别,user id或uid,核心之外的一个单独的数据库给每个user id安排了文本的名字,即用户名username。要产生一个用户,需要给用户数据库增加关于用户的信息,并给他产生家目录。 创建用户使用useradd命令 使用方式:useradd [option] loginid 或useradd –D [option] loginid 命令参数: -d home_dir 设定使用者的目录为home_dir -e expire_date 设定此帐号的使用期限(格式YYYY-MM-DD),默认值为永久 -g initial_group 设定帐号最初所属组 -D 显示或设置useradd命令时所使用的默认选项
该命令做了下面几件事: 1)在 /etc/passwd 文件中增添了一行记录; 2)在 /home 目录下创建新用户的主目录,并将 /etc/skel 目录中的文件拷贝到该目录中去;但是使用了该命令后,新建的用户暂时还无法登录,因为还没有为该用户设置口令,需要再用 passwd 命令为其设置口令后,才能登录。用户的 UID 和 GID 是 useradd 自动选取的,它是将 /etc/passwd 文件中的 UID 加 1,将 etc/group 文件中的 GID 加 1。 范例: #useradd student #useradd -g root student 附注:adduser 与useradd 指令为同一指令(经由符号连结symbolic link)
2,修改用户 usermod命令可用来修改用户帐号的各种属性,包括用户主目录、私有组、登录、shell等. Usermod的命令格式如下: usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号] 该命令的各个参数说明如下: -c<备注> : 修改用户帐号的备注文字。 -d<登入目录>: 修改用户登入时的目录。 -e<有效期限> : 修改帐号的有效期限。 -f<缓冲天数> : 修改在密码过期后多少天关闭该帐号 -g<群组>: 修改用户所属的群组。 -l<账号名称>: 更改账号的登录名
-L: 锁定帐号密码,使密码失效 -U: 解除密码锁定 范例: (1)修改用户名,把用户名“liuyidan”改名为“lyd”,使用的命令是: # usermod –l lyd liuyidan (2)锁定“lyd”用户,使其不能登录。命令如下: # usermod –L lyd (3)解锁“lyd”用户账号,使其可以登录。命令如下: # usermod –U lyd
3,删除用户 userdel命令用于删除指定的用户账号。 其使用的语法格式为: userdel [-r][用户账号] 需要补充说明的是userdel命令可删除用户账号与相关的文件。若不加参数,则仅删除用户账号,而不删除相关文件。其中参数“-f”是用来删除用户登入目录以及目录中所有文件。 范例: #grep student /etc/passwd //查询用户账号student是否存在 #userdelstudent //删除student账号 #grep student/etc/passwd //再次查询用户账号student是否存在 #ll –d /home //查询用户student的主目录是否还存在 #userdel –r student //删除用户的同时删除其工作主目录
4,创建组 groupadd命令可指定群组名称来建立新的群组账号。该组账号的ID值必须是惟一的,且数值不可为负。预设的最小值不得小于500,且每增加一个组账号ID值逐次增加。ID值0~499是保留给系统账号使用。该指令使用的语法格式为: groupadd [-r] group 其中“-r”参数是用来建立系统账号。系统账号的ID值不能大于500。 范例: # groupadd studentgroup //建立组账号studentgroup # grepstudentgroup /etc/group //查询group文件studentgroup组是否建立 #groupadd –r sysstudentgroup //建立系统组账号 # grep studentgroup /etc/group //查询group文件中studentgroup组是否建立