第 五天 文件权限 文件内容排序

linux root组 不是管理员角色 root组并不是有root权限

useradd -r -m

r一般配合m使用

文件权限设置 是通过用户登录拿到的令牌中(uid,gid ,groups)
与文件本身所有者所属组想对比,识别顺序是从uid 到groups
一旦令牌uid=文件所有者,则可以修改文件所有权限,除了修改文件所有者内容,其他都可以修改,如果令牌uid!=文件所有者,则对比令牌gid=文件所属组,如果等于有文件所属组权限,如果令牌gid!=文件所属组,则对比令牌groups=文件所属组,如果等于则有文件所属组权限,如果不等于则为其他*限

token(uid ,gid,groups)

file uid =read write 先看uid再看权限

想看到最新 file uid =read write excute必须重新登录

r
w
x
二进制文件一般读取没有实际意义 ,不是随便一个权限赋予读都有意义
读和写一般给文本文件,读权限对二进制文件不受影响

file r看文件内容 w修改文件内容

reset 重置字符命令

chown wang f1 把f1文件所有者改wang

chgrp rpc f1 把f1文件所属组改为rpc

usermod -aG g2 wang 把王加入g2组 不带a的话g2容易丢

普通用户不能改变用户所有者,可以改变自己加进去过的所属组
rw 6
w
目录无x执行,对目录执行不了命令,对目录不能进行任何操作
目录无r权限,不能看到文件名,但可以不看文件名对其进行操作
不能进行删除,因为写权限对应目录的block块block块放的是文件的i节点和文件名
rm执行删除的是文件名和本目录保存的i节点纪录
可以被删除,可以执行删除命令对文件里的数据块进行操作

f1 文件访问三类人1个是所有者 2所属组 3是其他人
所有者可以赋予文件权限
chmod u=rxw

chmod 授予文件权限

方法1 mode 法

chmod who opt per file
who:u g o a(all)
opt: + - =
per:r w x X

chmd -x f1 = chmod a-x f1

chmod u+x file
chmod u+x,g-w,o= file

只有w权限 可以写可以追加 >f1 echo >> f1

dir
f1 inode
f2 inode

读写权限root不受控制
如果文件没有执行权限 文件不能运行包括root
读权限对二进制文件不受影响
如果文件没有读权限file 命令就判断不出来文件类型

用户对目录读权限可看文件列表
如果对目录没有执行权限 不能cd进去 不能查看文件内容不能看属性

用户获取文件的权限是按1所有者 ,2所属组 3是其他人 排列
rm .* 包括 ..

u盘中vfat文件系统不支持linux文件系统 只是兼容按linux系统显示

linux权限是针对linux文件系统使用

文件系统可以混用,但是linux使用linux文件系统

方法2 参考文件法 参考f1设 f2 f3

chmod --reference=f1 f2 f3

方法3 八进制授权 数字法

rwx rw r--
111 110 100
rwx
7 6 4
r=4
w=2
x=1

---000 0
--x001 1
-w-010 2
-wx011 3
r--100 4
r-x101 5
rw-110 6
rwx111 7

file ;6rw ,4r ,0,1x 有执行权限是奇数肯定有x

dir :7rwx 5r-x ,0

chmod -R a+x dir1 给dir1 文件以下递归都给x权限

执行权限意味着危险性

chmod -R +X dir2 大X只针对目录加执行权限
如果文件有执行权限则加X

如果文件夹只有执行权限,则可以运行文件夹里的程序

重点
chmod -R 777 dirl / 非常危险不亚于重装系统 所有文件为777
chown -R wang /
非常危险把所有 把所有文件为wang

递归很危险
chown root:root 文件
chown root.root 文件改所有者 所属组

运维每次执行命令都要有记录

umaskdefault =file666/dir 777
因为有安全风险所以才给666
文件基数加1 6+1 就是奇数加一
对目录公式正确
文件如果有基数加1 偶数不变

.bashrc 里放家目录umask 每个用户可以设置每个与自己不同的unmask

umask mask ;掩码 取消对应的权限 夺1

666 110110110
125 001010101
642 110100010

umask -p 下显示umask

umask -p >> .bashrc

umask u=rwx,g=r ,o= 直接写默认权限
0037

SUID ,SGID ,Sticky

当程序有SUID权限 继承二进制所有者的权限而运行文件
任何人都是以这个suid权限的所有者身份运行文件
变成文件的所有者root的权限对程序进行操作给s权限相当于给root
只适合二进制可执行程序文件,作用在目录没有意义

小s是有x+S
大S是大S
chomd u+s
chmod 4755 suid 为4
SUID权限非常危险 任何编辑的程序不能加SUID
SUID只适合于二进制可执行程序上 ,SUID对文件夹没有效果,既不能继承所有者权限去做事
su unmount
SGID 继承二进制程序所属组的权限而运行文件
SGID做用于目录,此目录新建的文件,和文件夹继承目录的所属组
chmod g+s
chomd 2755 sgid 为 2

sticky1 粘滞位 只针对作用于目录,此文件只能被所有者删除

生产中有一个项目和项目文档,目录有写权限,如果加粘滞位只能删自己的
chmod o+t
chmod 1755 sticky1 为1

groupadd opts
usermod -aG opts wang
usermod -aG opts mage
chgrp opts *

SGID做用于目录,此目录新建的文件继承目录的所属组

chattr 对特定文件加以保护避免root账户修改,删除 ,只能读

lsattr 看文件锁定情况

chattr +i file1 锁定文件 ,不能修改文件内容

chattr -i file1 去锁

chattr +a file1 锁定文件 ,可以追加 文件>>
chattr -a file1 解锁文件

重点 chattr +A file1 atime锁定读时间
锁定文件读时间可以大大提升性能如/var/www/html 里的文件

ACL权限 ext系列支持acl
centos6后来挂载的分区不支持acl
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test

一单启用acl 组权限变成mask权限 group=mask权限
除了其他人和user其他的在这个组的启动权限mask权限是限高组权限
一旦acl权限开启则group就是mask限高线
acl执行判断顺序也是getfacl从上到下匹配 ,先看是不是user如果是其他权限不生效

如果用户有多个组权限则累计权限, 如果都不是则other
自定义用户,和组 不能都不能超过mask
,默认权限不能
acl权限如果用户mage 的文件f1 属g1 g2多个组的话可以累加权限
setfacl -m u:wang:0 f1 set file acl 让王账户不能读不能写

setfacl -m u:mage:rw f1 让mage可以读写

setfacl -M acl.txt f1 通过acl.txt文件来设置 f1 文件类型
cat >acl.txt
u:wang:rx
g:g1:rx
g:g2:rx
setfacl -M acl.txt f1

setfacl -x g:g2 f1 删除组

setfacl -X acl.txt f1 通过acl.txt文件来删除 f1 文件类型

setfacl -b f1 删除所有acl 权限

getfacl f1 看f1 里的权限

getfacl file1 |setfacl --set-file=- file2 根据file1设置file2
cp -a cp -p复制可以保留acl权限,如果新建的分区支持acl权限则保留不住
备份还原acl权限
getfacl -R /tmp/dir > acl.txt
setfacl -R -b /tmp/dir
setfacl -R --set-file=acl.txt /tmp/dir

group:g1:rw-
group:g2:--x

mage属于 g1 g2 则 马哥可以rwx

mask 定义除了user 和other 的最高权限

setfacl -m mask::r f1 除了除了user 和other 其他人都是r

一旦设了acl 权限 则chmod g=rw 改的是 mask::rw

centos7以前 默认ext文件系统支持acl 默认手工创建的文件下午acl需手动添加

centos 7都支持

cat用来看文本文件
脚本出错,多了空格用cat -A 可以看到
cat -n 加行号 所有行号
cat -b 加行号 只加有文字的

cat -s 压缩空行 将多余空行压缩一个

cat -A 显示回车显示空格所有控制符

tac f1.txt 反向显示文件

rev f1.txt 反向显示文件 按一行反向显示 reverse

more 可以和管道配合
more 空格往下翻 b往上翻
ls -R /etc | more 如果列表特别多可以用分页显示就用more

less
less less可以分页显示
man用的就是less

head -n 2 /etc/passwd 显示2行
head -c 12 显示12个字节
openssl rand -base64 100 |tr -dc ‘[:alnum:]’|head -c 12 生成只有字母随机数
tail 用来查看日志
tail -f /data/f2.log 跟踪文件内容如果变化就显示
如果删除文件则tail -f 跟踪还存在 tailf 类似 tail -f

tail -F /data/f1 跟踪文件名
-F跟中文件名如果把文件删了则显示找不到文件,如果创建新的文件名字与旧文件相同则跟踪新文件内容

[root@centos7 etc]# echo {1..10}|tail -c4
10
[root@centos7 etc]# echo {1..10}|tail -c5
9 10

ifconfig ens33 |head -n2 |tail -n1

cut 剪切的意思 取出文件的一部分加以显示cut以列为单位取
取文本文件按列来取必须给分隔符

属性字段列域
-f #,# -f 指定列 1,3 1和3列
#-# 1-3 是1到3列

cut -d: -f 1,3 /etc/passwd 1,3 以:做分隔符 取1和3列

who |cut -c 1-9 -c取字符 1-9 是1到9个字符

cut -c1-9
--output-delimiter= 指定输出分隔符

df |cut -c44-46

取ip地址

ifconfig eth0 |head -n2|tail -n1|tr -s " " ":" |cut -d: -f4

rpm -ivh
systemctl restart sshd 重启sshd

同一执行2个命令关闭防火墙
centos6
service iptables stop 关闭防火墙
chkconfig iptables off 让防火墙开机不启动
service network retart
centos7
systemctl stop firwalld
systemctl disable firewalld
systemctl restart network

echo djs > /var/www/html/index.html 网页文件

/var/log/httpd/access_log 网页访问日志里的 访问ip地址

cat /var/log/httpd/access_log | cut -d" " -f1 看访问ip地址

/var/log/httpd/access_log

172.22.x.y x:学号 y:

paste f1 f2 文件合并 把两个文件合并进同一个行
1 11
2 12
3 13
4 14
cat f1 f2 纵向合并
1
2
3
4
11
12
13
14
paste -s f1 f2 放1行
1 2 3 4
10 11 12 13

paste -d":" f1 f2 用冒号作文分隔行

wc wordcount简写 行 单词 字节
空格隔开就是单词

wc 和管道配合

ls |wc
wc -l 多少行
wc -w 单词 空格后就是单词 word
wc -c 字节 bytes
wc -m 字符数 有汉字则字节不一样 chars
wc -L 显示行最长的

/var/log/httpd/access_log 网站访问量pv 就是这个日志
pv page view 访问页面数量 有多少行有多少pv

sort -t: -k3 /etc/passwd 给:分隔符 第三列排序
sort 默认按第一行单词排序
sort -t: -k3 /etc/passwd -n 是数字排序

sort -r 是倒叙

netstat -nt 查询ip pid 看进程号

tasklist 进程编号 pid 4508 window编号
findstr过滤
netstat -no |findstr 4508

sort -u 把重复的删掉
sort -f忽略大小写
sort -R 随机排序
[root@centos7 ~]#cut -d":" -f"1,3" /etc/passwd |sort -t":" -k2 -nr

uniq 支持管道
uniq 把相邻的重复行合并成一个

uniq -c 显每行重复出现次数

uniq -u 显示不曾重复的行
也就是没有被合并过的行
[root@centos7 ~]#cat /var/log/httpd/access_log | cut -d" " -f1|sort |uniq -c|sort -t" " -k1 -nr

rpm -ivh /misc/cd/Packages/lrzsz-0.12.20-27.1.e16.x86_64.rpm

last 显示日志 看重新登录的信息 空地址为本地登录
root pts/2 172.18.140.77 Sat Mar 9 11:00 still logged in
root pts/1 172.18.140.77 Sat Mar 9 10:23 still logged in
root pts/1 172.18.140.77 Sat Mar 9 09:47 - 10:23 (00:36)
root pts/0 :0 Sat Mar 9 09:46 still logged in
root :0 :0 Sat Mar 9 09:46 still logged in
reboot system boot 3.10.0-957.el7.x Sat Mar 9 09:45 - 14:09 (04:23)
root pts/4 192.168.209.1 Sat Mar 9 09:15 - down (00:30)
root pts/4 192.168.209.1 Fri Mar 8 23:08 - 23:59 (00:51)
mage pts/3 :0 Fri Mar 8 23:06 - 09:45 (10:38)
root pts/2 192.168.209.1 Fri Mar 8 22:46 - down (10:59)
root pts/0 192.168.209.1 Fri Mar 8 22:01 - down (11:44)
root pts/1 192.168.209.1 Fri Mar 8 19:44 - down (14:00)
mage :0 :0 Fri Mar 8 19:30 - down (14:14)
mage tty3 Fri Mar 8 18:36 - 09:45 (15:09)
mage tty3 Fri Mar 8 18:35 - 18:35 (00:00)
root pts/0 192.168.209.1 Fri Mar 8 18:29 - 22:00 (03:31)
root tty2 Fri Mar 8 18:29 - 09:45 (15:16)
reboot system boot 3.10.0-957.el7.x Fri Mar 8 18:28 - 09:45 (15:17)
root pts/2 192.168.209.1 Fri Mar 8 18:24 - crash (00:03)

统计远程主机登录次数前三个ip
[root@centos7 ~]#last |tr -s " "|cut -d" " -f3|sort|uniq -c|sort -nr|head -n3

diff fstab2 fstab 比较2个文件 区别
diff -u fstab2 fstab 比较2个文件 显示格式信息 如时间适合用于补丁文件
diff -u 显示格式信息 如时间
diff只能比较两个文件 ,如果把其中一个文件删了另一个文件需要用其文件名并且命令备份
备份操作
diff -u fstab2 fstab >diff.log
rm -f fstab2
patch -b fstab diff.log
新文件是fstab=fstab2 fstab.org

stat /tmp | head -n4 |tail -n1|cut -d" " -f2|cut -c2-5 查看文件权限

上一篇:linux的基本命令1


下一篇:第一天敲程序的随笔