文件属性、用户管理、权限

一.文件类型:

预备姿势:扩展名 .avi .txt .log .sh
Windows: 系统根据不同的扩展名 区分不同类型的文件.
Linux: 扩展名是给我们看的。方便人类区分不同类型的文件

预备姿势:常见的扩展名
.txt 文本文件
.log 日志文件
.conf .cfg 配置文件
.sh .bash 脚本文件(命令大礼包)

常见的文件类型:

- ==file 普通文件
d ==diectory 目录
l ==softlink 软连接(快捷方式)
b ==block 设备(块)文件 光盘 硬盘
c ==character 字符设备(不断向外发出或接受字符)

- file 普通文件详解

1.二进制文件(命令)
2.文本文件(text)
3.数据文件(data) 压缩包

查看文件的属性信息

ls -l ==查看文件属性
例子

[root@oldboyedu59 oldboy]# ls   -l /bin/ls /oldboy/alex.txt 
-rwxr-xr-x. 1 root root 117680 Oct 31 03:16 /bin/ls
-rw-r--r--  1 root root      0 Mar 29 09:03 /oldboy/alex.txt

查看文件属性的例子:

[root@oldboyedu59 oldboy]# file /bin/ls  /oldboy/alex.txt 
/bin/ls:          ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
/oldboy/alex.txt: ASCII text
/etc/init.d/network 

CentOS6中执行重启网卡命令
systemctl restart network ==== /etc/init.d/network restart

如何区分文件类型(如何查看)

file命令==查看文件的类型
例子:

image

d 目录 (文件夹)

l softlink 软连接/符号链接(快捷方式) 存放源文件的位置

创建软连接例子:

touch /oldboy/oldboy.txt 
[root@oldboyedu59 oldboy]# touch /oldboy/oldboy.txt
[root@oldboyedu59 oldboy]# ls -l /oldboy/
total 8
drwxr-xr-x. 3 root root 19 Mar 28 11:57 alex
-rw-r--r--  1 root root  7 Apr  9 15:08 alex.txt
-rw-r--r--  1 root root 65 Apr  1 20:52 oldboy.avi
-rw-r--r--  1 root root  0 Apr  9 15:19 oldboy.txt
-rw-r--r--. 1 root root  0 Mar 28 12:38 oldboy.txt.bak
[root@oldboyedu59 oldboy]# ln -s  /oldboy/oldboy.txt 
 /oldboy/oldboy.txt.soft
[root@oldboyedu59 oldboy]# ls -l /oldboy/
total 8
drwxr-xr-x. 3 root root 19 Mar 28 11:57 alex
-rw-r--r--  1 root root  7 Apr  9 15:08 alex.txt
-rw-r--r--  1 root root 65 Apr  1 20:52 oldboy.avi
-rw-r--r--  1 root root  0 Apr  9 15:19 oldboy.txt
-rw-r--r--. 1 root root  0 Mar 28 12:38 oldboy.txt.bak
lrwxrwxrwx  1 root root 18 Apr  9 15:20 oldboy.txt.soft -> /oldboy/oldboy.txt
[root@oldboyedu59 oldboy]# file /oldboy/oldboy.txt.soft 
/oldboy/oldboy.txt.soft: symbolic link to `/oldboy/oldboy.txt'

[root@oldboyedu59 oldboy]# ls -l /bin  /sbin  /etc/init.d  /etc/rc.local 
lrwxrwxrwx. 1 root root  7 Mar 26 11:38 /bin -> usr/bin
lrwxrwxrwx. 1 root root 11 Mar 26 11:37 /etc/init.d -> rc.d/init.d
lrwxrwxrwx. 1 root root 13 Mar 26 11:39 /etc/rc.local -> rc.d/rc.local
lrwxrwxrwx. 1 root root  8 Mar 26 11:38 /sbin -> usr/sbin

b block 设备(块)文件 光盘 硬盘

[root@oldboyedu59 oldboy]# ls -l /dev/cdrom /dev/sr0  /dev/sda
lrwxrwxrwx 1 root root      3 Apr  3 14:39 /dev/cdrom -> sr0
brw-rw---- 1 root disk   8, 0 Apr  3 14:39 /dev/sda
brw-rw---- 1 root cdrom 11, 0 Apr  3 14:39 /dev/sr0

c character 字符设备(不断向外发出或接受字符)
/dev/urandom 随机字符生成器 (生成随机密码)
/dev/null 黑洞(不断接受信息 )
/dev/zero 白洞(不断发出信息 无法查看)

[root@oldboyedu59 ~]# echo {a..z}  {0..10} > /oldboy/oldboy.txt
[root@oldboyedu59 ~]# cat /oldboy/oldboy.txt
a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 10

[root@oldboyedu59 ~]# tr 'a-z'  'A-Z'  </oldboy/oldboy.txt
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10
[root@oldboyedu59 ~]# #删除
[root@oldboyedu59 ~]# #tr -d '要删除的内容'    </oldboy/oldboy.txt
[root@oldboyedu59 ~]# tr -d 'a-z'    </oldboy/oldboy.txt
                          0 1 2 3 4 5 6 7 8 9 10
[root@oldboyedu59 ~]# #tr -cd  #-d删除  -c取反
[root@oldboyedu59 ~]# tr -cd 'a-z' </oldboy/oldboy.txt
abcdefghijklmnopqrstuvwxyz[root@oldboyedu59 ~]# 

[root@oldboyedu59 ~]# tr -cd 'a-zA-Z0-9'   </dev/urandom |head -c 8
xoRe6cQs[root@oldboyedu59 ~]# 

查询相关命令;
which:显示命令的全路径
whereis:显示命令及其相关文件全路径

[root@oldboyedu59 ~]# \which sed awk grep
/usr/bin/sed
/usr/bin/awk
/usr/bin/grep

yum故障集合:

Error: Nothing to do
    No package locate available.

没有叫做locate 的软件包

如何查询命令属于哪个软件包

软件包-多个命令

yum provides locate
mlocate-0.26-8.el7.x86_64 : An utility for finding files by name

软件包叫mlocate el7(centos7) 64位
Repo : base
Matched from:
Filename : /usr/bin/locate

光盘安装

[root@oldboyedu59 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@oldboyedu59 ~]# ls /mnt/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@oldboyedu59 ~]# rpm -ivh    /mnt/Packages/mlocate-0.26-8.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
    package mlocate-0.26-8.el7.x86_64 is already installed
[root@oldboyedu59 ~]# rpm -qa mlocate 
mlocate-0.26-8.el7.x86_64

在服务器连接不上网路的情况下可以使用光盘安装

find 命令=查找目录下的文件
例子:

[root@oldboyedu59 ~]# find  /oldboy -type f  -name "oldboy.txt"
/oldboy/alex/lidao/oldboy.txt
/oldboy/oldboy.txt

通过find命令找出ip命令的位置。

[root@oldboyedu59 ~]# find  /oldboy -type f  -name "*.txt"
/oldboy/alex/lidao/oldboy.txt
/oldboy/alex.txt
/oldboy/oldboy.txt

find也可以像tree命令一样显示文件目录
tree -L 1 -d

[root@oldboyedu59 ~]# find / -type d -maxdepth 1
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.

错误解析:warning 警告
-maxdepth 这个参数要放在其他参数之前。

[root@oldboyedu59 ~]# find /  -maxdepth 1 -type d 
/
/boot
/dev
/proc
/run
/sys
/etc
/root
/var
/tmp
/usr
/home
/media
/mnt
/opt
/srv
/old
/oldboy
/lidao
/oldwang
/newwang
/data
/tmp01

find -iname参数==不区分大小写

[root@oldboyedu59 ~]# find  /oldboy/alex/   -type f  -name "oldboy*.txt"
/oldboy/alex/lidao/oldboy.txt
/oldboy/alex/oldboy01.txt
/oldboy/alex/oldboy02.txt
/oldboy/alex/oldboy03.txt
/oldboy/alex/oldboy04.txt
/oldboy/alex/oldboy05.txt
[root@oldboyedu59 ~]# find  /oldboy/alex/   -type f  -iname "oldboy*.txt"
/oldboy/alex/lidao/oldboy.txt
/oldboy/alex/oldboy01.txt
/oldboy/alex/oldboy02.txt
/oldboy/alex/oldboy03.txt
/oldboy/alex/oldboy04.txt
/oldboy/alex/oldboy05.txt
/oldboy/alex/OLDboy01.txt
/oldboy/alex/OLDboy02.txt
/oldboy/alex/OLDboy03.txt
/oldboy/alex/OLDboy04.txt
/oldboy/alex/OLDboy05.txt
[root@oldboyedu59 ~]# 

习题:找出/etc/目录下面第1层目录中以.conf结尾的文件(不区分大小写)完成后发出命令

find /etc/ -maxdepth 1 -type f -iname "*.conf"`
解:
[root@oldboy oldboy]# find /etc/ -maxdepth 1 -type f -iname "*.conf"
/etc/resolv.conf
/etc/asound.conf
/etc/libuser.conf

xargs命令

xargs==对字符进行分组

[root@oldboyedu59 ~]# echo {1..10}  >/oldboy/sf.txt
[root@oldboyedu59 ~]# cat /oldboy/sf.txt
1 2 3 4 5 6 7 8 9 10

[root@oldboyedu59 ~]# xargs -n2 </oldboy/sf.txt
1 2
3 4
5 6
7 8
9 10

tar命令==打包压缩命令

目的:文本文件(配置) 备份
常用参数:
z 通过gzip工具进行压缩
c create 创建包
v verbose 显示过程
f 指定压缩包(放在最后)
t list == 查看压缩包内容
x ==解开tar包

windows : 压缩(winrar 好压 2345压缩)
Linux: 打包压缩

创建压缩包

命令语法例子:

`tar zcvf /tmp/etc.tar.gz /etc/`
> `tar zcf /tmp/etc.tar.gz /etc/`

查看压缩包的内容

语法例子tar ztf /tmp/etc.tar.gz

解压(默认解压到当前目录)

语法例子:tar zxf /tmp/etc.tar.gz

[root@oldboyedu59 tmp]# tar xf /tmp/etc.tar.gz  -C /opt/
[root@oldboyedu59 tmp]# ls -l /opt
total 12
drwxr-xr-x 79 root root 8192 Apr  9 16:35 etc

【巨坑】tar让你迷茫的提示: Removing leading `/’ from member names
https://www.jianshu.com/p/631618020430

####tar==打包压缩
参数–exclude=PATTERN参数的例子

[root@oldboyedu59 ~]# tar zcf /tmp/etc.tar.gz   /etc/ 
tar: Removing leading `/' from member names
[root@oldboyedu59 ~]# tar zcf /tmp/etc-paichu.tar.gz   /etc/  --exclude /etc/services 
tar: Removing leading `/' from member names
[root@oldboyedu59 ~]# tar tf /tmp/etc.tar.gz |grep services 
etc/services
etc/firewalld/services/
[root@oldboyedu59 ~]# tar tf /tmp/etc-paichu.tar.gz   |grep services 
etc/firewalld/services/

| 管道符号 把管道前面命令的结果 通过管道传递给后面的命令

diff命令

作用==比较两个文件的内容
Linux下面的对比工具(比较两个文件的内容)

tar tf /tmp/etc.tar.gz >/oldboy/tar.txt
 tar tf /tmp/etc-paichu.tar.gz >/oldboy/tar-paichu.txt
diff == different
[root@oldboyedu59 ~]# diff  /oldboy/tar.txt  /oldboy/tar-paichu.txt 
1950d1949##哪一行不同
< etc/services

vimdiff ==更直观显示文件的不同

lrzsz 把文件上传或下载到Linux

rz 把windows文件上传到Linux
sz 把Linux文件的下载到Windows

命令date

作用date == 显示或设置时间
常用参数

-s 日期时间设置系统时间
%F
完整的日期格式,等价于%Y-%m-%d(2019-08-18)
%m月份(o1-12)
%w
一年中的第几日(0-6),0代表周一
%y年份最后两位(00-99)
%Y
年份(2019)

按照我们要求的格式显示当前日期: 年-月-日

[root@oldboyedu59 ~]# date  +%F
2019-04-10
[root@oldboyedu59 ~]# date  +%Y-%m-%d
2019-04-10
[root@oldboyedu59 ~]# date +%T
09:57:23
[root@oldboyedu59 ~]# date +%H:%M:%S
09:57:39
[root@oldboyedu59 ~]# date +%w
3
`+%F === +%Y-%m-%d`
year month day
`+%T === +%H:%M:%S`
hour min(minute) sec(second)
+%w === week 周几

课堂例题:

显示当前时间以年月日-小时格式
20190101-10

[root@oldboyedu59 ~]# #显示当前时间以年月日-小时格式
[root@oldboyedu59 ~]# date +%Y%m%d
20190410
[root@oldboyedu59 ~]# date +%Y%m%d-%H
20190410-10

显示当前时间以年日-小时_周几 格式
2019_01_01-10_3

[root@oldboyedu59 ~]# #显示当前时间以年_月_日-小时_周几 格式
[root@oldboyedu59 ~]# date +%Y_%m_%d-%H_%w
2019_04_10-10_3

显示10天后的时间·

[root@oldboyedu59 ~]# date -d "10day"
Sat Apr 20 10:10:12 CST 2019
[root@oldboyedu59 ~]# date -d "10day" +%F
2019-04-20

显示1天前时间以年月日-周几格式
20190101-3

[root@oldboyedu59 ~]# #显示1天前时间以年月日-周几格式
[root@oldboyedu59 ~]# 
[root@oldboyedu59 ~]# 
[root@oldboyedu59 ~]# date +%Y%m%d-%w -d  "-1day"
20190409-2

显示7天前时间 以年日-小时_周几 格式
2019_01_01-10_3

[root@oldboyedu59 ~]# #显示7天前时间 以年_月_日-小时_周几 格式
[root@oldboyedu59 ~]# 
[root@oldboyedu59 ~]# date +%Y_%m_%d-%H_%w -d '-7day'
2019_04_03-10_3

时间主要用于数据备份的命名

设置时间

date -s命令

自动同步时间

ntpdate 根据网站时间修改系统的时间
ntp1.aliyun.com
ntp7.aliyun.com
例子:

[root@oldboyedu59 ~]# ntpdate  ntp1.aliyun.com 
10 Apr 10:30:12 ntpdate[21482]: step time server 120.25.115.20 offset 233922587.162742 sec
[root@oldboyedu59 ~]# date 
Wed Apr 10 10:30:23 CST 2019

文件属性深入:

ls -lhi
-l 显示详细信息
-h 以人类可读的形式显示大小
-i 显示文件或目录inode号码
echo -n 不显示每行结尾的回车
free -h

inode和block

含义:
inode index node 索引节点
inode号码(身份证号码)
inode空间 存放文件属性信息(大小 所有者 权限 文件类型 硬链接数 时间)

文件名没有存放在这里

block的位置
block 数据块
block 用来存放文件的内容(实体)
关系:显示文件内容 cat oldboy.txt 与inode和block关系?

特点:

inode:
256字节(了解)
inode在同一个分区(文件系统)中是唯一的。
Linux下面创建1个非空文件需要占用1个inode和至少1个block
查看文件或目录:ls -i

block:
block大小4k
文件比较小1k,剩余的3k将无法使用。
文件比较大10G,占用多个block
ls -lh

查看整体情况:

block一共有多少 还剩多少(查看磁盘空间使用情况)
df -h
inode一共有多少 还剩多少
df -i
创建硬链接

[root@oldboyedu59 oldboy]# ln oldboy.txt  oldboy.txt.hard
[root@oldboyedu59 oldboy]# ls -lh oldboy.txt
-rw-r--r-- 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 oldboy]# ls -lhi oldboy.txt*
202447230 -rw-r--r--  2 root root  7 Apr 10 11:57 oldboy.txt
202447263 -rw-r--r--. 1 root root  0 Mar 28 12:38 oldboy.txt.bak
202447230 -rw-r--r--  2 root root  7 Apr 10 11:57 oldboy.txt.hard
202447261 lrwxrwxrwx  1 root root 18 Apr  9 15:20 oldboy.txt.soft -> /oldboy/oldboy.txt

课堂练习

创建1个新目录他的硬链接数是2? 为何?

[root@oldboyedu59 ~]# ll -di  /lidao/ /lidao/.
67141566 drwxr-xr-x. 2 root root 24 Mar 29 09:08 /lidao/
67141566 drwxr-xr-x. 2 root root 24 Mar 29 09:08 /lidao/.

在这个目录下面创建1个新目录 /lidao/alex/ lidao目录的硬链接数是几?

[root@oldboyedu59 ~]# ll -di  /lidao/  /lidao/.  /lidao/alex/..
67141566 drwxr-xr-x. 3 root root 36 Apr 11 09:08 /lidao/
67141566 drwxr-xr-x. 3 root root 36 Apr 11 09:08 /lidao/.
67141566 drwxr-xr-x. 3 root root 36 Apr 11 09:08 /lidao/alex/..

解析:每个目录下都有一个硬链接".“号,和对应上级目录的硬链接”…"。
再父目录里创建一个子目录,父目录的链接数增加1(每个目录里都有…来指向父目录)。但是在父目录里创建文件,父目录的链接数不会增加。

目录的硬链接数为何是2,或3-v2019-v2
https://www.processon.com/view/link/5a44428be4b04946438789e2

如何当前系统登陆的用户:

[root@oldboyedu59 ~]# whoami 
root

如何查看当前用户的UID:

[root@oldboyedu59 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@oldboyedu59 ~]# id root
uid=0(root) gid=0(root) groups=0(root)

如何添加普通用户:

[root@oldboyedu59 ~]# useradd oldboy 
[root@oldboyedu59 ~]# id oldboy 
uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)

如何给普通用户设置密码

[root@oldboyedu59 ~]# passwd  oldboy
Changing password for user oldboy.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

successfully表示成功

如何切换用户

[root@oldboyedu59 ~]# su  -  oldboy 
[oldboy@oldboyedu59 ~]$ whoami #提示符变成$表示切换成功
oldboy
[oldboy@oldboyedu59 ~]$ id
uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)

如何删除用户:

[root@localhost /]# userdel boy
[root@localhost /]# id boy
id: boy: no such user

如何添加用户指定所属组

[root@localhost /]# groupadd oldboy#创建一个用户组
[root@localhost /]# useradd old -g oldboy#创建一个old用户并加入oldboy用户组
[root@localhost /]# id old
uid=1002(old) gid=1001(oldboy) 组=1001(oldboy)

文件及目录的权限

查看文件的权限信息

[root@oldboyedu59 ~]# ls -l /etc/passwd  /etc/shadow
-rw-r--r-- 1 root root 1017 Apr 11 09:29 /etc/passwd
---------- 1 root root  746 Apr 11 09:42 /etc/shadow

解析:rw-r--r--权限信息分3类用户。前三个表示所有者的权限,中间三个表示所属用户组的权限,最后三个字符表示其他人的权限
所有者 所属用户组 其他人(陌生人)
分别用user group other
分别简写u g o

权限信息的含义:

r =4 read 是否可以读
w= 2 write 是否可以写
x = 1 executable 是否可以运行(执行)
指运行命令运行脚本

例子rwxr-xr-x转化成数字是421401401。这样说起来不易理解一般把每个类的总和加起来表示,即755
例子
750 -rwxr-x—
640 -rw-r-----
604 -rw----r–

image

权限与用户对应关系图解-v2019-v1
https://www.processon.com/view/link/5caead14e4b09a003b2c3f8c

如何修改权限

[root@oldboyedu59 oldboy]# ls -l oldboy.txt
-rw-r--r-- 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 oldboy]# chmod 755 oldboy.txt
[root@oldboyedu59 oldboy]# ls -l oldboy.txt
-rwxr-xr-x 2 root root 7 Apr 10 11:57 oldboy.txt

根据字符形式 修改权限

[root@oldboyedu59 oldboy]# chmod u-w oldboy.txt
[root@oldboyedu59 oldboy]# ll  oldboy.txt
-r--r--r-- 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 oldboy]# chmod u+w oldboy.txt
[root@oldboyedu59 oldboy]# ll oldboy.txt
-rw-r--r-- 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 oldboy]# chmod u=w oldboy.txt
[root@oldboyedu59 oldboy]# ll oldboy.txt
--w-r--r-- 2 root root 7 Apr 10 11:57 oldboy.txt

把oldboy.txt的文件修改为644
给oldboy.txt ugo每个位置都增加上执行权限

[root@oldboyedu59 oldboy]# chmod ugo+x oldboy.txt
[root@oldboyedu59 oldboy]# chmod a-x oldboy.txt
[root@oldboyedu59 oldboy]# 
[root@oldboyedu59 oldboy]# ll oldboy.txt
-rw-r--r-- 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 oldboy]# chmod a+x oldboy.txt
[root@oldboyedu59 oldboy]# ll oldboy.txt
-rwxr-xr-x 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 oldboy]# chmod  a-x oldboy.txt
[root@oldboyedu59 oldboy]# ll oldboy.txt
-rw-r--r-- 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 oldboy]# chmod +x oldboy.txt
[root@oldboyedu59 oldboy]# ll oldboy.txt
-rwxr-xr-x 2 root root 7 Apr 10 11:57 oldboy.txt
[root@oldboyedu59 ~]# ll /etc/rc.local 
lrwxrwxrwx. 1 root root 13 Mar 26 11:39 /etc/rc.local -> rc.d/rc.local
[root@oldboyedu59 ~]# ll /etc/rc.d/rc.local 
-rw-r--r--. 1 root root 473 Oct 31 07:31 /etc/rc.d/rc.local
[root@oldboyedu59 ~]# chmod +x /etc/rc.d/rc.local
[root@oldboyedu59 ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 473 Oct 31 07:31 /etc/rc.d/rc.local

chmod ugo+x oldboy.txt
chmod a+x oldboy.txt
chmod +x oldboy.txt √√√√√√
chmod ugo +|-|= oldboy.txt
chmod u=rw,g=r,o=rx oldboy.txt

[面试题]文件属性(inode-软硬链接-用户-权限)
https://www.jianshu.com/p/5b83985768e7

UID(User ID) —相当于身份证号码
GID(Group ID) —相当于用户组号码(户口号)

用户分类: root —皇帝(UID为0)
普通用户 —手动创建的用户(UID为1000以上)
虚拟用户 —傀儡用户 无法直接使用
满足:每个进程在运行时需要一个用户和用户组

添加普通用户 —useradd +用户名 给普通用户添加密码 —passwd +用户名
切换用户 —su - 用户名
查看当前用户 —whoami或者id(可查看当前用户的UID、GID)
免交互创建密码 —echo 123456 |passwd --stdin pangyawei

/etc/passwd —放置用户名及其他的密码文件 七列的含义:

用户与文件的关系 —U(代表属主用户) —G(代表属组用户) —O(代表其他用户) 全部可以用a rwxrwxrwx —权限为777

####Linux权限

r —读权限 对应数字为4
w —写权限 对应数字为2
x —执行权限 对应数字为
. —无权限 对应数字为0 修改权限 —chmod 例:给333这个文件属主属组其他用户权限都修改为可读可写可执行 —chmod a+rwx 333.txt

####Linux下面的时间

mtime —modify time 文件的修改时间
atime —access time 文件的访问时间
ctime —change time 文件属性的改变时间

image.png

查看umask

[root@oldboyedu59 ~]# umask 
0022

文件默认权限的由来

 666
-022##设置的umask。
=644 ###如果某一位是奇数需要是奇数的位数加一

目录默认的权限由来

 777
-022###设置的umask
=755

umask 032

文件默认权限的由来

666
-032
=634
+010
644

模拟环境:

useradd www 
mkdir -p /app/blog/uploads 
touch /app/blog/guoav{01..5}-blue-ray-4k.mkv.torrent

root 窗口 www窗口

[oldboy@oldboyedu59 /app/blog]$ touch /app/blog/uploads/ycw-5k-100tb.torrent 
touch: cannot touch ‘/app/blog/uploads/ycw-5k-100tb.torrent’: Permission denied
[oldboy@oldboyedu59 /app/blog]$ ll -d /app/blog/uploads/ycw-5k-100tb.torrent
ls: cannot access /app/blog/uploads/ycw-5k-100tb.torrent: No such file or directory
[oldboy@oldboyedu59 /app/blog]$ ll -d /app/blog/uploads/
drwxr-xr-x 2 root root 6 Apr 23 11:55 /app/blog/uploads/

方法1 给uploads 目录o+w
方法2 把uploads 修改为www.www

如何让网站更安全

网站程序代码 /app/blog 目录 站点目录(单机权限控制)

1.谁运行网站程序
虚拟用户 www

2.控制权限
站点目录下文件 644 root root
站点目录下目录 755 root root

3.对于上传目录uploads
站点目录下文件 644 www www
站点目录下目录 755 www www

4.通过程序控制 只能上传图片或压缩包

5.取消上传上来的文件的执行权限(讲解到nfs的时候)

权限补充

文件访问过程
显示/oldboy/test.sh文件详细过程(inode block)
权限拒绝错误,与上级目录有关

权限如何让系统安全
如何让系统安全
1.(最小化)
安装系统的时候
操作rm -f
开启服务

2.保护root
禁止root远程登录系统
修改远程连接(sshd)默认端口号

3.制作指纹认证
md5sum:制作一个指纹
格式:md5sum oldboy.txt

md5sum 记录指纹信息

[root@oldboyedu59 ~]# echo  oldboy >oldboy.txt
[root@oldboyedu59 ~]# md5sum oldboy.txt 
af5a89bcc62e35fcd51819bb4031ab2e  oldboy.txt
[root@oldboyedu59 ~]# md5sum oldboy.txt >/tmp/police.md5
[root@oldboyedu59 ~]# 

与公安局的指纹信息进行对比

[root@oldboyedu59 ~]# md5sum --check  /tmp/police.md5 
oldboy.txt: OK
[root@oldboyedu59 ~]# >oldboy.txt
[root@oldboyedu59 ~]# md5sum --check  /tmp/police.md5 
oldboy.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[root@oldboyedu59 ~]# md5sum -c  /tmp/police.md5 md5sum -c 对比指纹是否一致(一致时为ok 不一致为failed)
oldboy.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

练习

1.找出/oldboy目录下面 以.txt结尾的文件 制作md5 存放在/tmp/oldboy.md5

[root@oldboy ~]# find /oldboy -name '*.txt' -type f|xargs md5sum >/tmp/oldboy.md5###找出文件并制作md5
[root@oldboy ~]# md5sum -c /tmp/oldboy1.md5
/oldboy/alex/lidao/oldboy.txt: OK
/oldboy/alex/oldboy01.txt: OK
/oldboy/alex/oldboy02.txt: OK
/oldboy/alex/oldboy03.txt: OK
/oldboy/alex/oldboy04.txt: OK
/oldboy/alex/oldboy05.txt: OK
/oldboy/alex/OLDboy01.txt: OK
/oldboy/alex/OLDboy02.txt: OK
/oldboy/alex/OLDboy03.txt: OK
/oldboy/alex/OLDboy04.txt: OK
/oldboy/alex/OLDboy05.txt: OK

文件系统的隐藏权限

chattr:修改隐藏属性
+a:只能追加(解锁-a)
+i:无敌的(解锁-i)
lsattr:查看隐藏属性
i–>系统命令
例子如下:

[root@oldboyedu59 ~]# chattr +i oldboy.txt
[root@oldboyedu59 ~]# lsattr oldboy.txt
----i----------- oldboy.txt
[root@oldboyedu59 ~]# echo oldboy >>oldboy.txt
-bash: oldboy.txt: Permission denied
[root@oldboyedu59 ~]# >oldboy.txt
-bash: oldboy.txt: Permission denied
[root@oldboyedu59 ~]# \rm -f oldboy.txt
rm: cannot remove ‘oldboy.txt’: Operation not permitted 

特殊权限

/tmp权限粘带位 t含义:
每个人都有可以在这个目录下创建文件 删除
每个人只能管理自己的文件。权限1777 /tmp
stat /tmp 查看tmp目录的文件系统的详细信息

suid setuid权限s.
含义:拥有suid的命令,任何用户执行的时候相当于root(文件的所有者)
chmod u+s /bin/ls chmod 4755 /bin/ls

用户管理

重要文件:/etc/passwd存放用户信息
/etc/group 用户组信息
/etc/gshadow用户组密码信息
/etc/shadow用户密码信息
命令解释器/bin/bash |/sbin/nologin

课堂练习:找出/etc/passwd,命令解释器为nologin的,显示出用户名,uid,及命令解释器。

[root@oldboy ~]# awk -F: '/nologin$/{print $1,$3,$NF}' /etc/passwd|column -t
bin              1    /sbin/nologin
daemon           2    /sbin/nologin
adm              3    /sbin/nologin
lp               4    /sbin/nologin
mail             8    /sbin/nologin
operator         11   /sbin/nologin
games            12   /sbin/nologin
ftp              14   /sbin/nologin
nobody           99   /sbin/nologin
systemd-network  192  /sbin/nologin
dbus             81   /sbin/nologin
polkitd          999  /sbin/nologin
tss              59   /sbin/nologin
abrt             173  /sbin/nologin
sshd             74   /sbin/nologin
postfix          89   /sbin/nologin
ntp              38   /sbin/nologin
fanzhibaba       889  /sbin/nologin
gelong           998  /sbin/nologin

重要目录:
/etc/skel:里面放的是用户家目录的样子

创建新用户过程
useradd alex
系统创建家目录
权限所有者修改
把/etc/skel下面的所有内容复制到家目录下

[root@oldboy ~]# ll -a /etc/skel
total 24
drwxr-xr-x.  2 root root   62 Apr 11  2018 .
drwxr-xr-x. 80 root root 8192 Apr 25 15:25 ..
-rw-r--r--.  1 root root   18 Oct 31 01:07 .bash_logout
-rw-r--r--.  1 root root  193 Oct 31 01:07 .bash_profile  >##用户的环境变量和别名。是家规
-rw-r--r--.  1 root root  231 Oct 31 01:07 .bashrc   》#用户别名

常见故障

命令提示符bash-4.1[图片上传失败…(image-4306d0-1558410195101)]

故障模拟:

1.修改/etc/profile PS1加上注释。

image

2.添加一个新用户

useradd oldboy

3.切换到新用户

su - oldboy

4.检查是否有suid.特殊权限

ll /bin/rm

5.删根

rm -rf

6.重新登录alex,出现故障

[oldboy1@oldboy /tmp]$ su - oldboy1
Password: 
Last login: Thu Apr 25 19:59:15 CST 2019 on pts/1
-bash-4.2$ 
-bash-4.2$ 

故障原因

当前用户的环境变量的配置文件。.bash_profile .bashrc 被删除

解决

从/etc/skel复制

-bash-4.2$ cp /etc/skel/.bash* ~
-bash-4.2$ su - oldboy
su: user oldboy does not exist
-bash-4.2$ logout
[oldboy1@oldboy /tmp]$ su - oldboy1
Password: 
Last login: Thu Apr 25 20:00:58 CST 2019 on pts/1
[oldboy1@oldboy ~]$ 

##批量生成用户并设置密码
#####命令拼接的应用

批量添加用户stu01 stu02 stu03并设置密码为123456
最终目标:
useradd stu01 ;echo 123456|passwd --stdin stu01
useradd stu01 ;echo 123456|passwd --stdin stu01
useradd stu01 ;echo 123456|passwd --stdin stu01

解决
先拼接出创建用户的命令

[root@oldboy ~]# echo stu{01..3}|xargs -n1|sed -r 's#.*#useradd &#g'    
useradd stu01
useradd stu02            
useradd stu03

利用sed再拼接出无交互式设置密码

[root@oldboy ~]# echo stu{01..3}|xargs -n1|sed -r 's#.*#useradd & ;echo 123456|passwd --stdin &#g'     
useradd stu01 ;echo 123456|passwd --stdin stu01
useradd stu02 ;echo 123456|passwd --stdin stu02   
useradd stu03 ;echo 123456|passwd --stdin stu03

利用awk拼接出无交互式设置密码

echo oldboy{1..4}|xargs -n1|awk  '{print useradd,$0";echo 123456|passwd --stdin",$0}'        ##》利用awk拼接
useradd oldboy1;echo 123456|passwd --stdin stu01
useradd oldboy2;echo 123456|passwd --stdin stu01  
useradd oldboy3;echo 123456|passwd --stdin stu01
useradd oldboy4;echo 123456|passwd --stdin stu01

交给bash运行,先拿一个测试

[root@oldboy ~]# useradd stu04;echo 123456|passwd --stdin stu04
Changing password for user stu04.
passwd: all authentication tokens updated successfully.

测试命令没问题再把整条命令交给bash处理

[root@oldboy ~]# echo oldboy{1..4}|xargs -n1|sed 's#.*#useradd &;echo 123456|passwd --stdin &#g'|bash
Changing password for user stu01.
passwd: all authentication tokens updated successfully.
Changing password for user stu02.
passwd: all authentication tokens updated successfully.
Changing password for user stu03.
passwd: all authentication tokens updated successfully.
useradd: user 'stu04' already exists

在sed命令里&表示前面两个井号中间匹配到的字符

随机生成密码命令
[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8
u65geQEg[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8
jhGspl6g[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8
AfoiUzfK[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8
yQHIaHyY[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8
3Vk8KDIq[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8
WWfpEdSm[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8
5YcAQTog[root@oldboy ~]# tr -cd ‘a-zA-Z0-9’ </dev/urandom|head -c8

tr -cd ‘a-zA-Z0-9’ 表示对文件里的字符只保留这个范围里的。其他的都删掉。head -c8 表示只取前8个字符。

#####时间加指纹生成

[root@oldboy ~]# date +%N|md5sum|head -c8
255f7d51[root@oldboy ~]# date +%N|md5sum|head -c8
6c4023a4[root@oldboy ~]# date +%N|md5sum|head -c8
f71e7780[root@oldboy ~]# date +%N|md5sum|head -c8
fde18ec7[root@oldboy ~]# date +%N|md5sum|head -c8

#####时间加sha系列生成

[root@oldboy ~]# date +%N|sha512sum|head -c8
d545c06c[root@oldboy ~]# date +%N|sha512sum|head -c8
98524cfc[root@oldboy ~]# date +%N|sha512sum|head -c8
a0494aab[root@oldboy ~]# date +%N|sha512sum|head -c8
8949cc82[root@oldboy ~]#

#####生成随机uid的命令生成

[root@oldboy ~]# uuidgen
df4ba7c2-8f6e-4781-80fc-d3511e776e80
[root@oldboy ~]# uuidgen|head -c8
97838e4b[root@oldboy ~]# uuidgen|head -c8
4b51a0a7[root@oldboy ~]# uuidgen|head -c8
e8ece8cb[root@oldboy ~]# uuidgen|head -c8
d6cf4f69[root@oldboy ~]#

[root@oldboy ~]# openssl rand -base64 8
02u8kHV0zK0=
[root@oldboy ~]# openssl rand -base64 8
bxnpMJV7asM=
[root@oldboy ~]# openssl rand -base64 8
BfflDuGqgQU=
[root@oldboy ~]# openssl rand -base64 8
V+9bL3iP/E8=
[root@oldboy ~]# openssl rand -base64 8
scTNJwEJkgw=

#####批量添加用户stu04 stu05 stu06并设置密码为随机密码

想要结果
useradd stu04;p=date +%N;echo $p|passwd --stdin stu04;echo $p stu04 >>20.txt
useradd stu05;p=date +%N;echo $p|passwd --stdin stu05;echo $p stu05 >>20.txt
useradd stu06;p=date +%N;echo $p|passwd --stdin stu06;echo $p stu06 >>20.tx

命令拼接

[root@oldboy ~]# echo stu{04..6}|xargs -n1|sed -r 's#(.*)#useradd \1;p=`date +%N`
useradd stu04;p=`date +%N`;echo $p|passwd --stdin stu04;echo $p stu04 >>20.txt
useradd stu05;p=`date +%N`;echo $p|passwd --stdin stu05;echo $p stu05 >>20.txt
useradd stu06;p=`date +%N`;echo $p|passwd --stdin stu06;echo $p stu06 >>20.txt

先测试一条。

[root@oldboy ~]# useradd old5;p=`date +%N`;echo $p|passwd --stdin old5;echo $p old5 >>20.txt|bash
Changing password for user old5.
passwd: all authentication tokens updated successfully.
[root@oldboy ~]# cat 20.txt
902265571 stu05
828118399 old5

全部交给bash处理

[root@oldboy ~]# echo old{1..5}|xargs -n1|sed 's#.*#useradd &;p=`date +%N`;echo $p|passwd --stdin &;echo $p & >>20.txt#g' |bash
Changing password for user old1.
passwd: all authentication tokens updated successfully.
Changing password for user old2.
passwd: all authentication tokens updated successfully.
Changing password for user old3.
passwd: all authentication tokens updated successfully.
Changing password for user old4.
passwd: all authentication tokens updated successfully.
useradd: user 'old5' already exists
Changing password for user old5.
passwd: all authentication tokens updated successfully.
[root@oldboy ~]# cat 20.txt
902265571 stu05
828118399 old5
002657812 old1
172031442 old2
246596527 old3
314187391 old4
361565527 old5
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值