Linux 核心

目录

linux 内核

GNU工具

shell

文件系统

用户

添加新用户

删除用户

修改用户

用户组

创建新组

修改组


首先,Linux可划分为以下四部分:

  • Linux内核
  • GNU工具
  • 图形化桌面环境
  • 应用软件

linux 内核

虚拟内存:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)

交换分区(swap space):在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,当请求的数据不在内存中时,系统产生却页中断,内存管理器便将对应的内存页重新从硬盘调入物理内存

页面(page):内存存储单元按组划分成很多块,每一块为一个页面。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面被换到了磁盘上。

GNU工具

除了由内核控制硬件设备外,操作系统还需要工具来执行一些标准功能,比如控制文件和程序。核心GNU工具:

  • 用以处理文件的工具
  • 用以操作文本的工具
  • 用以管理进程的工具

shell

GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。

  1. shell的核心是命令行提示符。命令行提示符是shell负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。
  2. shell包含了一组内部命令,用这些命令可以完成诸如复制文件、移动文件、重命名文件、显示和终止系统中正运行的程序等操作。
  3. shell也允许你在命令行提示符中输入程序的名称,它会将程序名传递给内核以启动它。

shell脚本:将多个shell命令放入文件中作为程序执行。并且Linux发行版默认的shell都是bash shell。

  • bash 手册

大多数Linux发行版自带用以查找shell命令及其他GNU工具信息的在线手册。man命令用来访问存储在Linux系统上的手册页面。

文件系统

Windows文件路径c:\Users\Rich\Documents\test.doc表明了文件test.doc究竟位于哪个磁盘分区中。如果你将test.doc保存在闪存上,该闪存由J来标识,那么文件的路径就是J:\test.doc。该路径表明文件位于J盘的根目录下。

Linux则采用了一种不同的方式。Linux将文件存储在单个目录结构中,只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径列出,跟Windows类似。如 /home/Rich/Documents/test.doc,路径本身并没有提供任何有关文件究竟存放在哪个物理磁盘上的信息。

在Linux PC上安装的第一块硬盘称为根驱动器,Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点(mount point),挂载点是虚拟目录中用于分配额外存储设备的目录。如下图第二块硬盘被挂载到了/home位置,用户目录都位于这个位置

常见Linux目录名称
目录用途
/虚拟目录的根目录。通常不在这里存储文件
/bin二进制目录,存放许多用户级的GNU工具
/boot启动目录,存放启动文件
/dev设备目录,linux在这里创建设备节点
/etc系统配置文件目录
home主目录,在这里创建用户
lib库目录,存放系统和应用程序的库文件
opt可选目录,存放第三方软件包和数据文件
rootroot用户的主目录
usr用户二进制目录,大量用户级的GNU工具和数据文件

用户

Linux安全系统的核心是用户账户。每个能进入Linux系统的用户都会被分配唯一的用户账户。用户对系统中各种对象的访问权限取决于他们登录系统时用的账户。用户权限是通过创建用户时分配的用户ID(User ID,通常缩写为UID)来跟踪的。

Linux系统使用一个专门的文件来将用户的登录名匹配到对应的UID值。这个文件就是/etc/passwd文件。root用户账户是Linux系统的管理员,固定分配给它的UID是0;Linux为系统账户预留了500以下的UID值,普通用户创建账户时,大多数Linux系统会从500开始,将第一个可用UID分配给这个账户。

登录用户名:用户密码:UID:组ID:备注字段:HOME目录位置:默认shell

$ 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
[...]
rich:x:500:500:Rich Blum:/home/rich:/bin/bash
mama:x:501:501:Mama:/home/mama:/bin/bash
katie:x:502:502:katie:/home/katie:/bin/bash
jessica:x:503:503:Jessica:/home/jessica:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
$
  • 添加新用户

用来向Linux系统添加新用户的主要工具是useradd。这个命令简单快捷,可以一次性创建新用户账户及设置用户HOME目录结构。useradd命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中。可以使用加入了-D选项的useradd命令查看所用Linux系统中的这些默认值。

$ /usr/sbin/useradd -D
GROUP=100            新用户会被添加到GID为100的公共组
HOME=/home           新用户的HOME目录将会位于/home/loginname
INACTIVE=-1          新用户账户密码在过期后不会被禁用
EXPIRE=              新用户账户未被设置过期日期
SHELL=/bin/bash      新用户账户将bash shell作为默认shell;
SKEL=/etc/skel       系统会将/etc/skel目录下的内容复制到用户的HOME目录下
CREATE_MAIL_SPOOL=yes系统为该用户账户在mail目录下创建一个用于接收邮件的文件
$useradd -m test 或 $useradd  test
$ ls -al test1
总用量 12
drwx------. 3 test1 test1  78 11月 13 09:36 .
drwxr-xr-x. 5 root  root   48 11月 13 09:37 ..
-rw-r--r--. 1 test1 test1  18 4月  11 2018 .bash_logout
-rw-r--r--. 1 test1 test1 193 4月  11 2018 .bash_profile
-rw-r--r--. 1 test1 test1 231 4月  11 2018 .bashrc
drwxr-xr-x. 4 test1 test1  39 11月 12 10:20 .mozilla

要想在创建用户时改变默认值或默认行为,可以使用命令行参数

useradd命令行参数
-c comment给用户添加备注
-d home_dir为主目录指定一个名字(不想用登录名作为主目录名的话)
-e expire_date用YYYY-MM-DD格式指定一个账户过期的日期
-f inactive_days指定这个账户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁用,1表示
禁用这个功能
-g initial_group指定用户登录组的GID或组名
-G group ...指定用户除登录组外所属的附加组
-m创建用户的HOME主录
-M不创建用户的HOME主录
-r创建系统账户
-p passwd为用户指定默认密码
-s shell指定默认的登录shell
-u uid指定唯一的UID

可以在-D选项后跟上一个指定的值来修改系统默认的新用户设置

useradd更改默认值的参数
-b default_home更改默认的创建用户HOME目录的位置
-e expriation_data更改默认的新账户的过期日期

-f inactive

更改默认的新用户从密码过期到账户被禁用的天数
-g group更改默认的组名称或GID
-s shell更改默认的登录shell
$ useradd -D -s /bin/tsch
  • 删除用户

userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。加上-r参数,userdel会删除用户的HOME目录以及邮件目录

$ /usr/sbin/userdel -r test
$ ls -al /home/test
ls: cannot access /home/test: No such file or directory
$
  • 修改用户

用户账户修改工具
usermod修改用户在/etc/passwd文件中的大部分字段的字段,参数大部分跟useradd命令的参数
一样
 -l修改用户账户的登录名。
-L锁定账户,使用户无法登录。
-p修改账户的密码。
-U解除锁定,使用户能够登录。
passwd修改用户自己密码$ passwd test
Changing password for user test.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
$
chpasswdchpasswd命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置;也可以用重定向命令来将含有userid:passwd对的文件重定向给该命令。$ chpasswd < users.txt
chsh快速修改默认的用户登录shell

$ chsh -s /bin/csh test

Changing shell for test.
Shell changed.
$

chage帮助管理用户账户的有效期,可以用下面两种方式中的任意一种:
YYYY-MM-DD格式的日期
代表从1970年1月1日起到该日期天数的数值
-d 设置上次修改密码到现在的天数
-E 设置密码过期的日期
-I 设置密码过期到锁定账户的天数
-m 设置修改密码之间最少要多少天
-W 设置密码过期前多久开始出现提醒信息
chfn修改用户账户的备注信息$ chfn test
Changing finger information for test.
Name []: Ima Test
Office []: Director of Technology
Office Phone []: (123)555-1234
Home Phone []: (123)555-9876
Finger information changed.

用户组

组权限允许多个用户对系统中的对象(比如文件、目录或设备等)共享一组共用的权限。/etc/group文件包含系统上用到的每个组的信息。系统账户用的组通常会分配低于500的GID值,而用户组的GID则会从500开始分配。/etc/group文件有4个字段:

组名:组密码: GID: 属于该组的用户列表
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
rich:x:500:
mama:x:501:
katie:x:502:
jessica:x:503:
mysql:x:27:
test:x:504:
  • 创建新组

groupadd命令可在系统上创建新组。

$ /usr/sbin/groupadd shared
$ tail -n 1 /etc/group
shared:x:505:
$ useradd -G shared test
$ tail -n 1 /etc/group
shared:x:505:test
  • 修改组

groupmod命令可以修改已有组的GID(加-g选项)或组名(加-n选项)。

$ groupmod -n sharing shared

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值