Linux权限模块

本文详细介绍了Linux系统中的权限管理,包括档案属性、用户与群组权限、特殊权限及文件隐藏属性等内容。深入探讨了权限与命令之间的关系,以及如何通过chgrp、chown和chmod等命令修改文件权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习自“鸟哥的私房菜”
  • 大部分是直接摘录的,提取了一些自己需要知道的东西,如果有需要请前往http://cn.linux.vbird.org/linux_basic/linux_basic.php
  • 仅作个人学习记录

权限

  • 档案属性
    ①可读
    ②可写
    ③可执行

  • 属性再分类
    ①档案拥有者
    ②档案所属群组
    ③其他非拥有者与群组者

  • 用户属性
    ①拥有者:有着所拥有的文档的使用权限
    ②群组组员:当文档属于某个群组,该群组的所有组员拥有该文档的使用权限,一个用户可以是多个群组的组员
    ③其他人
    ④root用户:拥有所有权限
    ⑤su - [用户名] 用于切换用户

用户信息【/etc/passwd】

[root@ip-1.1.1.1 ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
git:x:500:500::/home/git:/bin/bash
...
  1. 账号名称:用来与UID进行对应
  2. 口令:早期口令放在该字段,后面因为该文件是所有程序都能读取,口令容易被窃取,因此将口令数据改放到/etc/shadow中了,此处显示一个“x”
  3. UID:账号标识,有几个限制
    D范围ID使用者特性
    0(系统管理员)当需要让其他账号名称具备root权限时,将该账号UID改为0即可,可以多个账号同时设置为0,但是不建议
    1 ~ 499(系统账号)1.由于系统上启动的服务希望使用较小的运行权限来保证安全性,因此不希望用root身份运行,所以会有这些服务。
    2.通常这些系统账号不可登陆,因此才会有/sbin/nologin这个特殊shell的存在(此处不懂什么意思)
    1 ~ 99:由distributions 自行创建的系统账号
    100 ~ 499:若用户有系统账号需求时,可以使用的账号 UID
    500 ~ 65535 (可登陆账号)给一般使用者使用
  4. GID:与/ect/group有关
  5. 用户信息说明栏:用于介绍账号信息,无重要用途
  6. 家目录
  7. Shell:用户登陆系统后,会取得一个Shell来与系统的核心沟通以进行用户的操作任务。默认使用bash就是因为这个字段的指定。此处有一个shell可以用来代替成让账号无法取得shell环境的登陆动作,即/sbin/nologin

个人密码【/etc/shadow】

[root@ip-1.1.1.1 ~]$ cat /etc/shadow
root:$1$/30QpE5e$y9N/D0bh6rAACBEz.hqo00:14126:0:99999:7:::  <==底下说明用
bin:*:14126:0:99999:7:::
daemon:*:14126:0:99999:7:::
adm:*:14126:0:99999:7:::
...

每一行有7个数据,分别是

  1. 账号名称:必须与/etc/passwd相同
  2. 口令:此处为真正的口令,而且是经过编译的口令(加密)
  3. 口令最近的变更日期(天):从1970年1月1日至今的天数
  4. 口令不可被更动天数:修改口令最低时间间隔(与3相比)
  5. 口令需要重新变更天数:口令有效期,超过这个时间则判定为过期(与3相比)
  6. 口令需要重新变更警告天数:再过n天口令就要过期,系统会发出警告(与5相比)
  7. 口令过期后的账号宽限时间
  8. 账号失效日期:常使用在收费服务中
  9. 保留字段

Linux所有组名【/etc/group】

[root@www ~]# head -n 4 /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
  1. 组名
  2. 群组口令:不配置,另外口令已经移动到/etc/gshadow
  3. GID:
  4. 群组支持账号名称:两个之间用逗号『,』隔开

文件属性

查看属性[ls -al],ls 即 list
drwxr-xr-x 		4		root	 root		49 		Jan 16  2017 	udev
drwxr-xr-x		2 		root	 root		18 		Sep 14  2017 	vim
-rw-r--r-- 		1 		root	 root		4812 	Jul  5  2016	wgetrc
drwxr-xr-x		4 		root	 root		82 		Jan 17  2017 	xdg
⑴drwxr-xr-x	⑵2 	⑶root	 ⑷root		⑸80	⑹Jan 17  2017 	⑺xml

⑴『档案类型权限』,以drwxr-xr-x为例

  • 第一个字符代表档案类型
    • [d]目录
    • [-]文件
    • [l]连接档,类似于快捷方式
    • [b]装置文件里面可供储存的接口设备,类似于硬盘和软盘
    • [c]装置文件里面的串行端口设备,如键盘、鼠标(一次性读取装置)
  • 接下来三个为一组,如『rwx』参数组合,此三个参数位置不会改变,如果没有劝你权限,会变为[-]
    • [r]read可读
    • [w]write可写
    • [x]execute可执行,windows系统文件是否可执行根据扩展名,Linux系统则看权限
权限文件目录
r可读取该文件实际内容具有读取目录结构列表的权限(可以使用ls将目录内容列表显示)
w可以编辑、新增、修改该文件内容(但是无法删除该文件)具备修改该目录结构列表的权限,包括新建、删除、重命名、移动文件等
x该文件具备可以被系统执行的权限决定目录是否可以进入
  • 第一组为『文件拥有者权限』,第二组为『同群组的权限』,第三组为『其他非本群组的权限』
所以drwxr-xr-x可以拆分为d|rwx|r-x|r-x
d文档类型为目录
rwx『文件拥有者权限』
r-x『同群组的权限』
r-x『其他非本群组的权限』

⑵『连结数』

  • 后续补充

⑶『档案拥有者』
⑷『档案所属群组』
⑸『档案容量』

  • 默认单为bytes

⑹『档案最后修改时间』
⑺『档案名称』

  • 扩展名一般来表达文件类型,并无实际意义
扩展名说明
*.sh脚本或批处理文件(scripts),因为批处理文件是用shell写成的,所以扩展名就是 .sh
*Z,*.tar,*.tar.gz,*.zip,*.tgz压缩文件,根据压缩软件不同,命名不同
*.html,*.php网页文件
  • 使用预设的Ext2/Ext3文件系统时
    • 单一文件和目录最大文件名为255哥字符
    • 包含完成路径名称和目录之完整档名为4096个字符

注意:文件名第一个字符为『 . 』的文件为隐藏文件

修改文件属性与权限

  • chgrp(change group)
    1.修改群组,群组名必须在/etc/group中
    2.语法chgrp 『新群组名』[-R可选,代表递归变更] dirname/filename
  • chown(change owner)
    1.修改拥有者,用户名必须在/etc/passwd中
    2.可顺带修改群组
    3.语法chown 『新拥有者』:『新群组名』[-R可选,代表递归变更] dirname/filename
    4.语法chown .『新群组名』dirname/filename直接修改群组
  • 修改权限chmod
    • 使用数字修改权限
      • r:4 | w:2 | x:1
      • 每种身份各自的三个权限(r/w/x)需要累加
      • 假设权限修改为-rwxrwx—,则
        • owner = rwx =4+2+1=7
        • group = rwx =4+2+1=7
        • others = - - - =0+0+0=0
      • 所以最后的语法是“chmod 770 dirname/filename”
    • 使用符号类型修改权限
      • u:user | g:group | o:others | a:all
      • +:加入 | -:除去 | =:设定
      • 假设权限修改为-rwxr-xr-x,“chmod u=rwx,go=rx dirname/filename”
      • 假设为所有人增加写入权限,“chmod a+w dirname/filename”
      • 假设去掉所有人执行权限,“chmod a-x dirname/filename”

文件默认权限

  • 查询指令umask
    [user@ip-1-2-1-1 ~]$ umask
    0002
    [user@ip-1-2-1-1 ~]$ umask -S
    u=rwx,g=rwx,o=rx
    
    ①默认缺少的权限是0(特殊权限) 0(第一组—) 0(第二组—) 2(第三组-w-)
    ②创建文件时系统默认权限是-rw-rw-rw-,扣除--------w-,即-rw-rw-r–
    -rw-rw-rw-
    --------w-
    -rw-rw-r--
    
    ③创建目录时系统默认权限是drwxrwxrwx,扣除扣除--------w-,即drwxrwxr-x
    drw-rw-rw-
    d-------w-
    drw-rw-r--
    

文件隐藏属性

  • 修改文件隐藏属性chattr
    ①A:当存取次文件时,存取时间atime将不会被修改
    ②S:同步写入磁碟(默认非同步)
    ③a:只能添加数据,不允许删除,修改数据,仅root能配置改属性
    ④c:自动压缩此文件,读取时自动解压缩,存储时,会进行压缩后再存储
    ⑤d:dump程序被运行时,配置该属性可以使文件不会被dump备份
    ⑥i:让一个文件不能被删除,改名,配置连结也无法写入或新增数据,root专属
    ⑦s:文件被删除,将完全被移出硬盘,无法恢复
    ⑧u:与s相反,文件被删除,数据实际上还在硬盘中,可以救援
  • 显示文件隐藏属性lsattr

文件特殊权限

  • SUID

    • 仅对二进位程序有效
    • 运行者对于该程序需要拥有x权限
    • 运行者将在运行期间暂时拥有该程序拥有者(owner)的权限
  • SGID

    • 仅对二进位程序有效
    • 运行者对于该程序需要拥有x权限
    • 运行者将在运行期间暂时拥有该程序群组成员(group)的权限
  • SBIT(Sticky Bit)

    • 仅对目录有效
    • 运行者对于此目录需要具备w,x权限
    • 当使用者在该目录下创建文件或目录时,仅自己和root才有权力删除该文件
  • 修改特殊权限

    • 数字表达法——SUID:4 | SGID:2 | SBIT:1
    • 字符表达法——SUID:u+s| SGID:g+s | SBIT:o+t
    • chmod 7777 dirname/filename
    • 具备权限是s,t,如果运行者本身不具备x权限,则显示为S,T,代表空权限

权限与命令之间的关系

  • 让使用者能进入某目录,使其成为【可工作目录】
    • 可使用的命令:例如cd等变换工作目录的命令
    • 目录所需权限:使用者对这个目录至少需要具有x的权限
    • 额外需求:如果使用者想要在目录内使用ls查阅档名,则使用者对此还需要r权限
  • 使用者在某个目录内读取一个文件的基本权限为何
    • 可使用的命令:例如car,more,less
    • 目录所需权限:使用者对这个目录至少需要具备x权限
    • 文件所需权限:使用者对文件至少需要r权限
  • 让使用者可以修改一个文件的基本权限为何?
    • 可使用的命令:例如 nano 或未来要介绍的 vi 编辑器等
    • 目录所需权限:使用者在该文件所在的目录至少要有 x 权限
    • 文件所需权限:使用者对该文件至少要有 r, w 权限
  • 让一个使用者可以创建一个文件的基本权限为何?
    • 目录所需权限:使用者在该目录要具有 w,x 的权限
  • 让使用者进入某目录并运行该目录下的某个命令之基本权限为何?
    • 目录所需权限:使用者在该目录至少要有 x 的权限
    • 文件所需权限:使用者在该文件至少需要有 x 的权限

有效群组与初始群组

  • 初始群组:/etc/passwd中第四栏的GID代表初始群组的GID,用户刚登陆,就拥有该群组的相关权限
  • 有效群组:创建文件时,文件所属群组是根据有效群组来的
  • 加入群组:在/etc/group进行添加即可
  • 如果账号user同时支持群组A和群组B,那么它在读写文件时,针对群组部分,将同时拥有两个群组的功能
  • 查询当前用户支持的群组:groups,显示的第一个群组为有效群组
  • 切换有效群组:newgrp 【群组名】

切换用户( su与sudo)

su
指令说明密码
su [-lm] [-c 命令] [username]1.切换用户
2.root切换为其他身份不需要密码
手动输入
su以non-login shell方式切换为root身份,存在以下影响
1.家目录未切换,仍然是原先用户的家目录
2.环境变量PATH未切换
3.收到的mailbox未切换
手动输入
su -使用login shell方式切换为root身份手动输入
su - -c “[想要执行的命令]”以root身份执行该命令后立马切换为原来的身份手动输入
sudo(sudo默认只有root身份可以使用)
  • sudo运行流程
Created with Raphaël 2.2.0 用户运行sudo 系统于/etc/sudoers文件中寻找该使用者 是否具备sudo权限? 要求用户输入自己的口令 判断口令是否正确? 执行命令 结束 yes no yes no
  • 可以通过修改/etc/sudoers文件配置sudo权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值