Linux的体系结构
体系结构主要分为用户态的内核态。所谓内核本质上是一段管理计算机硬件设备的程序。所谓用户态上层应用程序的活动空间。内核必须为上层应用提供资源,CPU,存储,IO资源,这被称为系统调用,系统调用是不能被简化的操作,其他复杂调用都是多个系统调用组合的结果。
linux体系结构
我们要查看所有的系统调用,可以使用命令
man 2 syscalls
所得到的列表如下
System call Kernel Notes
---------------------------------------------------------------------------
_llseek(2) 1.2
_newselect(2) 2.0
_sysctl(2) 2.0
accept(2) 2.0 See notes on socketcall(2)
accept4(2) 2.6.28
access(2) 1.0
acct(2) 1.0
add_key(2) 2.6.11
adjtimex(2) 1.0
alarm(2) 1.0
alloc_hugepages(2) 2.5.36 Removed in 2.5.44
bdflush(2) 1.2 Deprecated (does nothing)
since 2.6
bind(2) 2.0 See notes on socketcall(2)
chown(2) 2.2 See chown(2) for
version details
其中2
代表的意思是系统调用,3
指的是公共库函数。公共库函数是封装系统调用,一组定义好的系统调用的组合。
shell
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Linux 的 Shell 常见的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
我们常见的shell脚本使用的都是bash,一个shell脚本开头定义了#!/bin/bash
。#!
告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
其中关于命令行可以参照我的这篇文章,以下在简单介绍几个常用的命令。
find
在指定目录下查找文件。
find + 路径 + -name + “文件名”
//查找当前目录下子目录中的文件
find -name "test"
之上的命令使用递归查找的方式查找到了test
文件。如果我们想全局搜索则使用
find / -name "test"
当然find指令也支持表达式如果要查找所有以test开头的问题,查找方式可以使用
find -name "test*"
*
表示通配符,可以实现模糊查询。
如果要忽略大小写查询可以使用
find -iname "test*"
grep
对于grep使用过Linux的人基本都有接触过。下面列举一下grep的一些常用操作。
grep 'test' 1.log
//正则筛选
grep -o 'test[[0-9a-z]*\]'
//不包含
grep -v 'test'
Linux的用户权限
用户管理
Linux系统用户是根据用户ID来识别的,默认ID长度为32位,用户ID限制在60000以下。
- root用户 (ID 0)
默认是root用户,其UID和GID均为0,可以操作系统中任何文件和命令,拥有最高的管理权限。 - 系统用户 (ID 1-499)
与真实用户区分开来,例如系统默认的bin、adm、nodoby、mail用户等。 - 普通用户 (ID 500以上)
这类用户一般是由具备系统管理员root的权限的运维人员添加的。
用户组
linux系统中的用户组(group)就是具有相同特性的用户(user)集合,通过组可以更加方便的管理用户,每个组拥有一个GroupID,每个用户属于一个主组,属于一个或多个附属组,一个用户最多有31个附属组。
权限管理
Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作,Linux权限授权,默认是授权给三种角色,分别是user、group、other(其他用户)。
drwxr-xr-x 2 root root 4096 Feb 17 15:57 test/
test目录详解如下:
d 表示目录,同一位置如果为-则表示普通文件;
rwxr-xr-x 表示三种角色的权限,每三位为一种角色,依次为u,g,o权限,如上则表示user的权限为rwx,group的权限为r-x,other的权限为r-x;
2表示文件夹的链接数量,可理解为该目录下子目录的数量;
4096表示该文件夹占据的字节数;
chmod权限
+、-、=代表加入、删除和等于对应权限
授予用户、组、其他人对test目录拥有rwx权限
chmod –R u+rwx,g+rwx,o+rwx test
撤销用户、组、其他人对test目录拥有x权限
chmod –R u-x,g-x,o-x test
chmod二进制权限
Linux权限可以将rwx用二进制来表示,其中有权限用1表示,没有权限用0表示。
Linux权限用二进制显示如下:
rwx=111
r-x=101
rw-=110
r--=100
依次类推,转化为十进制,对应十进制结果显示如下:
rwx=111=4+2+1=7
r-x=101=4+0+1=5
rw-=110=4+4+0=6
r--=100=4+0+0=4
得出结论,用r=4,w=2,x=1来表示权限。
所以我们有时候使用
chmod 777 test
为文件赋予所有权限。
Linux特殊权限
除了普通权限,Linux还有三个特殊权限
- suid
以文件的所属用户身份执行,而非执行文件的用户。
chmod u+s test
- sgid
1)以文件所属组身份去执行。
2)在该目录中创建任意新文件的所属组与该目录的所属组相同。
chmod g+s test
- sticky
对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件。
chmod o+t test
网友评论