当前位置: 首页 > 编程日记 > 正文

Linux基础教程之linux文件权限深度解读

基本命令——来源于马哥教育官网
1.cut
: cat /etc/passwd | cut -d’:’ -f7| uniq -c| sort -nr

2.authconfig 修改加密方式
–passalgo=sha256 — update
3.scp 上传文件
-r dir ip:path 传目录
file ip:path传文件
-P port 指定端口
4.rsync 同步文件
-avz 源文件 ip:path
scp和rsync都是基于ssh协议

5.id
-u显示uid;-g显示gid;-G显示附属组id
-nu显示用户名;-ng组名;-nG附加组名
6.su
: -user -c ‘commond’以某个用户身份执行commond

加-与不加的区别: su UserName :非登录式切换,即不会读取目标用户的配置 文件,不改变当前工作目录 su – UserName :登录式切换,会读取目标用户的配置文件 ,切换至家目录,完全切换

7.查看内核信息
cat /etc/redhat release 查看系统版本
uname –r 查看内核 #uname –m 查看32 or 64位系统
uname –a 查看内核完整信息
8.新建一个500M的磁盘
dd if=/dev/zero of=/app/disk bs=1M count=500 mount -o loop /app/disk/ /mnt/disk

文件管理
文件权限说明:

r: 可使用文件查看类工具获取其内容(cat nano)
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
目录权限说明:

r: 可以使用ls 查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的可读文件(目录还必须要有x权限)
x: 可以使用ls -l 查看此目录中文件列表,可以cd 进入此
12.chown
user file修改文件的属主
user:gname file 修改属主和属组
:gname file 修改属组
user file修改文件的属主
user.gname file 修改属主和属组
.gname file 修改属组
option
–reference=/path/to/filename file 指定为与参考目录权限一致(属主属组同时修改)
-R user:gname dir 递归修改dir下所有文件权限
13.chmod[OPTION]… MODE[,MODE]… FILE…
MODE:修改一类用户的所有权限:u= g= o= ug= a= u=,g=修改一类用户某位或某些位权限u+ u- g+ g- o+ o- a+ a- + –

-R 递归修改
–reference=/path/to/file file
14.chgrp
GRPNAME file… (修改所属组) -R 递归修改 –reference=/path/to/file file

chgrp sales testfile chown root:admins testfile chmod u+wx,g-r,o=rx file chmod -R g+rwX /testdir chmod 600 file chown mage testfile
对目录有w权限即可删除目录下的文件

15.umask 遮罩码
目录权限默认655,文件权限默认644
root为022,普通用户为:002,故root用户创建的目录权限为644,普通用户创建文件权限为:775 umask的计算,讲最大位权限去除(文件最大位666.目录777),umask为1去除.为0保留 umask:022 default:644 umask 000 010 010 max 110 110 110 default 110 100 100 得到default644 目录默认权限:777-umask 文件默认权限:666-umask,所得结果的奇数位加1 针对文件速算:666-022的结果偶数位不变.基数位加1 目录直接相减 mask 只影响除所有者和other 的之外的人和组的最大权限 Mask 需要与用户的权限进行逻辑与运算后,才能变成有限的 权限(Effective Permission)

更改遮罩码:umask 137或者 umask u=rw,g=r,o=(注意这种设置方式即是目录的默认权限)
目录默认不能具有执行权限,如果算得的结果中有执行权限则将其权限加一,算得权限小于0则为0
umask –S 模式方式显示
[root@yongge: /root]# umask -S u=rwx,g=rx,o=rx
v umask –p 输出可被调用(输出umask 0002) umask -p >> .bashrc = v 全局设置: /etc/bashrc 用户设置:~/.bashrc
16.特殊权限
SUID 特殊用户权限(只作用于文件)只对二进制可执行程序有效
何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限.启动为进程之后,其进程的属主为原程序文件的属主

一旦可执行文件拥有SUID权限,那么其他用户就可以以这个文件的拥有者的身份去执行这个文件

chmod u+s FILE...
chmod u-s FILE...
chmod 4644 FILE...
chmod 0644 FILE...
SGID 特殊组权限(作用于文件或目录)
一旦某目录被设定了SGID ,则对此目录有写权限的用户在此 目录中创建的文件所属的组为此目录的属组

一旦具有可执行的文件夹那么其他用户可以以文件拥有组的身份去执行这个文件

chmod g+s FILE...
chmod g-s FILE...
chmod 2644 FILE...
chmod 0644 FILE...
sticky 黏滞位 (作用于目录,例如/tmp/)
在目录设置Sticky 位,不管有无写权限,任何人都能在此目录创建文件但只有文件的所有者或root可 以删除该文件

chmod o+t DIR...
chmod o-t DIR...
chmod 1644 DIR...
chmod 0644 DIR...
drwxrwxrwt. 8 root root 4096 Mar 30 08:57 tmp
SUID: user, 占据属主的执行权限位

s: 属主拥有x 权限
S :属主没有x 权限
SGID: group, 占据属组的执行权限位

s: group 原文件拥有x 权限
S :group 原文件没有x 权限
Sticky: other, 占据other 的执行权限位

t: other 拥有x 权限
T :other 没有x 权限
权限为映射

SUID SGID STICKY 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 chmod 4777 /tmp/a.txt
访问控制列表ACL(Access Control List)
: 对某个文件添加一个用户白名单,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限CentOS7 默认创建的xfs 和ext4 文件系统具有ACL 功能CentOS7 之前版本,默认手工创建的ext4 文件系统无ACL功能.需手动增加

tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
17.lsattr查看文件的隐藏属性

  1. chattr [+-=] -R(递归处理)
    +i 不能删除,改名,更改
    +a 只能追加(适用于一些日志)
    +c 将目录或文件压缩后存放
    +s 保密性删除文件或目录
    +S 即时更新文件或目录
    +u 预防意外删除
    +A 锁定atime
  2. getfacl查看文件的隐藏属性
    21.setfacl 设置访问权限
    setfacl -k dir 删除默认ACL 权限
    setfacl –b file1 清除所有ACL
    -x (u|g|o):(uname|gname)移出权限列表
    -M通过文件批量设置.例如新建acl.txt,内容如下:
    u:lee:rwx g:ftp:rw g:admins:rwx setfacl -M acl.txt file1

–set 选项会把原有的ACL 项都删除,用新的替代,需要注 意的是一定要包含UGO 的设置,不能象-m 一样只是添加ACL就可以 • 示例: setfacl –set u::rw,u:wang:rw,g::r,o::- file1
d操作符注意事项
先明白两个概念:Defalt ACL 和Access ACL Default ACL为目录的默认访问权限列表,一旦设置了默认.那么此目录下的所有文件和目录会继承这个默认设置,但是需要注意的是.默认权限对目录本身并没有作用;Access ACL访问权限控制.不具有继承性;例如: 例如setfacl -m d:u:wang:rx dir1中的d就是将dir1设置为默认权限列表,这样dir1下面新建的文件或目录都会把wang这个用户列为rx权限;

实例:让lee用户具有test目录下的新文件或目录的rwx权限
setfacl -m d:u:lee:rwx /test/
[root@yongge: /]# getfacl /test getfacl: Removing leading '/' from absolute path names #file: test #owner: root #group: root user::rwx
group::rwx
other::rwx default:user::rwx default:user:root:rwx default:user:lee:rwx default:group::rwx default:mask::rwx default:other::rwx

下面在test目录下新建at文件
[root@yongge: test]# touch at [430][root@yongge: test]# getfacl at #file: at #owner: root #group: root user::rw-
user:root:rwx #effective:rw- user:lee:rwx #effective:rw- group::rwx #effective:rw- mask::rw-
other::rw-

可以看到at文件具有了lee的rwx权限
root@RedHat-7 mnt]# setfacl -m u:user1:rwx share //为目录添加ower = user1 ,并赋予rwx 的权根。 [root@redhat-7 mnt]# setfacl -d -m u:user1:rwx share //为目录添加默认的acl权限,此目录下创建目录和文件都会继承此权限信息 • mount -o acl /directory
• 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 d:g:lee ./dir删除lee组的默认访文列表权限
• setfacl -X file.acl directory 通过特定格式的文件删除访问权限.文件格式如下 u:lee g:root
• getfacl file1 | setfacl --set-file=- file2 复制file1(-接受前一个命令的标准输出)
的 的acl 权限给file2
ACL的umask对other不生效,本质是权限的限高线,不管目前有什么权限,一旦设置mask则最大权限由mask决定setfacl -m mask::rw 则此文件或目录的最高权限不超过rw

22.备份和恢复ACL
: 主要的文件操作命令cp 和mv 都支持ACL ,只是cp 命令需要 加上-p 参数。但是tar 等常见的备份工具是不会保留目录 和文件的ACL 信息

练习

在/testdir/dir 里创建的新文件自动属于g1 组,组 g2 的成员如:alice 能对这些新文件有读写权限,组g3 的成员如:tom 只能对新文件有读权限,其它用户(不 属于g1,g2,g3 )不能访问这个文件夹。 chown g:g1 /testdir/dir chmod g+s /testdir/dir setfacl -m d:g:g2:rw /testdir/dir
备份/testdir/dir 里所有文件的ACL 权限到 /root/acl.txt 中,清除/testdir/dir 中所有ACL 权限 ,最后还原ACL
getfacl -R /testdir/dir >>/root/acl.txt setfacl -b /testdir/dir setfacl –restore=/root/acl.txt

转载于:https://blog.51cto.com/14039865/2317849

相关文章:

浙江大学软件学院2020年保研上机模拟练习 7-4 Shopping With Coupons

目录 解题思路演进过程 第一次程序 第二次程序 第三次程序 解题思路演进过程 首先是题目的理解上:有n个商品,n张优惠券,实际上能买的商品个数最多就是n*n,为啥呢,这题默认是买一个商品必须用一张券,而且一个商品每…

erlang supervisor simple_one_for_one实例

http://www.cnblogs.com/little-ant/p/3196201.html simple_one_for_one vs one_for_one: 相同点: 这种Restart Strategy和one_for_one基本相同(即当一个child process挂掉后,仅仅重启该child process 而不影响其他child process)。 异同点: …

sql isnull函数的使用(转载)

sql isnull函数的使用 ISNULL 使用指定的替换值替换 NULL。 语法 ISNULL ( check_expression , replacement_value ) 参数 check_expression 将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。 replacement_value 在 check_expression 为 NULL时将返回的表达…

Error creating bean with name 'defaultHandlerMapping' defined in ServletContext resource

未解决转载于:https://www.cnblogs.com/hqsbrx/p/9969449.html

priority_queue 结构体的优先级设置

目标:使用结构体Node类型的优先队列,让其按照我们希望的顺序进行排序。 预备知识:会结构体的定义,和结构体类型的优先队列的定义,知道优先队列默认是最大堆排序(即top()得到的是最大的元素) 要做的事:在结…

PNG透明兼容IE6的几种方法

png透明针对IE6一直是件挺麻烦的事情,使用的方法也是各有不同,大多的原理是用IE的滤镜来解决的。 语法:filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabledbEnabled , sizingMethodsSize , srcsURL ) enabled : 可选项。…

ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)...

我们知道在由于大端机和小端机导致网络字节序和主机序有可能是有差异的,我们可以使用系统的ntohs,ntohl,htons和htonl这些处理函数进行转换,下面是我写的一个关于ntohs在处理小端机字节序转换的函数的简单实现. 思想大致如下: 用u_int16_t的2字节16位的整…

循环获取结构体中的健名与值的实现

为什么80%的码农都做不了架构师&#xff1f;>>> type Person struct {Name stringAge int }func main() {a : &Person{"Name", 1}v : reflect.ValueOf(a).Elem() //a需要是引用k : v.Type()for i : 0; i < v.NumField(); i {key : k.Field(i)…

PAT(甲级)2020年春季考试 7-4 Replacement Selection

这种复杂的模拟题&#xff0c;对于我这种菜鸡&#xff0c;只能是根据自己的理解&#xff0c;去把题目给演示出来&#xff0c;然后结合测试用例&#xff0c;一点一点debug打印输出&#xff0c;的确耗时&#xff0c;所以考试要是遇到就放最后吧。 把这题做出来&#xff0c;我的一…

On/Off FlipSwitch 按钮

https://proto.io/freebies/onoff/转载于:https://www.cnblogs.com/ElvinLong/p/4253665.html

P1541 乌龟棋 题解(洛谷,动态规划递推)

题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc.h> #define ll long long using namespace std; ll num[350100]; ll p[5]; ll f[41][41][41][41]; int main() {ios::sync_with_stdio(fa…

asp.net 操作excel的实现代码

http://www.cnblogs.com/fywh/archive/2010/01/25/1655864.html转载于:https://www.cnblogs.com/modernsky2003/archive/2010/02/26/1673925.html

PAT(甲级)2020年春季考试 7-2 The Judger

这道题在模拟过程类型题种算友好的&#xff0c;很平铺直叙&#xff0c;主要就是hash的应用。 有两个小点&#xff1a; 1. 怎样快速求两个未知大小的整数a和b的差值(>0) abs(a,b) 2. 如果某一轮有不止一个人淘汰&#xff0c;应该输出 Round #1: 3 is out. Round #1: 4 …

C++_volatile限定修饰符 Pair类型

Volatile限定修饰符 当一个对象的值可能会在编译器的控制或检测之外被改变时&#xff0c;例如一个被系统时间更改的变量&#xff0c;那么这个变量就应该声明成volatile。 其主要作用是提示编译器&#xff0c;该对象的值可能在编译器未检测到的情况下被改变。因此编译器执行的某…

FWFT FIFO读操作注意

FWFT&#xff1a;First Word Fall Through的缩写&#xff0c;好像是Xilinx的说法&#xff0c;Altera对应的概念是Show-ahead synchronous(SASO)。即数据在rdreq有效之前就有效了&#xff0c;rdreq作为一个应答(ACK)。 需要注意的是当rdreq连续时&#xff0c;容易多读一个数据…

iOS图像识别

iOS通过摄像头动态识别图像 前言&#xff1a; 目前的计算机图像识别&#xff0c;透过现象看本质&#xff0c;主要分为两大类: 基于规则运算的图像识别&#xff0c;例如颜色形状等模板匹配方法基于统计的图像识别。例如机器学习ML&#xff0c;神经网络等人工智能方法**区别&…

PAT(甲级)2019年冬季考试 7-4 Cartesian Tree

这道题利用的是最小堆和中序排序的属性&#xff1a;只要知道根节点&#xff0c;就能得出哪些属于左子树&#xff0c;哪些属于右子树。 开始我一直报段错误&#xff0c;经过筛查&#xff0c;发现是创建树的函数忘记写返回语句 return root. AC代码 #include<cstdio> #i…

C#操作excel(多种方法比较)

我们在做excel资料的时候&#xff0c;通常有以下方法。 一.导入导出excel常用方法&#xff1a; 1.用查询表的方式查询并show在数据集控件上。 代码 publicstaticstringstrCon "Provider Microsoft.Jet.OLEDB.4.0 ; Data Source C:\\08.xls;Extended PropertiesExcel 8.0&…

383. Ransom Note/691. Stickers to Spell Word-- String, Map, back tracking-- 未完待续

383 easy 题&#xff0c;就是建立字母的hash 表 看第一个String 是否能被第二个String 所构建 canConstruct("aa", "aab") -> true 统计 第二个参数中每个字母的频率&#xff0c;可以用一个int[256] 建立hashmap, 然后统计 第一个String 中字母出现的…

Centos 修改时间地区及NTP同步北京时间

在我们使用CentOS系统的时候&#xff0c;也许时区经常会出现问题&#xff0c;有时候改完之后还是会出错&#xff0c;下面我们就来学习一种方法来改变这个状况。如果没有安装&#xff0c;而你使用的是 CentOS系统 那使用命令 yum install ntp 然后&#xff1a;ntpdate us.pool.n…

PAT(甲级)2019年冬季考试 7-2 Block Reversing

这题是做过的&#xff0c;B1025&#xff0c;我还总结过&#xff0c;果然早晚复相逢&#xff0c;只改了一点点&#xff0c;见1025 反转链表。 点睛之笔是结构体数组的哈希&#xff0c;地址既做下标&#xff0c;又有实际含义&#xff0c;妙啊。 node[add].add add; 当时应该是…

题目1444:More is better

时间限制&#xff1a;3 秒 内存限制&#xff1a;100 兆 特殊判题&#xff1a;否 提交&#xff1a;1362 解决&#xff1a;640 题目描述&#xff1a;Mr Wang wants some boys to help him with a project. Because the project is rather complex, the more boys come, the bette…

COMP 0137 Machine Vision

COMP 0137作业代做、Python实验作业代写、代做Python语言程序作业、代写Machine Vision作业COMP 0137 Machine Vision: Homework #1Due 19th November 2018 at 23:55pmWorth 10% of your overall gradeSubmit online, through MoodleFor this homework, we’ll revisit the pra…

windows mobile shell API

SHSetNavBarText 设置NavBar 文本信息 SHDoneButton 设置右上角button为关闭&#xff0c;还是最小化。 SHFullScreen 全屏&#xff0c;显示隐藏taskbar 软键盘button 开始图标 SHInitDialog 实例化对话框 SHInitDialogFlags 设置dialog参数…

PAT(甲级)2019年秋季考试 7-3 Postfix Expression

只在编译原理学过一点后序表达式&#xff0c;我把这题当作普通的二叉树遍历&#xff0c;事实上也的确如此。我注意到“-”这个符号不一样&#xff0c;别的都是后序遍历&#xff0c;但是遇到这个负号/减号就变成了先序。 于是我对负号做特判&#xff0c;遇到值为负号就改后序为…

(翻译)LearnVSXNow! #6 - 创建我们第一个工具集 - 序幕

在前面的文章中,我们在向导的帮助下创建了一些小的VSPackages。在第五讲中我们整理了VSX的一些思路和概念&#xff0c;深入VSPackages 了解了packages如何工作以及服务的机制。在这篇文章中我们继续向前。 本文我们开始创建一个工具集来帮助我们创建容易编写和理解的代码。我计…

Spring事务管理的底层逻辑—源码解析

本文代码为spring 5.1.2spring是如何控制事务的提交和回滚 加上Transactional注解之后&#xff0c;Spring可以启到事务控制的功能了&#xff0c;再正式执行方法前它会做一些操作&#xff0c;我们来看看 首先进入CglibAopProxy.class的intercept方法或者JdkDynamicAopProxy.clas…

[codevs 1913] 数字梯形问题

[codevs 1913] 数字梯形问题 题解&#xff1a; 本题就是加强版的 [codevs 1033] 蚯蚓的游戏问题。分别针对三个规则建图、运行最小费用最大流。规则1&#xff1a;从梯形的顶至底的m条路径互不相交。分析&#xff1a;因为要互不相交&#xff0c;所以每个点只能走一次&#xff0c…

PAT(甲级)2019年秋季考试 7-2 Merging Linked Lists

又是老朋友链表输出题&#xff0c;依然采用哈希静态存储&#xff0c;但是这题稍复杂的是&#xff0c;有两条链表&#xff0c;但是我们可以默认link1>link2&#xff0c;然后让link2上的节点接着link1后面编号&#xff0c;并且注意link2是倒序输出的。 输出时有几个关键点&am…

Flash/Flex学习笔记(4):如何打开网页及Get/Post数据

flash终究只是客户端技术&#xff0c;所以很多时候还是需要与服务端技术(比如asp,asp.net,jsp,php之类)进行数据交互的&#xff0c;下面的代码演示了如何在flash中打开网页&#xff0c;以及用GET/POST二种方式向服务端发送数据//按下按钮&#xff0c;打开网页 btnOpen.addEvent…