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

一.文件类型:

预备姿势:扩展名 .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;echop stu04 >>20.txt
useradd stu05;p=date +%N;echo p|passwd --stdin stu05;echop stu05 >>20.txt
useradd stu06;p=date +%N;echo p|passwd --stdin stu06;echop 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335