您的位置:首页 > 运维架构 > Linux

linux 学习--特殊权限,文本编辑

2018-01-18 14:36 155 查看
一:特殊权限
SUID:当对一个可执行的二进制文件作用了suid权限之后,任何人在执行该文件时临时拥有其所属人的权限。
SGID:当对一个可执行的二进制文件作用了sgid权限之后,任何人在执行该文件时临时拥有其所属组的权限。
当对于一个目录作用了sgid权限之后,任何人在该目录下创建的文件的所属组与该目录的所属组相同。
(需要注意的是文件必须是可执行的二进制文件,而非shell等解释型语言文件)

Sticky:当对于一个目录作用了sticky权限之后,该目录下的文件仅其文件的所属人,或目录的所属人及root才能删除。
chmod u+s 4xxx
chmod g+s 2xxx
chmod o+t 1xxx
即有suid又有sgid 6xxx
即有suid又有sticky 5xxx
即有sgid又有Sticky 3xxx
全有7xxx
权限位原本有x的,加上特殊权限后,显示为小写,原本无x,显示为大写。
实验一:(1)在/app下创建wuguo文件,将权限改为400,所属人,所属组改为leibei。将/bin/cat拷贝到/app下并将所属人所属组改为刘备,设置权限SUID。
(2)用echo命令将hello输入到wuguo中。
(3)运行/bin/cat wuguo 发现不成功,运行/app/lbcat /app/wuguo 成功
原因:运行/bin/cat wuguo时,受到wuguo文件权限的限制,执行不成功,当运行/app/lbcat /app/wuguo时执行这个文件后,临时拥有了它的所属人权限,执行成功。





实验二:刘备关羽张飞三个用户有一个共享目录叫shuguo,要求三人的主组不一样的情况下,三人在Shuguo目录下所创建的文件,彼此之间可以读取及修改。但不能删除其他人创建的文件。







文件特定权限
chattr +a 不能删除,不能改名,不能修改,可以追加
chattr +i 不能删除,不能改名,不能修改,不能追加
lsattr 查看权限

二:ACL

1.传统的Linux文件系统的权限控制是通过user、group、other与r(读)、w(写)、x(执行)的不同组合来实现的。随着应用的发展,这些权限组合已不能适应现时复杂的文件系统权限控制要求。例如,我们可能需把一个文件的读权限和写权限分别赋予两个不同的用户或一个用户和一个组这样的组合。传统的权限管理设置起来就力不从心了,为了解决这些问题,Linux开发出了一套新的文件系统权限管理方法,叫文件访问控制列表(Access Control Lists,ACL)。
2.ACL的作用:实现权限的灵活管理,除了文件的所有者,所属组还可以对更多的用户进行权限设置。
3.centos6当中对新建分区开启acl的过程

(1)创建分区
fdisk /dev/sda
n回车
回车
+2G回车
w回车
(2)同步分区表
partx -a /dev/sda
(3)创建文件系统
mkfs.ext4 /dev/sda6
(4)开启acl支持
tune2fs -o acl /dev/sda6
(5)查看acl
tune2fs -l /dev/sda6 |grep option
注:centos7中的所有文件系统以及Centos6随着操作系统安装是划分的文件系统均已默认开启acl。

ACL生效顺序:owner > acl user > group 与 acl group 谁的权限多,谁优先 > other

4.ACL的查看及设置
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -Rm g:sales:rwX directory
setfacl -M file.acl file|directory
setfacl -m g:salesgroup:rw file| directory
setfacl -m d:u:wang:rx directory
setfacl -x u:wang file |directory
setfacl -X file.acl directory
setfacl -m m:r-x file |directory 设置上限阀值 或chmod g=r-x
setfacl -d -m u/g:username/groupname file |directory 设置默认权限
setfacl -k file |directory 清除默认权限
setfacl -b file |directory 清除acl属性
注意: 一旦设置mask,原本的组权限便不能更改,而且原先显示组权限的地方显示mask,不在显示组权限。



5.acl权限的备份及还原

getfacl file |directory > acl.txt
setfacl --restore acl.txt
练习:

1、在/testdir/dir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。
思路:在该目录的组上设置特殊权限g+s,然后在该目录上设置默认ACL,设置g2:rwx;g3:r-x。
2、备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限
getfacl /testdir/dir > /root/acl.txtsetfacl --restore /root/acl.txt三:文本处理
1.cat
-E 显示换行符$
-v 显示^M(window中以^M$结尾)
-T 显示^I即tab
-A = -EvT
-n 输出的结果前显示行号
-b 输出的结果前显示行号,非空行不参与排列
-s 将连续的空行压缩为一行

2.sort
-n 按数字排列
-r 倒序排列,默认升序
-t 指定分隔符
-k 指定哪一列
-f 忽略大小写
-u 删除重复行
3.head -n 10 /ect/fstab:输出文件前10行

-c 10 文件名 按字节查看前10个字节

tail -n 10 /ect/fstab:输出文件后10行
-c 10 文件名 :按字节查看后10个字节。

-f 文件名:动态显示,可用来查看日志。
cut
-d 指定分隔符(默认为tab)
-f 取第几列
-c 安字符切割
--output-delimiter=STRING 指定输出的分隔符
paste:合并两个文件同一行号到一行。

-d 指定分隔符

-s 变成一行输出

例: paste file1 file2 -d:

练习:(1)利用df,取出分区利用率的最大值,只要数字。
df |tr -s " " : |cut -d: -f5 |sort -n |tail -n 1 |cut -d% -f1
(2)列出当前系统中的所有用户的uid

cat /etc/passwd|cut -d: -f1,3 --output-delimiter=的UID是
4.wc:统计工具

-l 只计数行数

-w 只计数单词数

-c 字节

-m 字符

5.uniq
去除连续重复行,往往和sort配合使用,先排序,再去重
-c 显示重复的次数
-d 仅显示重复行
-u 仅显示非重复行
实验:通过查看httpd的访问日志/var/log/httpd/access_log来显示出访问网站最多的来源ip列表,显示结果时显示出访问次数。
答案:cut -d" " -f1 access_log |sort |uniq -c |sort -nr
网站部署过程
[root@centos6 ~]# service httpd restart
[root@centos6 ~]# iptables -F
[root@centos6 ~]# cd /var/www/html/
[root@centos6 html]# vim index.html

6. diff
diff f1 f2 比较两个文件的不同之处
diff -u f1 f2 > diff.log
rm -f f2
patch -b f1 diff.log
mv f1 f2
mv f1.orig f1

练习:
以数字方式显示/etc/passwd文件的权限
stat -c %a /etc/passwd
stat /etc/passwd |head -4 |tail -1 |tr [:punct:] - |cut -d- -f3 |cut -c 2-4

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 学习 特殊权限