(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理

文章目录

  • 一、Linux简介
  • 二、Shell的基本应用
    • 1.Shell的命令概述
    • 2.Linux命令的分类
      • (3)Linux命令的通用命令格式
      • (4)Linux命令行的几个辅助操作:Tab,反斜杠,Ctrl U,Ctrl K,Ctrl L,Ctrl C
  • 三、目录和文件操作命令
    • 1.文件,目录,文件内容,压缩命令总结
    • 2.目录操作命令:pwd,cd,ls,mkdir,du
    • 3.文件操作命令:touch,file,cp,rm,mv,which,find,ln
    • 4.文件内容操作命令:cat,more,less,head,less,wc,grep
    • 4.归档及压缩命令:gzip,bzip2,tar
  • 四、Bash的常用功能
    • 1.Bash的命令历史
    • 2.Bash的命令别名
    • 3.正则表达式
    • 4.管道和重定向
  • 五、文本编辑器概述
    • 1.文本编辑器概述
    • 2.vi文本编辑器的工作模式
  • 六、用户和组管理
    • 1.Linux基于用户身份对资源访问进行控制
    • 2.用户帐号文件 —— passwd
    • 3.用户帐号文件 —— shadow
    • 4.添加用户帐号——useradd
    • 5.设置/更改用户口令——passwd
    • 6.修改用户帐号的属性——usermod
    • 7.删除用户帐号——userdel
    • 8.改变用户密码期限
    • 9.组帐号文件 — group、gshadow
    • 10.添加组帐号——groupadd
    • 11.添加、删除组成员——gpasswd
    • 12.删除组帐号——groupdel
    • 13.用户和组帐号查询——id,groups,finger
    • 14.图形化的用户和组管理工具
    • 15.文件/目录的权限和归属
      • (1)访问权限和归属权限
      • (2)查看文件/目录的权限和归属
      • (3)设置文件/目录的权限——chmod
      • (4)设置文件/目录的归属——chown
      • (5)使用附加权限——设置SET位、粘滞位权限
    • 16.文件ACL权限

from:https://download.csdn.net/download/u011436427/11803165

一、Linux简介

1.Linux特点

  • 支持多种平台、
  • 可靠的安全稳定性能、
  • 丰富的网络功能、
  • 良好的界面、
  • 多用户、
  • 多任务,
  • 完全兼容POSIX1.0标准、
  • 完全免费

2.Linux的组成

  • 内核
  • 系统基本库
  • 应用程序
  • Linux内核版本:Linux发行版可以自由选择使用某个版本的内核
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第1张图片
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第2张图片
    3.Linux发行版本
    (1)Linux发行版本构成
  • Linux内核 + 各种自由软件 = 完整的操作系统
  • 厂商提供的辅助安装、软件包管理等程序

(2)发行版的名称、版本由发行厂商决定

  • Red Hat Enterprise Linux 6,由Red Hat公司发布
    是世界上使用最多、应用范围最广的Linux,七RPM软件包格式是Linux社区的一个事实标准,是Linux Torvalds正在使用的Linux操作系统
  • Suse Linux 11,由Novell公司发布
  • Debian Linux 6.0,由Debian社区发布
  • Ubuntu Linux
  • Turbolinux
  • Fedora Core社区版

二、Shell的基本应用

1.Shell的命令概述

(1)Shell的作用:命令的解释器,“翻译官”
介于操作系统内核与用户之间。负责解释命令行
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第3张图片
(2)Shell的作用及常见种类
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第4张图片
(3)Shell环境的切换

  • 登录Shell

指用户每次登录系统后自动加载的Shell程序,大多数Linux系统采用 /bin/bash 作为默认登录;
/etc/shells文件记录了系统支持的有效登录Shell;

  • 如何切换Shell环境

临时切换:直接执行其他Shell程序,例如ksh、zsh等;
更改用户登录Shell:需修改 /etc/passwd 文件中用户记录的最后一个字段;
或执行:usermod -s Shell程序路径 用户名;
usermod -s /bin/bash root;

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh 

2.Linux命令的分类

(1)Linux命令

用于实现某一类功能的指令或程序
命令的执行依赖于解释器程序(例如:/bin/bash)

(2)Linux命令的分类

内部命令:属于Shell解释器的一部分
外部命令:独立于Shell解释器之外的程序文件

(3)Linux命令的通用命令格式

  • 命令字 [选项] [参数]
  • 选项及参数的含义
    选项:用于调节命令的具体功能
    参数:命令操作的对象,如文件、目录名等

以 “-”引导短格式选项(单个字符),例如“-l”
以“–”引导长格式选项(多个字符),例如“–color”
多个短格式选项可以写在一起,只用一个“-”引导,例如“-al”

[root@localhost ~]# ls  -l   /home
总计 8
drwx------ 2 benet benet 4096 09-08 08:50 benet

(4)Linux命令行的几个辅助操作:Tab,反斜杠,Ctrl U,Ctrl K,Ctrl L,Ctrl C

Tab键:自动补齐
反斜杠“\”:强制换行
快捷键 Ctrl+U:清空至行首
快捷键 Ctrl+K:清空至行尾
快捷键 Ctrl+L:清屏
快捷键 Ctrl+C:取消本次命令编辑

(5)获得命令帮助

  • 内部命令help
    查看Bash内部命令的帮助信息
  • 命令的“–help” 选项
    适用于大多数外部命令
    使用man命令阅读手册页
  • 使用“↑”、“↓”方向键滚动文本
    使用Page Up和Page Down键翻页
  • 按Q或q键退出阅读环境、按“/”键后查找内容
    使用info命令阅读信息页

三、目录和文件操作命令

1.文件,目录,文件内容,压缩命令总结

  • 目录操作命令
pwd、cd、ls、mkdir、du(统计目录及文件的空间占用)
  • 文件操作命令
touch(创建一个空文件)、file(查看文件类型)
cp、rm、mv
which(查找Linux命令文件并显示所在的位置)、find(用于查找文件或目录)、ln(为文件或目录建立链接)
  • 文件内容操作命令
cat、more、less
head、tail、wc、grep
  • 归档及压缩命令
gzip、bzip2、tar

2.目录操作命令:pwd,cd,ls,mkdir,du

(1)pwd命令
用途:查看工作目录(Print Working Directory)

(2)cd命令
用途:切换工作目录(Change Directory)
格式:cd [目录位置]

[root@localhost ~]# cd /etc/httpd                            绝对路径
[root@localhost httpd]# cd conf								
[root@localhost conf]# cd ~benet						相对路径
[root@localhost benet]# pwd
/home/benet
[root@localhost zhangsan]# ls -dl ../jerry							相对路径
drwx------ 2 jerry jerry 4096 09-14 21:50 ../jerry

(3)ls命令

  • 用途:列表(List)显示目录内容

  • 格式:ls [选项]… [目录或文件名]

  • 常用命令选项

-l :以长格式显示
-a:显示所有子目录和文件的信息,包括隐藏文件
-d:显示目录本身的属性
-A:类似于“-a”,但不显示“.”和“…”目录的信息
-h:以更易读的字节单位(K、M等)显示信息
-R:递归显示内容
–color:以颜色区分不同类型文件
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第5张图片
解释:
Shell中的两种通配符;
alias:对于经常使用的复杂命令行,通过命令别名可以大大提高输入效率;
单独执行alias命令可以查看当前用户环境中已经定义好的命令别名

(4)mkdir命令
用途:创建新的目录(Make Directory)
格式:mkdir [-p] [/路径/]目录名

[root@localhost ~]# mkdir -p mydir/level1/level2
[root@localhost ~]# ls -R mydir
mydir:
level1
mydir/level1:
level2
mydir/level1/level2:

(5)du命令

  • 用途:统计目录及文件的空间占用情况(estimate file space usage)

  • 格式:du [选项]… [目录或文件名]

  • 常用命令选项

-a:统计时包括所有的文件,而不仅仅只统计目录
-h:以更易读的字节单位(K、M等)显示信息
-s:只统计每个参数所占用空间总的大小

[root@localhost ~]# du -sh /etc/httpd/
184K    /etc/httpd/
  • du命令的“-s”、“-h”选项通常结合在一起使用,以统计指定文件夹总占用空间的大小

3.文件操作命令:touch,file,cp,rm,mv,which,find,ln

(1)touch命令
用途:新建空文件,或更新文件时间标记
格式:touch 文件名…

(2)file命令
用途:查看文件类型
格式: file 文件名…

[root@localhost ~]# touch  file1.txt  file2.doc
[root@localhost ~]# ls  file*
file1.txt    file2.doc
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for ……
  • 创建空文件的操作主要用于系统管理过程中的调试、测试目的
  • file命令则可以用于检测指定文件的实际类型

(3)cp命令
用途:复制(Copy)文件或目录
格式:cp [选项]… 源文件或目录… 目标文件或目录
常用命令选项

-r:递归复制整个目录树
-p:保持源文件的属性不变
-f:强制覆盖目标同名文件或目录
-i:需要覆盖文件或目录时进行提醒

(4)rm命令

  • 用途:删除(Remove)文件或目录
  • 格式:rm [选项]… 文件或目录
  • 常用命令选项

-f:强行删除文件或目录,不进行提醒
-i:删除文件或目录时提醒用户确认
-r:递归删除整个目录树

  • 使用“rm -rf 目录名”的形式可以不经提示即直接删除整个目录树,应慎用

(5)mv命令

  • 用途:移动(Move)文件或目录
    —— 若如果目标位置与源位置相同,则相当于改名

  • 格式:mv [选项]… 源文件或目录… 目标文件或目录

  • 如果目标位置与源位置相同,则效果相当于为文件或目录改名

  • 若需要移动的是多个文件或目录时,则目标必须是目录

(6)which命令
用途:查找Linux命令文件并显示所在的位置
—— 搜索范围由 PATH 环境变量指定
格式:which 命令或程序名

[root@localhost ~]# which  mkdir
/bin/mkdir
[root@localhost ~]# echo  $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# which  cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

注:cd是Shell内部命令,因此查不到对应文件

  • 执行“echo $PATH”可以查看PATH变量指定的内容

(7)find命令

  • 用途:用于查找文件或目录
  • 格式:find [查找范围] [查找条件]
  • 常用查找条件

-name:按文件名称查找
-size:按文件大小查找
-user:按文件属主查找
-type:按文件类型查找

  • 缺省查找范围时,将使用当前目录作为查找范围
  • 详细讲解find查找工具的相关用法,主要包括:

按名称查找:关键字为“-name”,根据目标文件的部分名称查找,允许使用“*”及“?”通配符。

按文件大小查找:关键字为“-size”,根据目标文件的大小进行查找,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件。常用的容量单位包括k(注意是小写)、M、G。

按文件属主查找:关键字为“-user”,根据文件是否属于目标用户进行查找。

按文件类型查找:关键字为“-type”,根据文件的类型进行查找,这里的类型指的是普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等。块设备指的是成块读取数据的设备(如硬盘、内存等),而字符设备指的是按单个字符读取数据的设备(如键盘、鼠标等)

(8)ln命令
用途:为文件或目录建立链接(Link)
格式:ln [-s] 源文件或目录… 链接文件或目标目录

常用命令选项

-s:建立符号链接文件(省略此项则建立硬链接)

关于链接文件

符号链接:指向原始文件所在的路径,又称为软链接
硬链接:指向原始文件对应的数据存储位置;
不能为目录建立硬链接文件
硬链接与原始文件必须位于同一分区(文件系统)中

4.文件内容操作命令:cat,more,less,head,less,wc,grep

(1)cat命令

  • 用途:显示出文件的全部内容
[root@localhost ~]# cat  /etc/host.conf
order hosts,bind
[root@localhost ~]# cat  /etc/resolv.conf
search localdomain
[root@localhost ~]# cat  /etc/resolv.conf  /etc/host.conf
search localdomain
order hosts,bind
  • 文件内容操作命令都需要使用文本文件的名称作为命令参数(或者通过管道操作获取文本内容)
  • cat命令本来用于连接多个文件的内容,但在实际使用中更多的用于查看文件内容
  • 当文件内容较多时,使用cat命令往往只能看到文件的最后一部分内容,而无法分页逐屏显示,若要分页显示,需要使用另外两个命令:more、less

(2)more命令
用途:全屏方式分页显示文件内容
交互操作方法:

按Enter键向下逐行滚动
按空格键向下翻一屏、按b键向上翻一屏
按q键退出

(3)less命令
用途:与more命令相同,但扩展功能更多
交互操作方法:

与more命令基本类似,但个别操作会有些出入
more命令结合管道操作使用时(例如:ls -R /etc | more)无法向上翻页,但less命令可以
在分页阅读界面中,到文件末尾时more命令会自动退出,less命令不会

(4)head命令
用途:查看文件开头的一部分内容(默认为10行)
格式:head -n 文件名

(5)tail命令
用途:查看文件结尾的少部分内容(默认为10行)
格式:tail -n 文件名
tail -f 文件名

[root@localhost ~]# tail -2 /var/log/messages
Sep 8 15:49:29 localhost scim-bridge: Cleanup, done. Exitting…
Sep 8 15:49:29 localhost Cleanup, done. Exitting…

  • tail命令结合“-f”选项使用时,可以用于跟踪日志文件末尾的内容变化,实时显示更新的日志内容

(6)wc命令
用途:统计文件中的单词数量(Word Count)等信息
格式:wc [选项]… 目标文件…

常用命令选项

-l:统计行数
-w:统计单词个数
-c:统计字节数
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第6张图片
(7)grep命令
用途:在文件中查找并显示包含指定字符串的行
格式:grep [选项]… 查找条件 目标文件

常用命令选项

-i:查找时忽略大小写
-v:反转查找,输出与查找条件不相符的行

查找条件设置

要查找的字符串以双引号括起来
“^……”表示以……开头
“……$ ”表示以……结尾
“^$”表示空行

eg:演示1:过滤出hosts文件中的非注释行(不以”#“号开头的行)

[root@localhost ~]# grep -v "^#" /etc/hosts
127.0.0.1       localhost.localdomain   localhost
::1     localhost6.localdomain6 localhost6

演示2:查找系统启动时识别的USB总线信息

[root@localhost ~]# dmesg | grep "USB"
drivers/usb/input/hid-core.c: v2.6:USB HID core driver

4.归档及压缩命令:gzip,bzip2,tar

(1)gzip命令、bzip2命令

  • 用途:制作压缩文件、解开压缩文件

  • 格式:gzip [-9] 文件名…
    bzip [-9] 文件名…
    gzip -d .gz格式的压缩文件
    bzip2 -d *.bz2格式的压缩文件

  • 常用命令选项

-9:表示高压缩比,多在创建压缩包时用
-d:用于解开已经压缩过的文件

  • 这两个命令工具通常并不单独使用,而是与tar命令结合起来使用
  • 通常认为bzip2的压缩效率要更好一些

(2)tar命令

  • 用途:制作归档文件、释放归档文件

  • 格式:tar [选项]… 归档文件名 源文件或目录
    tar [选项]… 归档文件名 [-C 目标目录]

  • 常用命令选项

-c:创建 .tar 格式的包文件
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-p:打包时保留原始文件及目录的权限
-t:列表查看包内的文件
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第7张图片

  • 制作归档文件的意思是将许多零散的文件做成一个包(可以压缩,也可以不压缩)
  • 小写字母“-p”选项用于保持原始文件权限等信息,大写字母“-P”选项用于保持原始文件的绝对路径

四、Bash的常用功能

1.Bash的命令历史

(1)命令历史
保存用户曾经执行过的命令操作
存放位置:~/.bash_history 文件

(2)查看历史命令

[root@localhost root]# history
……
556  useradd  jerry
557  passwd  jerry
558  crontab  -e  -u  jerry
559  crontab  -l  -u  jerry

(3)调用历史命令
!n:执行历史记录中的第n条命令
!str:执行历史记录中以“str”开头的命令

(4)设置记录历史命令的条数
修改 HISTSIZE 参数(默认为1000条)

[root@localhost root]# !562
crontab -l -u jerry
no crontab for jerry
[root@localhost ~]# vi /etc/profile
HISTSIZE=200
  • 正确使用历史命令可以有效提高命令行输入的效率,例如:如果之前不久执行过“service network restart”命令,则重新修改了网卡的配置文件以后,通常只需要执行“!ser”操作即可调用该历史命令,以重启network服务
  • 合理控制历史命令的条数可以提高安全性,root用户的命令历史一般建议设置为少于100条

2.Bash的命令别名

(1)命令别名
为使用频率较高的复杂命令行设置简短的调用名称
存放位置:~/.bashrc

(2)查看命令别名

[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
……
  • 手动使用alias命令设置的别名只在当前Shell环境中有效
  • 若需每次登录Shell环境时设置的别名都有效,需要修改宿主目录中的“.bashrc”文件,添加相应别名设置

3.正则表达式

(1)正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab” 描述的特征是“一个 ‘a’ 和 任意多个 ‘b’ ,那么 ‘ab’, ‘abb’, ‘abbbbbbbbbb’ 都符合这个特征。

(2)表达式可以用来:

(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。
(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
(3)用来替换,比普通的替换更强大。

(3)基本的正则表达式
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第8张图片

(4)创建正则表达式

行以 “Test”or”test”开头:
^[tT]est

行以 “end.”结尾:
end\.$

整行是: This is a test. :
^This is a test\.$

以下任意名称:file5,file6,file7,file8 :
file[5678]

以下任意名称:file2,file4,file6,file8 :
file[2468]

(5)创建grep命令
使用grep命令查找 /etc/passwd 文件中的字符串:

打印以字母 r 开头的所有的用户名
打印以字母 g 开头的所有的用户名
打印其 shells (最后一列) 为 /sbin/nologin的所有账户
打印 UID or GID (第三或第四列) 为 0 的所有账户
打印 UID or GID 在 10-19 之间的所有账户

   1. 	grep  ‘^r’  /etc/passwd 
   2. 	grep ‘^g’  /etc/passwd 
   3. 	grep ‘/sbin/nologin$’   /etc/passwd 
   4.  grep ‘:0:’   /etc/passwd 
   5.  grep ‘:1[0-9]:’   /etc/passwd 

4.管道和重定向

(1)重定向允许将标准输出或错误消息从程序重定向到文件, 以进行保存或稍后分析,或禁止其在终端显示。还可以通过文件而非键盘将输入读取至命令行程序

管道允许叫标准输出信息从程序连接至另一个程序的输入,每个程序作用于前一个程序的输出。

(2)交互式硬件设备

标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第9张图片

  • Linux系统是使用文件来描述系统的硬件、设备等资源的(例如已经学习过的硬盘、分区、光盘等)

(3)改变标准输入、标准输出、标准错误的方向

  • 在实际的Linux操作过程中,也可以变更输入输出内容的方向,而并不使用默认的标准输入输出设备(键盘和显示器),这种操作称为“重定向”

(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第10张图片

  • eg:输出重定向实例
将标准输出重定向到文件
$ ls /etc/ > etcdir

将标准输出重定向追加到文件
$ ls /etc/sysconfig/ >> etcdir 

将错误输出重定向到文件
$ nocmd 2> errfile

将标准输出和错误输出重定向到文件
$ ls afile bfile &> errfile

(4)Bash的管道操作

  • 管道操作符号“|”
    连接左右两个命令,将左侧的命令输出的结果,作为右侧命令的输入(处理对象)
    格式:cmd1 | cmd2 [… | cmdn]
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第11张图片

  • awk命令用于以空格或制表位作为分隔,输出指定区域的字段数据,例如 ‘{print $2,$4}’ 表示只输出第2、4个字段的数据内容

  • eg:

1. 列出 /usr/share/doc 中以数字4结尾的文件. 
	ls  /usr/share/doc  I  grep ‘4$’ 
	
2. 打印 /etc/hosts 中包含数字的所有行 
	grep  ‘[0-9]’   /etc/hosts 
	
3. 打印 /etc/hosts 中包含 127.0.0.1 的行
		grep  ‘127\.0\.0\.1’   /etc/hosts
		
4. 以 student用户运行以下命令, 
   并将 STDOUT重定向到/tmp/output . txt 
   将 STDERR 重定向到 /tmp/error .txt:       
    find /etc -name host*
	find  /etc -name ‘host*’> /tmp/output.txt 2> /tmp/error.txt 

5. 以 student用户身份运行以下命令, 并将 STDOUT 和 STDERR重定向到 / tmp/all.txt 文件. 
    find /etc -name host*
	find /etc -name host* >&  /tmp/all.txt

6. 排列 /etc/passwd 文件,并将其发送到默认打印机
	cat /etc/passwd | sort | lpr

7. 打印 /etc/passwd 中冒号之间是三位数的行
grep ‘:[0-9][0-9][0-9]:’ /etc/passwd 

五、文本编辑器概述

1.文本编辑器概述

(1)文本编辑器的作用

创建或修改文本文件
维护Linux系统中的各种配置文件

(2)Linux中最常用的文本编辑器

vi:类Unix系统中默认的文本编辑器
vim:vi编辑器的增强版本,习惯上也称为vi

(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第12张图片

  • 配置文件是Linux系统中的显著特征之一,其作用有点类似于Windows系统中的注册表
  • 对配置文件的管理和维护需要使用文本编辑器
  • vim是vi编辑器的增强版本,但是习惯上也将vim称作vi ,可以建立vi到vim的命令别名,以方便使用

2.vi文本编辑器的工作模式

(1)三种工作模式
命令模式、输入模式、末行模式

(2)不同模式之间的切换
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第13张图片

1)命令模式:启动vi编辑器后默认进入命令模式,该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作
2)输入模式:该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改、或者添加新的内容。处于输入模式时,vi编辑器的最后一行会出现“-- INSERT --”的状态提示信息
3)末行模式:该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现冒号“:”提示符

(3)命令行模式下的光标移动

  • 常用的操作键(能够迅速提高文本编辑效率),其余的有个印象就可以了
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第14张图片
    (4)命令行模式下的复制、粘贴、删除
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第15张图片
    (5)命令行模式下的文件内容查找
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第16张图片
    (6)命令行模式下的撤销编辑以及保存退出
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第17张图片

(7)末行模式中的保存文件及退出vi编辑器
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第18张图片
(8)末行模式中的打开新文件或者读入其他文件内容
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第19张图片
(9)末行模式中的文件内容替换
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第20张图片

六、用户和组管理

1.Linux基于用户身份对资源访问进行控制

(1)用户账号

超级用户root
普通用户
程序用户

(2)组帐号

基本组(私有组)
附加组(公共组)

(3)UID和GID

UID(User Identity,用户标识号)
GID(Group Identify,组标识号)

  • 超级用户,即root用户,类似于Windows系统中的Administrator用户,非执行管理任务时不建议使用root用户登录系统
  • 普通用户帐号一般只在用户自己的宿主目录中有完全权限
  • 程序用户:用于维持系统或某个程序的正常运行,一般不允许登录到系统。例如:bin、daemon、ftp、mail等
  • root用户的UID的固定值为0、root组帐号的GID号为固定值0
  • 1~499的UID、GID默认保留给程序用户使用,普通用户/组使用的UID、GID号在500~60000之间

2.用户帐号文件 —— passwd

(1)用于保存用户的帐号基本信息

文件位置:/etc/passwd
每一行对应一个用户的帐号记录

[root@localhost ~]# tail -2 /etc/passwd
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
student:x:500:500:Student User:/home/student:/bin/bash

 字段1:用户帐号的名称
 字段2:用户密码字串或者密码占位符“x”
 字段3:用户帐号的UID号
 字段4:所属基本组帐号的GID号
 字段5:用户全名
 字段6:宿主目录
 字段7:登录Shell信息

3.用户帐号文件 —— shadow

(1)用于保存密码字串、密码有效期等信息

文件位置:/etc/shadow
每一行对应一个用户的密码记录

[root@localhost ~]# tail -2 /etc/shadow
sabayon:!!:15495:0:99999:7:::
student:$1$po/zD0XK$4HSh/Aeae/eJ6dNj1k7Oz1:15495:0:99999:7:::

 字段1:用户帐号的名称
 字段2:加密的密码字串信息
 字段3:上次修改密码的时间,从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数 
 字段4:密码的最短有效天数,默认值为0
 字段5:密码的最长有效天数,默认值为99999
 字段6:提前多少天警告用户口令将过期,默认值为7
 字段7:在密码过期之后多少天禁用此用户
 字段8:帐号失效时间,默认值为空
 字段9:保留字段(未使用)
  • 默认只有root用户能够读取文件中的内容,并且不允许root直接编辑该文件中的内容
  • 上次修改密码的时间,表示从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数

4.添加用户帐号——useradd

(1)useradd命令
格式:useradd [选项]… 用户名

(2)常用命令选项

-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell

(3)eg:
——创建名为st02的用户帐号,并将其UID号指定为504
[root@localhost ~]# useradd -u 504 st02
[root@localhost ~]# tail -1 /etc/passwd
st02: x:504:504::/home/st02:/bin/bash

(4)
——创建一个考试测试用的帐号exam01,指定属于users组,该帐号于2009-07-30失效
[root@localhost ~]# useradd -g users -e 2009-07-30 exam01

  • 说明:使用adduser命令也可以添加用户帐号,在RHEL5系统中adduser命令实际上是useradd命令的符号链接

(5)用户帐号的初始配置文件

  • 文件来源
    新建用户帐号时,从 /etc/skel 目录中复制而来
  • 主要的用户初始配置文件
    .bashrc文件中默认设置了一些命令别名
    默认情况下,用户宿主目录下的初始配置文件只对当前用户有效,而全局配置文件对所有用户有效
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行

[root@localhost ~]# cat ~/.bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
……

5.设置/更改用户口令——passwd

(1)passwd命令
格式:passwd [选项]… 用户名

  • 常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定) 
-u:解锁用户帐号
  • “未设置密码”的用户帐号尚未完成初始化,处于不可登录状态,这与“空密码”的情况(已经为用户设置密码,但密码字串为空)是不同的
    —— “未设置密码”的用户将被禁止登录系统,而拥有“空密码”的用户是可以在本地终端登录的
  • 普通用户也可以使用passwd命令,但只能更改自己的密码,密码要求有一定的复杂性(如不要直接使用英文单词,长度保持在6位以上),否则系统可能拒绝进行设置
  • 被锁定的帐号也将无法登录系统

6.修改用户帐号的属性——usermod

(1)usermod命令
格式:usermod [选项]… 用户名

  • 常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
 -u、-d、-e、-g、-G、-s
  • usermod有两个选项“-L”、“-U”,分别用于锁定、解锁用户帐号,这两个选项与passwd命令的“-l”、“-u”选项作用基本相同,只不过大小写存在区别

7.删除用户帐号——userdel

(1)userdel命令
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第21张图片

8.改变用户密码期限

(1)chage命令
格式:chage [选项]… 用户帐号名

常用命令选项

-M:密码的最长有效天数
-m:密码的最短有效天数
-W:密码的警告天数
-I:密码的有效天数
-E:密码的过期时间

9.组帐号文件 — group、gshadow

(1)与用户帐号文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息
(总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第22张图片
(2)/etc/gshadow文件的应用极少

  • group文件内的最后一个字段中列出属于该组的用户成员,多个成员之间以逗号“,”分隔

10.添加组帐号——groupadd

(1)groupadd命令
格式:groupadd [-g GID] 组帐号名

  • 使用groupadd命令可以添加一个组帐号,需要指定GID号时,可以使用“-g”选项
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第23张图片

11.添加、删除组成员——gpasswd

(1)gpasswd命令
用途:设置组帐号密码(极少用)、添加/删除组成员
格式:gpasswd [选项]… 组帐号名

(2)常用命令选项

  • 使用“-M”选项时可以为指定组帐号定义成员列表(注意:会覆盖原有组成员),需要添加多个用户到指定的组中时非常方便
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,root,adm
[root@localhost ~]# gpasswd -d root market
正在将用户“root”从“market”组中删除
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,adm

[root@localhost ~]# gpasswd -a benet market
正在将用户“benet”加入到“market”组中
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet
[root@localhost ~]# gpasswd -M benet,root,adm market
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,root,adm

12.删除组帐号——groupdel

(1)groupdel命令
格式:groupdel 组帐号名

[root@localhost ~]# groupdel market
[root@localhost ~]# grep "market" /etc/group
[root@localhost ~]#
  • 删除组帐号后,从/etc/group文件中将查不到相应的记录

13.用户和组帐号查询——id,groups,finger

(1)id命令
用途:查询用户身份标识
格式:id [用户名]

(2)groups命令
用途:查询用户所属的组
格式:groups [用户名]

(3)finger命令
用途:查询用户帐号的详细信息
格式:finger [-l] [用户名]

(4)users、w 、who命令
用途:查询已登录到主机的用户信息

14.图形化的用户和组管理工具

(1)打开方式:
“系统”->“管理”->“用户和组群”

15.文件/目录的权限和归属

(1)访问权限和归属权限

  • 访问权限

读取:允许查看文件内容、显示目录列表
写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行:允许运行程序、切换目录

  • 归属(所有权)

属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号

(2)查看文件/目录的权限和归属

  • “-rw-r—r–”部分的第一个字符表示文件类型,可以是d(目录)、b(块设备文件)、c(字符设备文件),减号“-”(普通文件)、字母“l”(链接文件)等
  • 其余部分指定了文件的访问权限
  • 在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了四种不同的权限字符: r 可读 ;w 可写 ;x 可执行 ;- 无权限
  • r、w、x、- 权限字符还可分别表示为8进制数字4、2、1、0
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第24张图片

(3)设置文件/目录的权限——chmod

  • chmod命令

  • “nnn”为需要设置的具体权限值,如“755”、“644”等
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第25张图片

  • 常用命令选项
    -R:递归修改指定目录下所有文件、子目录的权限

  • eg:

—— 重新设置mymkdir文件的权限,为属主用户添加执行权限,去除其他用户的读取权限
[root@localhost ~]# chmod u+x,o-r mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr----- 1 root root 29588 05-12 06:19 mymkdir

—— 重新设置mymkdir文件的访问权限,恢复为“rwxr-xr-x”
[root@localhost ~]# chmod 755 mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr-xr-x 1 root root 29588 05-12 06:19 mymkdir 

—— 使用递归的方式将“/usr/src/”目录中所有子目录、文件的权限都设置为“rw-r--r--”
[root@localhost ~]# chmod -R 644 /usr/src/
  • eg:使用chmod命令设置文件权限
查看文件权限
$ ls -l afile
-rw-rw-r--  1 st01 class1 0 Apr  3 16:52 afile

增加文件属主st01的执行权限(x)
$ chmod u+x afile

去除文件属组class1的写权限(w)
$ chmod g-w afile

设置属主权限为读写,属组其他用户的文件权限为读
$ chmod 644 afile 

(4)设置文件/目录的归属——chown

  • chown命令
    格式:chown 属主的文件或目录
    chown :属组的文件或目录
    chown 属主:属组的文件或目录

  • 需要设置文件或者目录的归属时,可以通过chown、chgrp命令进行

  • chown命令既可以修改属主,也可以修改属组,而chgrp命令只用于修改属组信息(因此并不常用)

  • 常用命令选项
    -R:递归修改指定目录下所有文件、子目录的归属

  • eg:chown命令用于设置文件的属主和属组

命令格式
chown OWNER[:[GROUP]] FILE... 

设置文件afile的属主为用户st01
# chown st01 afile 

设置文件afile的属组为用户组class1
# chown :class1 afile

设置文件afile的属主为st03,并设置文件的属组为class2
# chown st03:class2 afile 

(5)使用附加权限——设置SET位、粘滞位权限

  • 主要用途:

为可执行(有 x 权限的)文件设置,权限字符为“s”
其他用户执行该文件时,将拥有属主或属组用户的权限

  • SET位权限类型:

SUID:表示对属主用户增加SET位权限
SGID:表示对属组内的用户增加SET位权限
如果SGID是设定在目录上面,则在该目录内所建立的文件或目录的所属组,将会自动成为此目录的所属组。

  • 普通用户并没有权限修改“/etc/shadow”文件,那为什么可以修改自己的登录密码呢?
    —— 这是因为:passwd命令程序被设置了SUID权限,普通用户在执行该命令时临时获得相当于属主用户(root)的权限

  • 不要轻易为可执行文件设置SET位权限,特别是对于那些属主、属组是root的执行程序,使用SET位权限时更应该慎重。

  • 例如,若为vim编辑器程序设置SUID权限,将导致普通用户也可以使用vim编辑器修改系统中的任何配置文件

(2)eg:

  • /usr/bin/passwd
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第26张图片
  • / home/cnrts
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第27张图片
    (3)粘滞位权限(Sticky)
  • 主要用途:

为公共目录(例如,权限为777的)设置,权限字符为“t”
用户不能删除该目录中其他用户的文件

  • eg:/tmp、/var/tmp
    (总结一)Linux指令学习——目录,文件,bash,vi,用户和组管理_第28张图片
  • 由于系统及服务程序运行的需要, Linux提供了/tmp、/var/tmp等临时目录,允许任意用户、程序写入数据
  • 然而试想一下,若任意一个普通用户都能够删除系统服务运行中使用的临时文件,将造成什么后果?
  • 设置粘滞位以后,正好可以保持一种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据

(4)设置SET位、粘滞位权限

  • 使用权限字符
 chmod  ug±s  可执行文件...
 chmod  o±t  目录名...

使用权限数字:

 chmod  mnnn  可执行文件...
 m为4时,对应SUID,2对应SGID,1对应粘滞位,可叠加
  • eg:

SET位标记字符为“s”,若使用8进制数字形式,则SUID对应为“4”、SGID对应为“2”

在权限模式中可采用“nnnn”的形式时,如“4755”表示设置SUID权限、“6755”表示同时设置SUID、SGID权限

以 /bin/touch 命令设置SUID权限为例进行演示,普通用户使用该命令创建测试文件,比较新建文件的属主变化
注意:为普通文件(无执行权限的)设置SET位权限从语法上虽然也可行,但没有实际意义(标记字符将变为大写字母“S”)

通过实例操作演示,展示粘滞位的作用,例如:由普通用户1在 /tmp 目录中尝试删除 普通用户2的文件,对比是否设置粘滞位的区别

注意:为普通文件或者用户本没有写入权限的目录设置粘滞位语法上也是可行的,但没有实际意义(标记字符将变为大写字母“T”)

16.文件ACL权限

(1)ACL是 Access Control List 的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的细部权限设定。

(2)ACL可以针对单一使用者,单一文件或目录来进行r,w,x的权限规范,对于需要特殊权限的使用状况非常有帮助。

(3)ACL 主要可以针对以下方面来控制权限:

  • 使用者 (user):可以针对使用者来设定权限;
  • 组群 (group):针对用户组为对象来设定其权限;
  • 预设属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的预设权限

(3)

查看:
   		$ getfacl filename 
修改 :
		$ setfacl -m u:username:rw filename 
		$ setfacl -m g:groupname:rw filename
删除 :
		$ setfacl -x u:username filename

(4)tune2fs是linux下面重要的文件系统调整工具,其中的几个选项解释如下:
-c:表示文件系统在mount次数达到设定后,需要运行fsck检查文件系统。
-i:文件系统的检查间隔时间。系统在达到时间间隔时,自动检查文件系统。
-l:显示文件系统的很多参数。
-j:转换为ext3文件系统。
-m: Set the percentage of reserved filesystem blocks。 设置保留的空间百分比
-o: Set or clear the indicated default mount options in the filesystem.设置默认加载参数
通常如果使用ext3文件系统的话,使用-c 0关掉mount次数达到后的文件系统检查。

tune2fs -m 10 /dev/sda1
tune2fs -o acl,user_xattr /dev/sda1
tune2fs -i 0 -c0 /dev/sda1

显示当前的磁盘状态(dumpe2fs)

[root@tonykorn97 /]# dumpe2fs /dev/sda1

你可能感兴趣的:(鸟哥Linux私房菜)