linux系统管理命令(五)
【教程主题】:1.系统管理命令
【1.1】用户和组管理
在Linux操作系统中,任何文件都归属于某一特定的用户,而任何用户都隶属于至少一个用户组。用户是否有权限对某文件进行访问、读写以及执行,受到系统严格约束的正是这种清晰、严谨的用户与用户组管理系统。在很大程度上它保证了Linux系统的安全性。本节课将对Linux系统中重要的用户和组管理文件进行介绍,并且介绍如何使用命令行对用户和组进行管理。
Linux帐号分类
用户帐号
- 用来储存单一用户的数据,你可以使用一个用户帐号,来储存某一个用户的数据
用户帐号分为:
Ø 超级用户
拥有完全控制功能,用户名称通常为root,其UID(用户系统标识符)为0
Ø 普通用户
分类:
系统账号
这种类型账号提供给Linux系统本身使用。在某些软件执行时候,需要你提供一个普通用户类型的账号。为了满足这个需求而建立的账号,我们称为系统账号。 在Red Hat Enterprise Linux 中,系统用户的UID在1到499之间。
真实用户
真实账号在系统中,被分配的UID范围为500至4,294,967,295之间。
群组账号
- 用来储存多个用户的信息,每一个群组账号可以用来记录一组用户的数据。
群组账号分类:
Ø 超级用户组
root的用户群组我们称为超级用户组
超级用户群组的GID(群组标识符)为0。隶属于超级用户群的成员,不具备系统管理的权利。
Ø 系统群组
与系统账号一样,系统群组也是给Red Hat Enterprise Linux 系统本身,或是某个软件使用。目前Red Hat Enterprise Linux定义系统群组的GID范围为1到499之间。
Ø 用户自定义组
除了上述的群组外其余的所有群组都是用户自定义群组。
用户自定义组账号可使用的GID范围为500到4,294,967,293
用户账号文件——passwd
/etc/passwd文件是UNIX安全的关键文件之一。该文件用于用户登录时校验用户的登录名、加密的口令数据项、用户ID(UID)、默认的用户组ID(GID)、用户信息、用户主目录以及登录后使用的shell。/etc/passwd文件的每一行保存一个用户的资料,而用户数据按域以冒号“:”分隔。格式如下所示:
username:password:uid:gid:userinfo:home:shell
其中,各个域的含义如表所示:
/etc/passwd文件中域的含义
域 |
含 义 |
username |
登录名 |
password |
加密的用户口令 |
uid |
用户ID |
gid |
用户组ID |
userinfo |
用户信息 |
home |
分配给用户的主目录 |
shell |
用户登录后将执行的shell(若为空格则默认为/bin/sh) |
用户的登录名是用户用来登录的识别,由用户自行选定,主要由方便用户记忆或者具有一定含义的字符串组成。所有用户口令的存放都是加密的,通常采用的是不可逆的加密算法。一般来说,用户的UID应当是独一无二的,其他用户不应当有相同的UID数值,只有UID等于0时可以例外。每个用户都需要保存专属于自己的配置文件及其他文档,以免用户间相互干扰。当用户登录进入系统时,会启动一个Shell程序,默认是bash。
用户影子文件——shadow
Linux使用不可逆的加密算法(如MD5,SHA1等)来加密口令。和/etc/passwd类似,/etc/shadow文件中每条记录用冒号“:”分隔,形成9个域,格式如下所示:
username:password:lastchg:min:max:warn:inactive:expire:flag
其中,各个域的含义如表所示:
/etc/shadow文件中域的含义
域 |
含 义 |
username |
用户登录名 |
password |
加密的用户口令 |
lastchg |
表示从1970年1月1日起到上次修改口令所经过的天数 |
min |
表示两次修改口令之间至少经过的天数 |
max |
表示口令还会有效的最大天数,如果是99999则表示永不过期 |
warn |
表示口令失效前多少天内系统向用户发出警告 |
inactive |
表示禁止登录前用户名还有效的天数 |
expire |
表示用户被禁止登录的时间 |
flag |
保留域,暂未使用 |
用户组账号文件——group和gshadow
/etc/passwd文件中包含着每个用户的用户组ID(GID)。
/etc/group文件对用户组的许可权限的控制并不是必要的,这是因为Linux系统用来自于/etc/passwd文件的UID、GID来决定文件存取权限。
用户组可以像用户一样拥有口令。
/etc/group文件记录格式如下所示:
group_name:group_password:group_id:group_members
其中,各个域的含义如表所示:
/etc/group的域及其含义
域 |
含 义 |
group_name |
用户组名 |
group_password |
加密后的用户组口令 |
group_id |
用户组ID(GID) |
group_members |
以逗号分隔的成员用户清单 |
/etc/gshadow的域及其含义
域 |
含 义 |
group_name |
用户组名 |
group_password |
加密后的用户组口令 |
group_members |
以逗号分隔的成员用户清单 |
用户和用户组账号管理命令:
使用useradd命令添加用户
Linux使用useradd命令添加用户或更新新创建用户的默认信息。默认信息包括前文所述的用户账号文件所存储的用户相关信息。useradd命令的格式如下:
useradd [参数] {username}
参数: -u UID 用来指定UID
-g GROUP 定义用户的主要群组,GROUP必须已经存在
-G GROUP 指定用户的次要群组,可以指定多个次要群组,每个用“,“相连
-d HOME 指定用户的主目录
-s SHELL 指定用户登录执行的程序
-r 建立一个系统用户的账号
出于系统安全考虑,Linux系统中的每一个用户除了有其用户名外,还有其对应的用户口令。因此使用useradd命令增加时,还须用passwd命令为每一位新增加的用户设置口令。之后还可以随时用passwd命令改变自己的口令。passwd命令的格式如下:
passwd username
使用usermod命令修改用户信息
usermod命令用来修改使用者账号,具体的修改信息和useradd命令所添加的信息一致,这里不再一一列出。usermod命令的格式如下:
usermod [参数] {username}
参数: -u UID 修改UID
-g GROUP 修改主要群组名称
-G GROUP 修改次要群组名称
-d HOME 修改家目录位置
-s SHELL 修改可执行程序
-l NEWNAME 修改用户名
-L 锁定帐号
-U 解除锁定
使用userdel命令删除用户
userdel命令用来删除系统中的用户信息。userdel命令的格式如下:
userdel [参数] {username}
参数: -r 删除用户的主目录和邮箱
使用groupadd命令创建用户组
groupadd命令可以以指定名称来建立新的用户组。groupadd命令的格式如下:
groupadd [参数] {groupname}
参数: -g GID 指定群组账号的标识符
-r 指定添加的群组成为系统群组
-f 强制执行。一般情况下groupadd不允许建立一个与使用过的GID相同的群组账号,使用这个参数就会建立相同的GID群组账号
使用groupmod命令修改用户组属性
groupmod命令用来修改用户组信息。groupmod命令的格式如下:
groupmod [参数] {groupname}
参数: -g GID 修改GID
-n NEWNAME 修改群组的名称
使用groupdel命令删除用户组
groupdel命令比较简单,用来删除系统中存在的用户组。使用该命令时必须确认待删除的用户组存在。groupdel命令的格式如下。
groupdel groupname
【1.2】用户权限管理
Linux系统中三种基本权限
用户属主、用户属组及其它人权限
-rw-r--r-- 1 root root 762 11-11 20:34 a.out
文件类型和权限 链接数 文件拥有者 文件拥有组 内容大小 更改时间 文件名
文件类型 |
ls命令中的缩写 |
应用 |
一般文件 |
- |
保存数据 |
目录 |
d |
存放文件 |
符号链接 |
l |
指向其他文件 |
字符设备节点 |
c |
访问设备 |
块设备文件 |
b |
访问设备 |
命名管道函数 |
P |
进程间通信 |
套接字 |
s |
进程间通信 |
八进制表示法
字符表示法 |
八进制表示法 |
含义 |
r |
读(查看文件) |
|
w |
写(删建文件、重命名) |
|
x |
执行(进入目录) |
权限管理命令
u 属主
g 属组
o 其他
a 所有
创建文件时,系统默认权限为666
创建目录时,系统默认权限为777
修改文件权属于chown,chgrp
chown修改属主和修改属主、属组
chown [–R] [属主:属组] /user file
chgrp修改属组
chgrp group file
谁可以修改文件的所有者和权限
chmod root用户和文件的所有者
chgrp root用户和文件的所有者(必须是组成员)
chown 只有root
【1.3】文件归档管理
1.3.1 Linux怎样保存文件
数据
- 这里数据就是文件的内容
元数据
- 在linux系统中,所有与某个文件相关的额外信息都保存在一个叫做i-节点(inode)的结构中
文件名
- 文件名保存在名为目录项(dentry)的结构中
i-节点
所有文件都有如下的属性:
文件类型、链接数、用户所有者、组所有者、权限和时间信息。这种信息保存在名为i-节点的结构中。
链接数
i-节点记录文件的链接数,也就是引用该文件的目录项(dentry)数。通常常规文件只有一个文件名,链接数也是1
时间信息
每个i-节点保存与文件相关的三种时间信息,通常叫做atime、ctime、mtime,含义如下:
缩写 |
名称 |
目的 |
atime |
访问时间 |
文件数据每次被阅读后更新 |
ctime |
改变时间 |
文件的i-节点信息每次被改变后都会更新 |
mtime |
修改信息 |
文件数据每次被更改后更新 |
用stat命令查看i-节点的信息
一个文件的i-节点信息集合叫做该文件的状态(startus)。
我们可以把stat命令看作是现实文件状态的命令。
用法:
stat [option ] file
一个文件系统内,每个i-节点都分配到一个独一无二的i-节点编号
硬链接和软连接
硬链接:
将多项目录项关联到一个i-节点(同一个文件保存在两个地方或不同的文件名)
ln 目标文件 链接文件
软连接:是一些不同的i-节点,用来引用其他文件名。
ln -s 目标文件 链接文件
查找文件find命令
用法:
find {搜索目录} {搜索条件} [动作]
搜索条件:
-size n 文件的大小
-type 文件的类型(f普通、d目录、i软连接)
-name:按照文件名查找文件。支持统配符*和?。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime n:按照文件的更改时间来查找文件。
-atime n:搜索在过去n天读取过的文件。
-ctime n:搜索在过去n天修改过的文件。
- n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
有时间有关选项:共有 -atime, -ctime -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更改过内容的文件;
-mtime +n :列出在 n 天之前(不含 n天本身)被更改过内容的文件名;
-mtime -n :列出在 n 天之内(含n 天本身)被更改过内容的文件名。
-print:输出搜索结果,并且打印
find命令查找文件的几种方法:
(1)根据文件名查找
例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:
find / -name lilo.conf
find命令后的“/”表示搜索整个硬盘。
(2)快速查找文件
根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:
find /etc -name smb.conf
这样,使用“快速查找文件”方式可以缩短时间。
(3)根据部分文件名查找方法
有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:
find / -name '*abvd*'
输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。
(4) 使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。
find /etc -size +500000c -and -mtime +1
动作:
-exec command; 对匹配文件执行command,用{}表示匹配的文件。命令形式为:
' command' {} \;,注意{ }和\;之间的空格。
-ok command; 与-exec相同,但是提示确认没个文件的操作
用法:找出名字为1.txt文件 并且用长格式输出:
find /root -name 1.txt -exec ls -l {} \;
1.3.2 文件压缩
为什么要压缩文件
节约空间和网络传输
压缩命令
gzip
用法:
gzip [option ] file
参数: -c 将输出重定向到标准输出
-d 解压缩文件
-r 对目录递归,将里面的文件分别压缩
-1…9 指定压缩比例。
文件后缀:.gz
bzip2
用法:
bzip2 [option ] 压缩后文件 要压缩文件
参数: -c 将输出重定向到标准输出
-d 解压缩文件
文件后缀:.bz
文件归档tar
将文件归档可以把整个目录树保存在同一个文件中
tar命令用于创建、列出、抽取归档文件。
归档文件通常也会一并压缩
用法:
tar [option ] file
-c 创建归档文件
-x 释放文档
-v 显示详细信息
-f 文件名(可带路径)
-z 使用gzip压缩
-j 使用bzip2压缩
linux系统管理命令(五)的更多相关文章
- Linux系统管理命令
Linux系统管理命令 命令 说明 stat 显示指定文件的相关信息,比ls命令显示内容更多 who 显示在线登录用户 hostname 显示主机名称 uname 显示系统信息 top 显示当前系统中 ...
- 尚学linux课程---7、linux系统管理命令
尚学linux课程---7.linux系统管理命令 一.总结 一句话总结: 查网络:netstat -ntpl 查进程:ps 1.需要下载163yum源(从外部源同步仓库)里面的所有rpm文件? re ...
- Linux常用命令 - 五种创建文件命令详解
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 创建文 ...
- Linux系统管理命令(1)accton的使用
安装: apt install acct accton accton命令是Linux系统进程管理命令之一,它的作用是打开进程统计,如果不带任何参数,即关闭进程统计. 具体用法为:acc ...
- Linux 系统管理命令 - mpstat - CPU信息统计
命令详解 重要星级: ★★★★☆ 功能说明: mpstat 是 Multiprocessor Statistics 的缩写,是一种实时系统监控工具.mpstat 命令会输出 CPU 的一些统计信息,这 ...
- Linux 系统管理命令 - vmstat - 虚拟内存统计
命令详解 重要星级: ★★★★☆ 功能说明: vmstat 是 Virtual Memory Statistics ( 虚拟内存统计 ) 的缩写,利用 vmstat 命令可以对操作系统的内存信息.进程 ...
- Linux系统:常用Linux系统管理命令总结
本文源码:GitHub·点这里 || GitEE·点这里 一.目录指令 1.创建目录make directory mkdir 目录名称 //mkdir spring,创建一个spring文件夹 mkd ...
- Linux系统管理第五六七章 权限及归属管理 磁盘管理 文件系统与lvm
第五六七章 alias 查看系统别名 67 chmod 设置文件或目录的权限 -R表示以递归的方式设置目录及目录下的所有子目录及文件的权限 u:属主 g:属组 o:其他人 a:所有人 +:添加 ...
- Linux Linux系统管理命令
df 检测文件系统的磁盘空间占用和空余情况 --用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对接点和磁盘块的使用情况 --df [参数] --常用参数及含义 "-a&quo ...
随机推荐
- ELK日志相关
转: Logstash 讲解与实战应用 原创qw871122016-08-20 16:06:07评论(1)40217人阅读 一.Logstash 介绍 Logstash 是一款强大的数据处理工具,它可 ...
- python 动态属性
先来看一下一个常见的Python类的定义: class Person(object): name = None age = None def __init__(self,name,age): self ...
- javascript 20个正则表达式
正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于 ...
- django-mptt 树形结构的实现
觉得这篇博客可以参考:https://blog.csdn.net/abc_1234d/article/details/78360006
- apicloud开发笔记
第一次用apicloud做正式项目 ,下面把做的过程中用到的代码段列出来....都是从文档里复制的代码,只是感觉官网那个文档好难找哦... 注:api.????的方法都是在APP中调用才行的,$api ...
- 【Unity】7.2 鼠标输入
分类:Unity.C#.VS2015 创建日期:2016-04-21 一.简介 在桌面系统的游戏中,鼠标输入是最基本的输入方式之一.游戏很多操作都需要鼠标来完成,例如武器的瞄准和开火.菜单的单击.物体 ...
- FPM打包工具 可以把源码包制定为rpm包 是自动化部署的环节
注意部FPM时的环境一定要跟生产环境的系统版本最好是保持一至,我第一次测试没通过,(我在CENTOS7和部属FPM打好的包在Centos6.x和安装,结果失败) 1:安装 FPM打包工具的依赖包: [ ...
- 将不同级别的logging 日志信息写入不同文件
将不同级别的logging 日志信息写入不同文件 # -*- coding: utf-8 -*- import os import time from logging.handlers import ...
- alluxio网络流量异常分析【转】
1. 介绍 2. 准备工作 2.1 tcpdump 2.2 winshark 2.3 安装iftop 2.4 alluxio网络通信相关的端口 3.iftop 锁定消耗流量最大的端口 4. dump数 ...
- LeetCode: Best Time to Buy and Sell Stock II 解题报告
Best Time to Buy and Sell Stock IIQuestion SolutionSay you have an array for which the ith element i ...