1.用户权限设置以及更改
linux 判断你的权限的是UID而不是GID
就算加入root的组也没有root的权限,只有UID为0的才为管理员
useradd -s /sbin/nologin -r -d /data/mysql -m mysql -u 1234
运维的终极目标就是自动化管理,自动化管理的前提就是环境的统一化。
chown 设置文件的所有者把f1文件所有者变为Max
chown Max f1
chgrp 设置文件的所属组把f1文件所属组设为Maxi
chgrp Maxi f1
token里包含有你的(uid,gid,groups)
read r 读
write w 写
excute x 执行
二进制程序读权限没有什么实际意义,一般读权限是给文本文件的
写权限也是,除非你是黑客能看到二进制内容,随便改有可能导致程序崩溃
注意:
1.普通用户不能改文件所有者
2.普通用户要改文件所属组,首先文件必须是本人的,同时必须在想改变的组内
修改权限的方法
方法一:
chmod 改变权限
方法1:mode 法
chmod who opt per file
who:u g o a(a=all)
opt:+ – =
per:r w x X
例子:
chmod u+x file
chmod u+x,g-w,o= file
对于普通用户而言,文件所有者可以修改文件的权限
对于file,赋予拥有者x权限,组用户去除w权限,other空权限
对于只有w权限而没有r权限的可以往里面追加信息却不能读
例如:
echo mage2 >> f1
> f1 清空内容!!
但是
rm -f f1 没法执行!!
因为删除文件必须拥有目录写权限
删除文件等于删除目录内容inode等
所以必须对文件夹有权限
删除文件必须删除目录
读权限对二进制程序不是必须例如
chmod -r /bin/cat
后照样能够执行
但是如果没有执行权限就不能执行了
chmod -x /bin/cat
没有读权限有执行权限
file /bin/cat 失败
因为file原理是打开文件后分析信息实现
读权限对于目录
对于目录而言只有x权限,没有r不能看文件列表但是可以打开里面文件,前提你知道文件名
有r而没有x权限,不能cd进去,不能查看详细属性,也不能查看文件内容
rx权限对于目录来说是基础权限,一般全给要不就全不给。
如果对目录只有wx权限就可以删除目录下的文件!前提你知道里面有什么文件!因为你没有r权限!
另外,如果对于文件设置
chmod u=r,g=rw,o=rwx f1
结果用户只有r权限
vfat系统是window系统文件系统不支持权限修改!
用参考文件f1的权限设置f2和f3
chmod –reference=f1 f2 f3
引用f1权限设置f2 f3
总结:
1.读写权限对root无效
2.执行权限例外,没有执行权限包括root也不能运行,但是root可以修改权限
3.普通用户无法修改文件的所有者
4.普通用户要改文件所属组必须自己在这个组以内
5.删除文件不是对文件有写权限而是对文件夹有写权限
6.系统权限判断的顺序是所有者 所属组 other,一旦匹配就不再判断!不管后者的权限是不是比前者大!
7.权限修改是由文件系统决定的而不是操作系统决定的。
方法二:
数字法
u g o
rwx rw- r–
111 110 100
7 6 4
chmod 764 f1
r:4
w:2
x:1
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
常见
file:6rw,4r,0,1x
dir:7rwx,5r-x,0
为dir1目录下的文件和文件夹都加执行权限
chmod -R a+x dir1
为dir2目录下所有文件夹加执行权限
chmod -R +X dir2
当然有一种例外,如果拥有者已经有其中一个文件的执行权限那么用+X文件也会给其他文件加执行权
限!!
chown -R wang /*
chmod -R 777 /*
都是危险操作!!!!!!!!!!!
一次性更改文件或者目录所有者和所属组(.或者:都可以做为分隔符)
chown wang.g1 dir1
chown root:admins testfile
同时修改所有者和所属组
chown root. dir1
所有者不变,只修改所属组
chown :bin dir1
以上2种方法一般少用,因为结果不明晰,容易出错
默认权限
默认目录权限755 文件644
默认创建文件和目录的权限
umask
0022
umask022+default644|755=file666/dir777 初步后面必须修正!!奇数加1偶数不变对于文件而言!!文件
夹不用!!!
umask mask : 掩码
功能:取消对应的权限
666
125
541
奇数加1偶数不动
110110110
001010101
11010010
642
总结:
对于目录
unmask+default=777
对于文件
666-umask:对结果观察,如果有奇数+1,偶数不变
如果想永久修改umask,可以把修改数据写入.bashrc中格式为
umask xxx
在显示umask值前面增加umask这个词以方便写入文件
umask -p
umask 0022
umask -p >> .bashrc
umask -S
则显示u=rwx,g=rx,o=x
直接设置法:
umask u=rwx,g=r,o=
umask 026
练习
5、复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所
属组为apps组有读写权限,其他人无权限
6、误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性
答案
5
useradd tomcat
groupadd apps
groupmems -a tomcat -g apps
cp /etc/fstab /var/tmp/
chown tomcat:apps fstab
chmod 660 fstab
6
1.mkdir /home/git
2.cp -a /etc/skel/.[^.]* /home/git
或者
cp -r /etc/skel /home/git
3.chown -R git.git /home/git/
4.chmod 700 /home/git
2、特殊权限suid、sgid、sticky
linux 文件系统上的特殊权限
suid作用在于当一个用户去运行一个程序的时候,会继承二进制程序所有者的权限
用户运行具有suid权限的程序时,会临时继承程序所有者的权限
s权限相当于S+x权限
数字法
chmod 4755 /usr/bin/passwd
chmod 755 /usr/bin/passwd 就是去s权限
chmod g+s FILE…
chmod g-s FILE…
suid只适合在二进制的可执行程序
sgid就是用户运行具有suid权限的程序时,会临时继承程序所属组的权限
1)继承二进制程序所有者的权限
2)作用于目录,此目录新建的文件继承目录的所属组
chmod 2755 /bin/nano
chmod g+s /bin/nano
chmod g+s DIR…
chmod g-s DIR…
sticky是针对文件夹设置的,设置在文件上没有价值
作用于目录,此目录的文件只能被所有者或root删除,又叫做粘滞位
chmod o+t dir1
chmod o-t dir1
chmod 1777 /data/dir1
普通用户就算对dir1有写权限,可是无法实现删除其他客户的文件!
总结:
1.suid:继承二进制程序所有者的权限
2.sgid:
1>继承二进制程序所有组的权限
2>作用于目录,此目录新建的文件继承目录的所属组
3.sticky:作用于目录,此目录的文件只能被所有者删除
当有wang和mage都参与一个项目需要在同一目录dir1中创建文件,为了方便相互访问文件,可以把目录
dir1添加sgid权限,然后设置一个附属组例如opts,让wang和mage都加入该组,这样由于dir1有s权限,那
么在该目录下无论谁创建的文件,默认组都是opts,那么就组成员就可以访问彼此的文件了,还可以为
other添加t权限,防止非文件所有者删除文件。
chmod 3777 dir1 (3 s+t )
chattr对文件加锁,管理员也可以避免误操作
chattr +i s 锁定文件s不能删除也不能改只能读,包括root
chattr -i 解锁
chattr +a 只允许追加内容
chattr +A 锁定atime
lsattr ss 显示ss的特殊属性
—–a———-
3、ACL权限设置
ACL
setfacl -m u:wang:0 f1 set file acl
setfacl -m u:mage:rw f1
getfacl f1 查看f1设定的特殊权限列表
一旦启用acl ,传统组权限group会变成mask权限
setfacl -m g:g2:x f1 加
setfacl -x g:g2 f1 删
getfacl f1
mask定义了除user和other的最高权限
setfacl -m mask ::r f1
就是设置了除user和other之外最高只能有读权限
如果之后对某一个文件执行
chmod g=rw f1
则mask 直接变为rw-
setfacl -b f1
清空权限列表
启用ACL后的判断顺序依然是匹配顺序,一旦匹配直接生效
所有者–》所属组—》其他人
centos6 装好系统后才手动添加的分区是不支持acl必须自己添加
centos7 全部支持acl
setfacl -M acl.txt f1
批量修改权限
练习
1、在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如:tomcat能对这些新文件有读写权
限,组dbs的成员如:mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件
夹。
2、备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原
ACL权限
答案
1.
mkdir -p /testdir/dir
groupadd webs
groupadd apps
groupadd dbs
useradd -G apps tomcat
useradd -G dbs mysql
setfacl -m g:apps:rwx /data/testdir/dir
setfacl -m g:dbs:r-x /data/testdir/dir
chmod o=”” /data/testdir/dir
2.
getfacl -R /test/dir > /root/acl.txt
setfacl -R -b /test/dir
setfacl -R –set-file=acl.txt /root
setfacl –restore acl.txt
getfacl -R /tmp/dir1
4、cat命令、head命令、tail命令、cut命令、paste命令
文本编辑工具
cat
显示行结束符$
cat -E
对每一行进行编号
cat -n
显示所有控制符
cat -A
显示非空编号
cat -b
压缩连续的空行成一行
cat -S
反向显示
tac 竖着反
rev 横着反
这样设置方便以后的网络教学:
centos 6
service iptables stop
chkconfig iptables off
centos 7
systemctl stop firewalld
systemctl disable firewalld
文件截取
head
指定获取前#字节
head -c#
指定获取前#行
head -n#
指定获取第#行
head -#
tail
指定获取后#字节
tail -c#
指定获取到后#行
tail -n#
指定获取后第#行
tail -#
跟踪显示文件fd新追加的内容,常用日志监控相当于–follow=descriptor
tail -f
跟踪文件名,相当于–follow=name –retry例如当原文件被执行删除时会有提示,原理是跟踪文件名
tail -F
当文件不增长时并不访问文件,类似tail -f
cut
指明分隔符,默认tab
cut -d
cut -f#
#:第#个字段
#,#:离散的多个字段,例如1,3,6
#-#:连续的多个字段,例如1-6
混合使用:1-3,7
例如取/etc/passwd文件里的第一和第三列,还有第五列到第七列用:做为列分隔符
cut -d: -f 1,3,5-7 /etc/passwd
按字符切割
cut -c
例如取who命令里面的前9个字符
who | cut -c1-9
例如用cut利用率取分区利用率
df | tr -s ” ” | cut -d” ” -f5 | tr -d “%” |
df | tr -s ” ” % |cut -d% -f5
又例如取出ifconfig ens33中的ip地址
ifconfig ens33 |head -n2 | tail -n1 |tr -s ” “|cut -d” ” -f3
取出ifconfig eth0 ip
ifconfig eth0|head -n2|tail -n1|tr -s ” ” :|cut -d: -f4
指定输出分隔符
cut -d: -f1,3 –output-delimiter=”===” /etc/passwd
paste
合并两个文件同行号的列到一行
paste -d 指定分隔符
paste -s 所有行合成一行显示
wc (word count)
例如
wc f1
10 10 21 f1
行数 单词数 字节数
统计行数
wc -l
统计单词数
wc -w
统计字符数
wc -m
5、sort命令、uniq命令、diff命令
sort
从列中抽出数据按照指定的规则排序
sort -t 指定分隔符
sort -k 指定列数
sort -n 按照数字大小排序
例如按照数字大小排序/etc/passwd下的uid
正向
sort -t:-k3 -n /etc/passwd
反向
sort -t:-k3 -nr /etc/passwd
取出df中占有率最大的数值
df | tr -s ” ” % |cut -d% -f5 |sort -nr |head -n1
把重复的内容取消
sort -u
例如把/etc/passwd下的用户按uid进行排序
cut -d: -f1,3 /etc/passwd |sort -t: -k2 -nr
uniq
从标准输入中删除前后相接的重复的行
显示重复的行出现的次数
uniq -c
仅显示重复过的行
uniq -d
仅显示不曾重复的行
uniq -u
统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
last | tr -s ” ” |cut -d” ” -f1,3|sort -t” ” -k2 -nr|uniq -c|sort -nr|head -n3|tr -s ” “|cut -d” ” -f4
比较文件
diff
diff f1 f2
显示额外的信息
diff -u f1 f2
通过diff.log文件和f2恢复已经删除的文件f1
diff -u f1 f2 > diff.log
patch -b f2 diff.log
由于通过命令找回的文件会命名为f2所以会覆盖原f2内容,为了避免于此,就加-b选项对f2做备份
生成f2.orig,运行此命令后会生成f2就是原来的f1,f2.orig就是原来的f2
练习
1、找出ifconfig “网卡名” 命令结果中本机的IPv4地址
2、查出分区空间使用率的最大百分比值
3、查出用户UID最大值的用户名、 UID及shell类型
4、查出/tmp的权限,以数字方式显示
5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
答案
1.
centos7
ifconfig ens33 | head -n2 | tr -s ” ” : | cut -d: -f3
centos6
ifconfig ens33 | head -n2 | tr -s ” ” : | cut -d: -f3
2.
df | tr -s ” ” % | cut -d% -f5 | sort -n | tail -n1
3.
cat /etc/passwd |sort -t: -k3 -nr | head -n1 | cut -d: -f1,3,7
4.
5.
last | tr -s ” ” |cut -d” ” -f1,3|sort -t” ” -k2 -nr|uniq -c|sort -nr|head -n3|tr -s ” “|cut -d” ” -f4
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95931