Linux常用命令详解(三)_权限管理

时间:2022-08-31 16:41:49

chmod命令

chmod命令用于改变系统文件或目录的访问权限。chmod命令有两种形式,一种是字母形式,一种是八进制数字形式。

在任意目录下,使用 ls -l,查看文件列表。
如:

[shmilychan@localhost ~]$ ls -l
total 8
drwxr-xr-x. 2 shmilychan shmilychan  35 Aug 28 21:38 Desktop
drwxr-xr-x. 2 shmilychan shmilychan   6 Aug 19 02:51 Documents
drwxr-xr-x. 2 shmilychan shmilychan   6 Aug 19 02:51 Downloads
-rw-rw-r--. 1 shmilychan shmilychan   0 Aug 30 03:09 help
drwxr-xr-x. 2 shmilychan shmilychan   6 Aug 19 02:51 Music
-rw-------. 1 shmilychan shmilychan   0 Sep  6 02:35 nohup.out
drwxr-xr-x. 2 shmilychan shmilychan   6 Aug 19 02:51 Pictures
drwxr-xr-x. 2 shmilychan shmilychan   6 Aug 19 02:51 Public
drwxr-xr-x. 2 shmilychan shmilychan   6 Aug 19 02:51 Templates
-rw-rw-r--. 1 shmilychan shmilychan 448 Sep  5 04:25 test01.sh

ls -l 输出命令的含义

字符 含义
(第一个字符)- 普通文件
(接下来的三个字符)rw- 文件属主的权限
(再接下来的三个字符 )r– 同组用户的权限
(最后三个字符 )r– 其他用户的权限


这三组字符(除第一个字符外)分别定义了:

  • 文件属主所拥有的权限。
  • 文件属主缺省组(一个用户可以属于很多的组 )所拥有的权限。
  • 系统中其他用户的权限。

在每一组字符中含有 三个权限位

  • r 读权限
  • w 写/更改权限
  • x 执行该脚本或程序的权限

改变权限位格式:

chmod [who] operator [permission] filename

权限范围(who):

u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户 )

operator的含义:

+ 增加权限。
- 取消权限。
= 设定权限。

permission的含义:

r 读权限

w 写权限

x 执行权限

s 文件属主和组set-ID

t 粘性位*

l 给文件加锁,使其他用户无法访问

u,g,o 针对文件属主、同组用户及其他用户的操作

使用字母改变权限

实例:

1.增加用户权限

$chmod [ugo]+[rwx] filename/dir    //同时修改不同用户权限使用","隔开,删除权限使用"-"

2.对一个目录及其子目录所有文件添加权限

$ chmod -R [ugo]+[rwx] filename    //删除权限使用"-"

使用数字改变权限

八进制目录/文件权限表示

八 进 制 数 含 义 八 进 制 数 含 义
0400 文件属主可读 0010 同组用户可执行
0200 文件属主可写 0004 其他用户可读
0100 文件属主可执行 0002 其他用户可写
0040 同组用户可读 0001 其他用户可执行
0020 同组用户可写

如:

$ chmod 755 filename

chgrp命令

在lunix系统里,文件或目录的权限被拥有者和系统管理员掌控。可以使用chgrp指令取变更文件与目录所属群组,chgrp命令就是change group的缩写。要被改变的组名必须要在/etc/group文件内存在才行。chgrp命令可采用群组名称或群组识别码的方式改变文件或目录的所属群组,使用权限是root用户。

格式:

chgrp [option] [para]

选项:

-c 当发生改变时输出调试信息

-f 不显示错误信息

-R 处理指定目录以及其子目录下的所有文件

-v 运行时显示详细的处理信息

chown命令

通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

格式:

chown [option] [para]

选项:

-c 显示更改的部分的信息

-f 忽略错误信息

-h 修复符号链接

-R 处理指定目录以及其子目录下的所有文件

-v 显示详细的处理信息

chmod -R -h owner file  //改变所有子目录的文件属主

df命令

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。

格式:

df [option]

选项:

-a 全部文件系统列表

-h 方便阅读方式显示

-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024

-i 显示inode信息

-k 区块为1024字节

-l 只显示本地文件系统

-m 区块为1048576字节

--no-sync 忽略 sync 命令

-P 输出格式为POSIX

--sync 在取得磁盘信息前,先执行sync命令

-T 文件系统类型

应用实例:

1.显示磁盘使用情况

$ df 

如:

[shmilychan@localhost ~]$ df
Filesystem            1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root  18307072 2999896  15307176  17% /
devtmpfs                 918804       0    918804   0% /dev
tmpfs                    934344     156    934188   1% /dev/shm
tmpfs                    934344   17544    916800   2% /run
tmpfs                    934344       0    934344   0% /sys/fs/cgroup
/dev/sda1                508588  160796    347792  32% /boot
tmpfs                    186872       4    186868   1% /run/user/42
tmpfs                    186872      20    186852   1% /run/user/1000
/dev/sr0                3947824 3947824         0 100% /run/media/shmilychan/RHEL-7.2 Server.x86_64
tmpfs                    186872       0    186872   0% /run/user/0

linux中df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第3,4列分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的挂载点。

2.以inode模式显示磁盘使用情况

$ df -i

3.以更易读方式显示

$ df -h   //以1K=1024
$ df -H   //以1K=1000

4.以常用格式显示

$ df -g        //以G形式显示
$ df -m        //以M形式显示
$ df -k        //以K形式显示

5.列出文件系统的类型

$ df -T

du命令

显示每个文件和目录的磁盘使用空间。

格式:

du [option]

选项:

-a或-all 显示目录中个别文件的大小

-b或-bytes 显示目录或文件大小时,以byte为单位

-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和

-k或--kilobytes 以KB(1024bytes)为单位输出。 -m或--megabytes 以MB为单位输出

-s或--summarize 仅显示总计,只列出最后加总的值

-h或--human-readable 以K,M,G为单位,提高信息的可读性

 -x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小

-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小

-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件

-exclude=<目录或文件> 略过指定的目录或文件

-D或--dereference-args 显示指定符号链接的源文件大小

-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位

-l或--count-links 重复计算硬件链接的文件

应用实例:

1.显示目录或者文件所占空间

$ du

2.显示指定文件所占空间

$ du test.txt

3.显示总和的大小

$ du -s

4.以方便查阅的方式显示

$ du -h test
$ du -ah test      //文件和目录都显示

5.按空间大小排序

$ du|sort -nr|more
$ du -h --max-depth=1          //当前目录下各个子目录所使用情况

ln命令

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用”-s”选项。

注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

格式:

ln [option] [para]

选项:

-b或--backup:删除,覆盖目标文件之前的备份

-d或-F或——directory:建立目录的硬连接

-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在

-i或——interactive:覆盖既有文件之前先询问用户

-n或--no-dereference:把符号连接的目的目录视为一般文件

-s或——symbolic:对源文件建立符号连接,而非硬连接

-S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它

-v或——verbose:显示指令执行过程

-V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串

参数:

  • 源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件
  • 目标文件:指定源文件的目标连接文件。

应用实例:

1.创建符号链接(软链接)

ln -s /test/log201609.log /test1/log201608.log

2.创建硬链接

ln log201609.log /home/test/log201608.log

注意:
1.目录只能创建软链接

2.目录创建链接必须用绝对路径,相对路径创建会不成功,会提示:符号连接的层数过多这样的错误

3.在链接目标目录中修改文件都会在源文件目录中同步变化

diff命令

diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。

格式:

diff [option] [para]

常用命令:

$ diff filename1 filename2    //使用diff指令对文件进行比较

date命令

date命令是显示或设置系统时间与日期。 很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

格式:

date [option] [para]

选项:

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号

-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号

-u:显示GMT

应用实例:

1.格式化时间输出

$ date +"%Y-%m-%d"

2.输出昨天日期

$ date -d "1 day ago" +"%Y-%m-%d"      //输出昨天日期

3.5秒后输出

$ date -d "5 second" +"%Y-%m-%d %H:%M.%S"

4.设定时间

$ date -s time      

cal命令

用于显示当前日历,或者指定日期的日历

格式:

cal [option] [para]

选项:

-l:显示单月输出

-3:显示临近三个月的日历

-s:将星期日作为月的第一天

-m:将星期一作为月的第一天

-j:显示日期,按天显示

-y:显示当前年的日历