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 查看文件权限