Linux学习笔记(三):权限与进程

  • 一、权限
  • 读取,写入,执行
  • Linux附加权限(SET位权限、粘滞位权限)
  • 附加权限的八进制表示
  • chmod
  • chown
  • su、sudo
  • umask
  • passwd
  • 二、进程
  • 创建一个进程
  • ps
  • top、jobs
  • 对进程的操作
  • kill、killall
  • 进程相关命令



多用户多任务,Linux系统的核心,What should we do?

一、权限

各种关于权限的命令和相关特性因为Linux的多用户模式,需要限制不同的用户

当创建了一个用户账户之后,会给用户分配一个用户ID(uid),这个用户又会被分配一个组ID(gid),这个组名默认跟用户名是一样。

通过使用命令id查看用户的uid和gid,不同Linux系统中对于这些ID的排序不尽相同 (还存在着超级用户(uid 0)和其他系统用户(用于进程))

读取,写入,执行

文件调用权限分为三级 : 文件所有者(User)用户组(Group)其它用户(Other Users)

u: 文件所有者(user)
g: 文件所有者所在组 (group )
o: 所有其他用户(other users)
a/ugo: 所用用户(all)

只有文件所有者和root用户可以修改文件或目录的权限。可以使用八进制数字模式或者符号模式(rwx) 指定文件的权限。

centos7三权分立账号_linux

r - -(Read)读取: 八进制数字4、二进制为100

- w -(Write)写入: 八进制数字2、二进制为010

- - x(Execute)执行: 八进制数字1、二进制为001

Linux附加权限(SET位权限、粘滞位权限)

SET位权限(SUID、SGID): 执行文件被设置了SUID、SGID权限后,任何用户执行该文件时,将获得该文件创建者、组账号对应的权限。 一般用于给可执行的程序或脚本文件进行设置(passwd命令)

尽量避免使用SET位权限程序

如果文件除了设置suid和sgid之外还设置了x(执行权限),执行位表示为s(小写)。如果没有设置x位,执行位将表示为S(大写)


粘滞位权限(sticky): 为目录设置特殊的附加权限,即便用户对该目录有写的权限,也不能删除该目录中其他用户的文件数据。

如果文件除了设置粘滞位权限还设置了x(执行权限),执行位表示为t(小写)。如果没有设置执行权限,执行位将表示为T(大写)

附加权限的八进制表示

suid 的八进制数字是4

sgid 的八进制数字是 2

sticky位的八进制数字是1

在四位的八进制表示中最高的一位八进制数就是suid,sgdi,sticky的权值。

chmod

跟之前的chattr命令改变文件的属性相似,chmod设定的是文件的使用权限

+<属性> 开启属性。

-<属性> 关闭属性。

=<属性> 指定属性。

chmod 775 /chanwill/filename*	//使用八进制表示赋予该文件夹下所有文件的读写执行权限

centos7三权分立账号_后台运行_02

chmod -R 555 chanwill/		//-R递归的方式更改该文件下的所有权限

centos7三权分立账号_八进制_03

chmod u+s chanwill/filename		//为User设置suid位

chmod g+s chanwill/filename		//为Group设置sgid位

centos7三权分立账号_linux_04

chmod u+t chanwill/filename		//为User设置粘滞位

chmod g+t chanwill/filename		//为Group设置粘滞位

centos7三权分立账号_linux_05

chmod 4755 /chanwill/filname*		//4755,拥有root权限

centos7三权分立账号_linux_06

chown

chown命令用于设置文件的所有者和文件的关联组 (需要超级用户 root 的权限才能执行)

chown -f -v -R chanwill:chanwill *	//-f忽略错误信息;-v显示详细的处理信息;-R递归处理

centos7三权分立账号_八进制_07

chown -c user:group		//user为新的文件拥有者(UID),group为新的文件使用者组(GID)

su、sudo

su命令以其他用户身份或组的权限来执行指令

su username		//切换到该用户,使用该用户的身份权限来执行命令,但并不会切换环境变量(不会改变工作目录)
su - username	//上同,不过此命令可以切换环境变量(工作目录切换到username的家目录)
su -c command username	//-c参数以username的权限执行一条命令然后回到原来的账户

centos7三权分立账号_八进制数字_08

sudo命令以root的权限执行指令

sudo -v		//sudo在第一次执行时或在N分钟内没有执行(默认为五)会问密码。-v的作用是重新设定存活时间
sudo -u username/uid	//-u参数的作用是指定一个用户username的身份执行

umask

umask命令指定在建立文件时预设的【权限掩码】

【权限掩码】是由3个八进制的数字所组成,将现有的权限减掉权限掩码后,即可产生建立文件时预设的权限。

umask -S	//-S参数是将umask以文字的方式表示,默认为数字

centos7三权分立账号_linux_09

umask所显示的是当前用户的权限掩码。要获取文件的权限只需要将777减去权限掩码就是文件的相应权限。

centos7三权分立账号_linux_10

passwd

该命令用于修改账号的密码

centos7三权分立账号_centos7三权分立账号_11

如果在root用户下,该命令可以拥有对于其他用户账户密码管理的巨大权限

centos7三权分立账号_linux_12

# passwd -S username		//显示用户的密码信息

# passwd -d username		//删除用户账户的密码

# passwd -f username		//用户下次登陆时修改密码

二、进程

各种关于进程的命令因为Linux的多任务模式,来对任务进行管理

创建一个进程

当系统启动的时候,内核先把一些它自己的程序初始化为进程,然后运行一个叫做 init 的程序。init再运行一系列的称为 init 脚本的 shell 脚本,用以启动所有的系统服务。

许多系统服务以守护程序(daemon) 的形式实现,守护程序仅在后台运行(没有接口)

一个程序可以发动另一个程序(一个父进程创建了一个子进程

系统分配给每个进程一个数字 (进程 ID(PID:PID 号按升序分配,init 进程的 PID 总是1)) 内核也对分配给每个进程的内存进行跟踪

ps

ps命令用于查看当前进程(类似于任务管理器)

ps -x	//展示每个进程的信息

centos7三权分立账号_centos7三权分立账号_13

ps -ef | grep root		//显示所有命令(命令行),还可以配合grep查找

centos7三权分立账号_后台运行_14

ps -aux		//显示每个用户的进程信息

centos7三权分立账号_linux_15

输出格式

含义

USER

进程所有者

PID

进程ID

PPID

父进程ID

%CPU

CPU占用率

%MEM

内存占用率

VSZ

当前任务占用的虚拟内存数

RSS

当前任务占用的物理内存数(千字节)

TTY

TTY (Teletype),指进程的控制终端。

STAT

进程状态

START

进程开始时间

TIME

进程使用的CPU时间总计(秒)

COMMAND

所执行的指令

STAT状态:
R 进程正在运行或准备运行。
S 睡眠模式(没有运行)
D 不可中断的睡眠模式(如进程正在等待 I/O)
T 进程停止运行
Z 父进程没有把子进程从进程表中删除

< 高优先级进程。这个进程会拥有更多重要的资源,会有更多的 CPU 时间(niceness)

N 低优先级进程。 低优先级进程只有等其它高优先级进程执行之后,才会得到处理器时间

top、jobs

实时显示 进程(process) 的动态

top -c -d 3		//-c显示详细信息,-d设定更新时间(秒)
top -p pid		//显示指定的进程信息

centos7三权分立账号_linux_16

Jobs命令用于查看后台运行的进程

对进程的操作

通过ctrl+c,有时候可以中断一个正在进行的程序(SIGINT 2)

通过在命令之后加上“&”,可以将程序放入后台运行 (使用jobs命令查看,工作序号(jobspec))

centos7三权分立账号_centos7三权分立账号_17

在后台运行的进程使用 fg 命令,让其返回前台执行

fg %1		//先使用jobs命令查看后台进程,使用fg命令后面跟百分号再加上工作序号(jobspec)

centos7三权分立账号_centos7三权分立账号_18

对于一个程序使用ctrl+z之后,该程序进入后台,我们使用bg命令来将其恢复到前台运行

bg %1	//同样使用jobs命令查看后台进程,再使用bg跟上百分号加上工作序号(jobspec)

kill、killall

kill命令将指定的信息(Signals) 送至程序,删除执行中的程序或工作。

centos7三权分立账号_八进制数字_19

指定信息可以用kill -l命令查看。预设的信息为SIGTERM(15),可将指定程序终止。SIGKILL(9) 信息尝试强制删除程序。SIGHUP(1) 重新加载进程。

kill -9 $(ps -ef | grep username)	//过滤出用户并删除其进程
kill -9 pid		//使用ps或者jobs命令来获取进程的pid再使用kill命令删除

kill 命令杀死指定进程 PID,killall命令直接对进程的名字进行操作

killall -e chanwill		//进程需要跟输入的名字完全相符合

killall -l chanwill		//忽略大小写

killall -u user chanwill	//指定用户

centos7三权分立账号_八进制_20

进程相关命令

pstree: 输出树型结构的进程表(进程间父/子关系)

centos7三权分立账号_centos7三权分立账号_21

vmstat: 输出一个系统资源使用(内存,交换分区和磁盘 I/O) 可以在命令之后加上数字来设置刷新时间以查看实时效果

centos7三权分立账号_centos7三权分立账号_22

xload/tload: 图形界面程序。|