首页 > 代码库 > Linux课程第四天学习笔记

Linux课程第四天学习笔记

####################
######    第六单元    ######
####################

####################
[root@localhost ~]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

alias命令用来设置指令的别名,使用该命令可以将一些较长的命令进行简化。
使用alias时,用户必须使用单引号‘‘将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于当次登入的操作。
若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。
####################

####################1.文件属性的查看####################
[root@localhost Desktop]# ls -l file
-rw-r--r--. 1 root root 25 Oct 11 05:30 file
分解开来:
-    rw-r--r--.     1     root     root     25     Oct 11 05:30     file
1    2        3    4    5    6    7        8

1.文件类型:"-"
-    ##普通文件
d    ##目录
c    ##字符设备:显示字符的设备
s    ##套接字:指跟外部沟通的一个接口,以文件来进行表示,这个文件就是套接字。
p    ##管道
b    ##块设备:一般系统的存储都是块设备
l    ##连接

####################
[root@localhost Desktop]# ll /dev/pts/0
crw--w----. 1 root tty 136, 0 Oct 11 21:24 /dev/pts/0    ##字符设备

[root@localhost Desktop]# yum install mariadb-server -y    ##抄的上课截图,不是自己敲的
......                            ##安装数据库管理系统,MariaDB是MySQL的一个分支
[root@localhost Desktop]# ll /var/lib/mysql/mysql.sock
srwxrwxrwx. 1 mysql mysql 0 Oct 1 21:20 mysql.sock    ##套接字
套接字就是源IP地址和目的IP地址以及源端口号和目的端口号的组合
简单的举例说明:Socket=Ip address+ TCP/UDP + port

[root@localhost Desktop]# df                ##显示文件系统的可用空间
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       10473900 3129072   7344828  30% /
devtmpfs          927072       0    927072   0% /dev
tmpfs             942660      84    942576   1% /dev/shm
tmpfs             942660   17008    925652   2% /run
tmpfs             942660       0    942660   0% /sys/fs/cgroup
[root@localhost Desktop]# ll /dev/vda1
brw-rw----. 1 root disk 253, 1 Oct 11 21:09 /dev/vda1    ##块设备
####################

2.文件读写权限:"rw-r--r--"
rw-|r--|r--
u   g   o
u:所有人的权限
g:所有组的权限
o:其他人的权限

3.文件内容被系统记录的次数,就是文件要被删多少次才能删掉:"1"

####################
[root@localhost Desktop]# ln file westos    ##建立硬链接
[root@localhost Desktop]# ll
total 8
-rw-r--r--. 2 root root 25 Oct 11 05:30 file    ##文件内容被系统记录的次数变为2次
-rw-r--r--. 2 root root 25 Oct 11 05:30 westos
[root@localhost Desktop]# cat file
dfdasfddadfadfdsfdadfsdf
[root@localhost Desktop]# cat westos
dfdasfddadfadfdsfdadfsdf
[root@localhost Desktop]# rm -fr westos
[root@localhost Desktop]# ll
total 4
-rw-r--r--. 1 root root 25 Oct 11 05:30 file    ##文件内容被系统记录的次数变为1次

ln是功能是为某一个文件在另外一个位置建立一个同不的链接
建立软链接:ln –s [源] [目的]。在选定的位置上生成一个文件的镜像,不占用磁盘空间,
建立硬链接:ln [源] [目的],没有参数-s。在选定的位置上生成一个和源文件大小相同的文件
无论是软链接还是硬链接,文件都会保持同步变化。
####################

4.文件所有人:"root"

####################
[root@localhost Desktop]# grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
student:x:1000:1000:Student User:/home/student:/bin/bash
可以用来查看系统的有效用户
####################

5.文件所有组:"root"

####################
[root@localhost Desktop]# useradd -G root westos
[root@localhost Desktop]# grep root /etc/group
root:x:0:westos
可以用来查看这个组里包含哪些用户
####################

6.文件内容的大小:"25"

####################
[root@localhost Desktop]# wc -c file
25 file
####################

7.文件最后一次被修改的时间:"Oct 11 05:30"

8.文件名字:"file"

####################2.查看目录属性####################
[root@localhost Desktop]# mkdir directory
[root@localhost Desktop]# mkdir directory/1 directory/2 directory/3
[root@localhost Desktop]# ls -ld directory
drwxr-xr-x. 5 root root 30 Oct 11 05:48 directory
分解开来:
d    rwxr-xr-x.     5     root     root     30     Oct 11 05:48     directory
1    2        3    4    5    6    7        8

1.类型

2.目录权限

3.子目录个数

4.目录所有人

5.目录所有组

6.目录里的子文件属性大小

####################
[root@localhost Desktop]# mkdir westos/
[root@localhost Desktop]# ll -d westos/
drwxr-xr-x. 2 root root 6 Oct 12 04:50 westos/
[root@localhost Desktop]# mkdir westos/f
[root@localhost Desktop]# ll -d westos/
drwxr-xr-x. 3 root root 14 Oct 12 05:02 westos/
其中14的组成是:
[6(不含名字的属性)+2("f":名字,一个有效字符,一个转译符)]+6("..":上层目录)
####################

7.目录中内容变化的时间

8.目录名字

####################3.文件所有人所有组的管理####################
chown    username        file|dir    ##更改文件的所有人
chgrp    username[:|.]groupname    file|dir    ##更改文件所有人所有组,[:|.]指":"和"."都可以
chown -R username        dir        ##更改目录本身及目录中的所有内容的所有人
chgrp -R groupname        dir        ##更改目录本身及目录中的所有内容的所有组

监控命令
watch -n 1 ls -lR /mnt

####################
实验:
[root@localhost Desktop]# touch /mnt/file1 /mnt/file2 /mnt/file3
[root@localhost Desktop]# mkdir /mnt/westos
[root@localhost Desktop]# cd /mnt/westos
[root@localhost westos]# touch linux1
[root@localhost westos]# touch linux2
[root@localhost westos]# touch linux3
[root@localhost westos]# cd ..
[root@localhost mnt]# useradd westos
[root@localhost mnt]# useradd test
[root@localhost mnt]# useradd hello
[root@localhost mnt]# id westos
uid=1001(westos) gid=1001(westos) 组=1001(westos)
[root@localhost mnt]# id test
uid=1002(test) gid=1002(test) 组=1002(test)
[root@localhost mnt]# id hello
uid=1003(hello) gid=1003(hello) 组=1003(hello)
[root@localhost mnt]# id student
uid=1000(student) gid=1000(student) 组=1000(student),10(wheel)
[root@localhost mnt]# chown student file1
[root@localhost mnt]# chown westos file2
[root@localhost mnt]# chown student:westos file2
[root@localhost mnt]# chown hello westos/
[root@localhost mnt]# chown -R hello westos/
[root@localhost mnt]# chown -R hello:westos westos/
[root@localhost mnt]# chgrp -R student westos/
[root@localhost mnt]# chown 1 file1        ##尽量不要用数字,1表示bin
[root@localhost mnt]# chown 0 file1        ##0表示root
[root@localhost mnt]# chown 789 file1        ##不存在,显示为789
####################

####################4.普通权限####################
rw-|r--|r--
u   g   o
u:文件所有人对文件可读可写
g:文件组成员对文件可读
o:其他人对文件可读
u优先匹配,g次优先,o当前两者不匹配时匹配

权限种类:
1)r
对文件,表示可以查看文件的内容
对目录,表示可以查看目录中存在的文件名称,即可以"ls"

2)w
对文件,表示可以更改文件的内容
对目录,表示可以在目录中执行添加或删除的操作

3)x
对文件,表示可以运行文件内记录的程序动作
对目录,表示可以进入到目录当中

####################
[root@localhost Desktop]# touch 123
[root@localhost Desktop]# echo date >123
[root@localhost Desktop]# sh 123
Tue Oct 11 22:45:12 EDT 2016
[root@localhost Desktop]# /root/Desktop/123
-bash: /root/Desktop/123: Permission denied    ##权限不够
[root@localhost Desktop]# chmod u+x 123        ##从"rw-"更改为"rwx",拥有了可执行权限
[root@localhost Desktop]# ll 123
-rwxr--r--. 1 root root 5 Oct 11 22:45 123
[root@localhost Desktop]# /root/Desktop/123
Tue Oct 11 22:46:13 EDT 2016
####################

4)字母方式修改文件权限
chmod [-R] [u|g|o][+|-|=][r|w|x] file|dir

chmod u-x file1        ##file1所有人去掉x权限
chmod g+w file1        ##file1所有组添加w权限
chmod u-x,g+w file1    ##file1所有人去掉x权限,所有组添加w权限
chmod ugo-r file2    ##file2所有人,所有组,其他人去掉r权限
chmod ug+x,o-r file3    ##file3所有人,所有组添加x权限,其他人去掉r权限

5)数字方式修改文件权限
在linux中
r=4
w=2
x=1
-=0
文件权限数字表示方式
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---

rw-|r--|r--
u   g   o
u="rw-"=4+2+0=6
g="r--"=4+0+0=4
o="r--"=4+0+0=4
所以文件权限表示为644

chmod    要修改的权限值    file
例如:
chmod    777        file

####################5.系统默认权限的设定####################
从系统存在角度来说,开放权力越大,系统存在意义越高
从系统安全角度来说,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
设定方式:
umask        ##查看系统保留权限,默认为022
777-022=755(目录权限)-111=644(文件权限)
umask 077    ##修改系统保留权限为077,此设定为临时设定,只在当前shell中生效

默认建立出来的文件权限是644,目录权限是755
默认建立出来的文件都没有执行权限

永久设定方式:
vim /etc/bashrc        ##shell的umask配置
 70     if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 71        umask 002    ##普通用户umask
 72     else
 73        umask 022    ##超级用户umask
 74     fi
vim /etc/profile    ##系统的umask配置
 59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 60     umask 002    ##普通用户umask
 61 else
 62     umask 022    ##超级用户umask
 63 fi

以上两个文件umask设定值必须保持一致
source /etc/bashrc     ##刷新bash配置
source /etc/profile     ##刷新系统配置
让设定立即生效

####################
umask 055    ##设定umask值为055
777-055=722-111=622    ##注意:2是写权限,1是执行权限,所以2减1还是2
####################

####################6.特殊权限####################
1.suid        ##冒险位
只针对二进制可执行文件
由文件内记录的程序而产生的进程的所有人为文件所有人
和进程发起人的身份无关

设定方式:
chmod u+s file
suid=4
chmod 4xxx file

主要作用:针对某一个命令,对于用户身份进行提升或者下降

####################
终端0:
[root@localhost Desktop]# su - student
Last login: Wed Oct 12 02:54:09 EDT 2016 on pts/0
[student@localhost ~]$ watch -n 1 date
终端1:
[root@localhost Desktop]# ps ax -o user,group,comm | grep watch
root     root     watchdog/0
root     root     abrt-watch-log
root     root     abrt-watch-log
student  student  watch
终端0:
[student@localhost ~]$ exit
logout
[root@localhost Desktop]# ll -d /bin/watch
-rwxr-xr-x. 1 root root 24704 Feb 27  2014 /bin/watch
[root@localhost Desktop]# chmod u+s /bin/watch
[root@localhost Desktop]# ll -d /bin/watch
-rwsr-xr-x. 1 root root 24704 Feb 27  2014 /bin/watch
[root@localhost Desktop]# su - student
Last login: Wed Oct 12 03:03:04 EDT 2016 on pts/0
[student@localhost ~]$ watch -n 1 date
终端1:
[root@localhost Desktop]# ps ax -o user,group,comm | grep watch
root     root     watchdog/0
root     root     abrt-watch-log
root     root     abrt-watch-log
root     student  watch

[root@localhost Desktop]# chmod 777 /mnt
[root@localhost Desktop]# ll -d /bin/touch
-rwxr-xr-x. 1 root root 62432 1月  24 2014 /bin/touch
[root@localhost Desktop]# chmod u+s /bin/touch
[root@localhost Desktop]# ll -d /bin/touch
-rwsr-xr-x. 1 root root 62432 1月  24 2014 /bin/touch    ##suid置位
[root@localhost Desktop]# su - student
上一次登录:日 10月  2 02:29:54 EDT 2016pts/0 上
[student@localhost ~]$ touch /mnt/file
[student@localhost ~]$ ll /mnt
total 0
-rw-rw-r--. 1 root student 0 Oct  2 02:33 file        ##文件file的uid是touch命令所有者"root"

[student@localhost ~]$ exit
logout
[root@localhost Desktop]# ll -d /bin/touch
-rwsr-xr-x. 1 root root 62432 1月  24 2014 /bin/touch
[root@localhost Desktop]# chown leo /bin/touch        ##将/bin/touch的所有者改为leo
[root@localhost Desktop]# ll -d /bin/touch
-rwxr-xr-x. 1 leo root 62432 1月  24 2014 /bin/touch
[root@localhost Desktop]# chmod u+s /bin/touch        ##suid置位
[root@localhost Desktop]# ll -d /bin/touch
-rwsr-xr-x. 1 leo root 62432 1月  24 2014 /bin/touch
[root@localhost Desktop]# su - student
上一次登录:日 10月  2 02:33:18 EDT 2016pts/0 上
[student@localhost ~]$ touch /mnt/file1
[student@localhost ~]$ ll /mnt
[student@localhost ~]$ ll /mnt
total 0
-rw-rw-r--. 1 root student 0 Oct  2 02:33 file
-rw-rw-r--. 1 leo  student 0 Oct  2 02:37 file1        ##文件file1的uid是touch命令所有者"leo"
####################

2.sgid        ##强制位
1.对文件:只针对二进制可执行文件
    任何人运行二进制可执行文件的程序时,程序产生的进程的所有组都是文件的所有组
    和程序发起人组的身份无关
2.对目录:当目录有sgid权限后,目录中新建的所有文件的所有组
    都自动归属到目录的所有组之中,和文件建立者所在的组无关

设定方式:
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir

####################
1.针对文件:
终端0:
[root@localhost Desktop]# watch -n 1 date
终端1:
[root@localhost Desktop]# ps ax -o user,group,comm | grep watch
root     root     watchdog/0
root     root     abrt-watch-log
root     root     abrt-watch-log
root     root     watch
终端0:
[root@localhost Desktop]# su - student
Last login: Wed Oct 12 02:28:04 EDT 2016 on pts/0
[student@localhost ~]$ watch -n 1 date
终端1:
[root@localhost Desktop]# ps ax -o user,group,comm | grep watch
root     root     watchdog/0
root     root     abrt-watch-log
root     root     abrt-watch-log
student  student  watch
终端0:
[student@localhost ~]$ exit
logout
[root@localhost Desktop]# ll -d /bin/watch
-rwxr-xr-x. 1 root root 24704 Feb 27  2014 /bin/watch
[root@localhost Desktop]# chmod g+s /bin/watch
[root@localhost Desktop]# ll -d /bin/watch
-rwxr-sr-x. 1 root root 24704 Feb 27  2014 /bin/watch    ##sgid置位
[root@localhost Desktop]# watch -n 1 date
终端1:
[root@localhost Desktop]# ps ax -o user,group,comm | grep watch
root     root     watchdog/0
root     root     abrt-watch-log
root     root     abrt-watch-log
root     root     watch                    ##没有变化
终端0:
[root@localhost Desktop]# su - student
Last login: Wed Oct 12 02:29:45 EDT 2016 on pts/0
[student@localhost ~]$ watch -n 1 date
终端1:
[root@localhost Desktop]# ps ax -o user,group,comm | grep watch
root     root     watchdog/0
root     root     abrt-watch-log
root     root     abrt-watch-log
student  root     watch                    ##组身份提升为root
终端0:
[student@localhost ~]$ exit
logout
[root@localhost Desktop]# chmod 755 /bin/watch

2.针对目录:
[root@localhost Desktop]# chmod 777 /mnt
[root@localhost Desktop]# ll -d /mnt
drwxrwxrwx. 2 root root 17 Oct 12 02:54 /mnt
[root@localhost Desktop]# chmod g+s /mnt/
[root@localhost Desktop]# ll -d /mnt/
drwxrwsrwx. 2 root root 17 Oct 12 02:54 /mnt/        ##sgid置位    
[root@localhost Desktop]# su - student
Last login: Wed Oct 12 03:10:42 EDT 2016 on pts/0
[student@localhost ~]$ touch /mnt/file
[student@localhost ~]$ ll /mnt
total 0
-rw-rw-r--. 1 student root 0 Oct 12 03:13 file        ##文件自动归属到目录所在组

####################

3.sticky    ##粘制位
t权限:
只针对于目录,当一个目录上有t权限,那么目录中的文件只能被所有人删除

设定方式:
chmod o+t directory
t=1
chmod 1xxx directory

sticky只针对目录,一般用于开放性的公共目录

####################
[root@localhost Desktop]# mkdir /pub
[root@localhost Desktop]# chmod 777 /pub/
[root@localhost Desktop]# useradd westos
[root@localhost Desktop]# useradd hello
[root@localhost Desktop]# su - westos
[westos@localhost ~]$ touch /pub/file1
[westos@localhost ~]$ exit
logout
[root@localhost Desktop]# su - hello
[hello@localhost ~]$ touch /pub/file2
[hello@localhost ~]$ exit
logout
[root@localhost Desktop]# ls -ld /pub
drwxrwxrwx. 2 root root 18 Oct  2 09:30 /pub
[root@localhost Desktop]# chmod 1777 /pub
[root@localhost Desktop]# ls -ld /pub
drwxrwxrwt. 2 root root 18 Oct  2 09:30 /pub        ##sticky置位
[root@localhost Desktop]# su - hello
Last login: Sun Oct  2 09:30:14 EDT 2016 on pts/0
[hello@localhost ~]$ ls -l /pub
total 0
-rw-rw-r--. 1 westos westos 0 Oct  2 09:32 file1
-rw-rw-r--. 1 hello  hello  0 Oct  2 09:30 file2
[hello@localhost ~]$ rm -fr /pub/file1
rm: cannot remove ‘/pub/file1’: Operation not permitted

[hello@localhost ~]$ exit
logout
[root@localhost Desktop]# chgrp westos /pub
[root@localhost Desktop]# ls -ld /pub
drwxrwxrwt. 2 root westos 30 Oct  2 09:32 /pub
[root@localhost Desktop]# su - westos
Last login: Sun Oct  2 09:32:46 EDT 2016 on pts/0
[westos@localhost ~]$ ls -l /pub
total 0
-rw-rw-r--. 1 westos westos 0 Oct  2 09:32 file1
-rw-rw-r--. 1 hello  hello  0 Oct  2 09:30 file2
[westos@localhost ~]$ rm -fr /pub/file2
rm: cannot remove ‘/pub/file2’: Operation not permitted    ##即使加入组也不能删除别人建立的文件

[westos@localhost ~]$ exit
logout           
[root@localhost Desktop]# chown westos:westos /pub
[root@localhost Desktop]# ls -ld /pub
drwxrwxrwt. 2 westos westos 30 Oct  2 09:32 /pub
[root@localhost Desktop]# su - westos
Last login: Sun Oct  2 09:34:43 EDT 2016 on pts/0
[westos@localhost ~]$ ls -l /pub
total 0
-rw-rw-r--. 1 westos westos 0 Oct  2 09:32 file1
-rw-rw-r--. 1 hello  hello  0 Oct  2 09:30 file2
[westos@localhost ~]$ rm -fr /pub/file2            ##把目录的所有人改成自己,就可以删除
[westos@localhost ~]$ ls -l /pub
total 0
-rw-rw-r--. 1 westos westos 0 Oct  2 09:32 file1

[root@localhost Desktop]# mkdir /pub/
[root@localhost Desktop]# chmod 766 /pub/
[root@localhost Desktop]# ll -d /pub/
drwxrw-rw-. 2 root root 6 Oct 12 02:39 /pub/
[root@localhost Desktop]# chmod o+t /pub/
[root@localhost Desktop]# ll -d /pub/
drwxrw-rwT. 2 root root 6 Oct 12 02:39 /pub/        ##发现出现大写的"T"
"T"的意思是:强制位的权限已经添加,但是没有生效。因为进不去目录,当然不生效
####################

####################
7777=suid+sgid+t
比如:
[root@localhost Desktop]# chmod 7777 /mnt
[root@localhost Desktop]# ll -d /mnt
drwsrwsrwt. 2 root root 17 Oct 12 03:13 /mnt        ##三者全部置位
####################

####################
查询百度后发现:
1.很多博客里把suid和sgid称为强制位,把sticky称为冒险位
2.如果添加权限的位置上已有执行权限,则特殊权限置位以小写字母的方式表示;否则以大写字母表示。
####################

本文出自 “施超Linux学习笔记” 博客,谢绝转载!

Linux课程第四天学习笔记