2019独角兽企业重金招聘Python工程师标准>>>

Linux的rwx权限

Linux的文件权限表示其实还是比较简单的。 对于任意一个文件,都可以通过ls -l filename来查看ta的权限序列。 例如:

-rwxr-xr-x 1 wgjak47 wgjak47 221287 11月 16 2010 aliedit.sh

权限序列的第一位是文件类型:

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件
  • 若是[ l ]则表示为连结档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);(例如/dev/sda)
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。常见于/dev

上例中的文件为-,表示普通文件。

是然后三组rwx,r表示可读,w可写,x可执行,-表示没有权限。

  • 第一组rwx表示文件拥有者的权限
  • 第二组rwx表示文件拥有者所在组中其他人的权限
  • 第三组rwx表示其他人的权限。

举个例子,如果一个文件属性是754,也就是(rwxr-xr-)。

  • 如果你是这个文件的拥有者,那么你能对这个文件读写执行
  • 如果你不是这个文件的拥有者,但是和这个文件的拥有者是一个组别的,那么你可以读取和执行这个文件
  • 如果你并非文件拥有者的组别,那你只能读取这个文件

可以使用chmod改变文件的权限。基本用法如下:

<!-- lang: shell -->
chmod XXXX filename

其中X是8进制数,第一位一般省略,原因下面会说,转化为2进制就正好对应rwx,例如7(111)表示rwx,而5(101)表示r-x。对于目录,可以使用-R选项递归修改其子目录和子文件的属性。另外XXXX也可以使用操作符+符号来改变格式:

  • 操作符'+'使得用户选择的权限被追加到每个指定文件,(操作给 指定文件添加所选权限)
  • 操作符'-'使得这些权限被撤消;'='使得 指定文件只具有这些权限。

字符串'rwxXstugo':给用户选择新的属性

  • (r)读权限
  • (w)写权限

  • (x)执行权(或对目录的访问权)

  • (X)只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性

  • (s)同时设定用户或组ID

  • (t)粘滞位(保存程序的文本到交换设备上)

  • (u)目标文件属主

  • (g)目标文件属主所在的组

  • (o)其他用户

因此,'chmod g-s file' 撤消sgid位,'chmod ug+s file'同时设置了suid和sgid位,'chmod o+s file' 则没有进行任何设置


##Linux的特殊权限

从chmod的man Page当中,我们可以发现,除了rwx三个基本权限,还有s,t两个权限。 展开来说是:setuid、setgid、stick bit (粘贴位)

  1. setuid、setgid 简单的说就是如其名字一样,set uid,set gid。当普通用户使用这重属性的文件时会以root/root组的权限执行。

举个例子:/etc/passwd文件,用于储存用户密码的文件。

-rw-r--r-- 1 root root 2090 12月 23 20:29 /etc/passwd

我们知道这是储存用户密码的文件,但权限是root才能读写,其它用户只读。而读写这个文件的passwd属性如下:

-rwsr-xr-x 1 root root 47032 2月 17 2014 /usr/bin/passwd

第三个字母s表示的就是setuid,表示提权执行,也就是普通用户运行passwd的时候会以root身份去运行passwd: 在tty1以普通用户启动passwd,tty2执行ps -aux | grep passwd将得到如下结果:

root 20174 0.0 0.0 64680 1584 pts/23 S+ 23:37 0:00 passwd

执行者为root。 setpid这种权限一般就是为了应对像密码修改这种敏感,要求权限高但是许多普通用户却需要执行的操作而诞生的。

setgid同理,只不过变成了用户组。

  1. stick bit 在Linux中,文件夹的权限作用如下:
  • r(read):可以读取文件夹内容列表,但如果没有x权限,就只能看到文件名而无法查看其他内容(大小、权限等)
  • w(write):由于文件夹记录的是其中内容的列表,因此具有w权限即可修改这个列表,前提是拥有x权限可以进入这个目录内。w具体拥有以下几项权限: 建立新的文件或文件夹、 删除已存在的文件或文件夹(无视该文件或文件夹的权限)、 对已存在的文件或文件夹改名、 更改目录内文件或文件夹的位置
  • x(execute):可以进入该文件夹,没有x权限便无法执行该目录下的任何命令

stick bit(t)属性暂时只用于目录,主要是/tmp目录,tmp属于root,属性为drwxrwxrwt, 但是任何人都可以往里写文件。但是每个用户对于其他人的文件无法删除(root除外)。 简单的说就是当用户在拥有该属性的目录下建立文件或目录时,仅有自己与 root才有权力删除。


##setuid与sudo 在Linux中,由于root用户的权利过大,经常容易误操作造成无法挽回的损失。为了限制root权限,有人提出让普通用户仅在必要的时候获取root权限执行一些操作,平时以普通用户权限工作。于是sudo工具诞生。 sudo的简述:

在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。 sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是**/etc/sudoers**),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。 由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。

sudo的原理就是利用了setuid属性:

-rwsr-xr-x 1 root root 155008 2月 11 2014 /usr/bin/sudo

sudo的工作流程大致如下:

  1. sudo在执行时,系统会读取/var/run/sudo/%HOME%/下是否有用户的时间戳文件,若存在的并文件过期的话,系统则会提示用户输入自身的密码

  2. 验证成功后,系统会继续查找/etc/sudoers的相关配置,来判断用户的sudo具体权限

  3. 若权限存在,会自动会由当前用户切换到其他或root用户下,执行权限操作

  4. 执行完成后,再返回当前用户。


##sudo的配置和使用: sudo的配置文件编辑方式有些类似与crontab,sudoers并不能直接编辑,而是通过visudo来编辑的。visudo类似于crontab -e,也是先复制一个副本(/etc/sudoer.tmp),保存副本之后在更新/etc/sudoer。

sudoers的语法:

  • 权限配置: 默认的配置如下:

root ALL=(ALL) ALL

第一项是用户名,表示哪一个用户可以使用sudo。
第二项是登陆者的主机名,表示可以接受的远程登陆的主机名。ALL表示root可以从从任何一台主机以root身份登陆到本机并使用sudo。
第三项表示可以通过sudo切换的身份,ALL表示可以通过sudo切换任何身份执行命令。 第四项表示可以执行的命令,ALL表示所有命令,如果要特别声明命令,必须使用绝对路径,而且还支持参数和通配符。不同的命令使用**','**分割。 鸟哥书上的例子:

myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root # ! 表示不能执行(黑名单)

如果要添加一个可以使用sudo的用户,那么就另起一行,即可。 例如wgjak47 ALL=(ALL) ALL

  • 高级配置 一、群组功能,为了方便管理,sudo支持根据用户群组授权。 例如:

%sudo ALL=(ALL) ALL

这样配置的化,只要在sudo用户组内的用户都可以使用sudo。

二、免密码操作 sudo默认是需要密码的,而且只支持交互式的输入,当然可以通过expect或者有名管道模拟这个过程。但是将密码明文写在脚本中是很不安全的(索尼就是这么死的),而且我们一般只希望对于某些操作免密码,而不是所有操作。
sudoer支持NOPASSWD关键字:例如你希望运行service操作时面密码,可以这样配置:

username ALL=(ALL) NOPASSWD:/sbin/service

这样你在脚步中以sudo运行service就不需要密码了。

三、主机,用户,命令管理(alias) 为了方便管理,可以将用户,主机名,和命令打包成别名,方便管理: 鸟哥的例子改一下

User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2 Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root Host_Alias THO = *.threebody.com ADMPW THO=(root) ADMPWCOM

注意Linux是严格区分大小写的,一定要注意开头的字母大写。

转载于:https://my.oschina.net/u/1242185/blog/360184

Linux权限与sudo相关推荐

  1. Linux权限命令sudo和chmod

    一.linux访问权限 linux中不同用户有不同权限,用户有三种类型:文件所有者.群组用户.其他用户.(还有最高权限用户root) chmod 777 /etc/demo # 将demo目录的权限改 ...

  2. linux 权限分割,sudo使用之实现权限分配

    简介: sudo可以临时给予某普通用户某些root的权限,实现安全和分配权限的安全 打开配置文件: #visudo OR #vi  /etc/sudoers 语法: UserName  Ip=(Who ...

  3. Linux权限管理— sudo授权

    sudo授权 1.什么是sudo授权 /sbin/和/usr/sbin/ 以上两个目录下命令只有超级用户才能使用. sudo授权:把指定的命令授权给普通用户,让普通用户可以执行指定的命令.(只给用户授 ...

  4. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...

  5. centos sudo不能运行_如何在Linux中配置sudo访问权限

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为. 如果其他用户想去实施一些行为,不能为所有人都提供 ...

  6. linux sudo权限_Linux Sudo 被曝漏洞,可导致用户以 root 权限运行命令

    聚焦源代码安全,网罗国内外最新资讯!编译:奇安信代码卫士团队 Linux 用户要注意了!几乎所有基于 UNIX 和 Linux 的操作系统上安装的核心命令,也是最重要.最强大也最常用的工具 Sudo中 ...

  7. Linux权限相关:su,sudo,sudoers

    关于Linux权限 在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开.普通用户执行到系统程序 ...

  8. linux 分配权限(sudo mkdir **) 解决创建文件夹无权限问题

    linux 分配权限(sudo mkdir ) 解决创建文件夹无权限 1.## mkdir java 2.## sudo mkdir java 使用sudo来获得root权限创建文件夹 提示当前管理员 ...

  9. Linux学习笔记3—Linux权限的初步认识(rwx、sudo、粘滞位、umask)

    文章目录 shell命令以及运行原理 如何开启当前用户的sudo命令 Linux权限管理 1 Linux用户类别 2 Linux的文件权限的理解 3 Linux文件权限的修改 I chmod-修改拥有 ...

  10. Linux 用户添加sudo权限

    Linux 用户添加sudo权限 一:切换到root用户 二:修改sudoers文件的权限.默认只有readonly权限 三:利用vim命令修改sudoers文件 一:切换到root用户 su roo ...

最新文章

  1. Django_前端显示Matplotlib画的图(亲测)
  2. Linux命令(11)—— 给文件增加和减少权限chomod命令
  3. C++ 基础 : 函数重载、引用、内联函数、auto、范围for循环
  4. 菜品三级分类_分类器的惊人替代品
  5. zlib1.2.5的编译
  6. 爬虫-request库-get请求
  7. AJAX淋漓尽致的发挥(Google个性化主页 VS. Windows Live.COM)站在互联网浪尖上窃喜...
  8. 计算机组成原理基本概念,《计算机组成原理》基本概念.doc
  9. 动环监控系统的主要功能,动环监控系统的监控对象有哪些
  10. MathType编辑双向斜箭头的教程
  11. rk3588调试之imx415摄像头
  12. Mac升级AS至2021.1.1 patch 2踩坑
  13. 普通人如何使用ChatGPT接单挣钱-第一弹
  14. Skin Cancer MNIST(皮肤癌患者相关数据集)
  15. ArrayList的add方法详解——让我们好好看看一个元素是如何插入到ArrayList集合当中(源码级别)
  16. Stata:psestimate-倾向得分匹配(PSM)中匹配变量的筛选
  17. 喜马拉雅fm java开发_【android】喜马拉雅FM sdk使用
  18. 360安全卫士系统漏洞修复,漏洞补丁下载成功但安装失败的解决办法
  19. 计算机网络思维导图-第一章-计算机网络体系结构
  20. 开源企业内部沟通协作平台,ENTBOOST 发布 1.21 版本

热门文章

  1. 贝叶斯分析思路 通俗讲法
  2. proteus信号峰值检测仪仿真
  3. 纯注解整合SSM框架
  4. 使用反相器的rc振荡电路
  5. 深刻理解Binder机制
  6. 【草图大师Sketchup插件开发】画盒子工具
  7. 复合型网络拓扑结构图_计算机网络拓扑结构图的种类及图示
  8. excel常用函数汇总 excel最常用的八个函数 excel自动求减
  9. 【龙印】在龙芯1c上用TM7705+NTC热敏电阻实现温度测量
  10. linux每周2 4 6执行定时任务,linux计划任务crontab例子