3.操作系统用户权限

  • Post author:
  • Post category:其他




用户权限介绍说明

系统权限: r – 4 w – 2 x – 1 – 0

系统权限分配给: 属主 属组 其它用户


普通文件

: 各种权限作用 root 属主用户 其它用户

             没有任何权限时           只有读权限时     只有写权限时       只有执行权限时
             
   root       可读 写                可读 写        可读 写            可读 写 执行
    
   属主用户    可写(覆盖原有内容)       可读 写        可写(覆盖原有内容)   可写(覆盖原有内容)
   
   其它用户    没有任何权限            可读           可写(覆盖原有内容)   没有任何权限

总结:

1、 root用户是系统中无敌用户,操作不受权限限制

2、 对于文件来说, 读权限是最重要

有了读权限— 更好编辑文件

有了读权限— 可以让脚本文件执行


目录文件

: 各种权限作用 root 属主用户 其它用户

读: 可以查看目录下面信息

写: 可以在目录中删除或添加数据信息

执行: 可以切换进入到目录中

             没有权限时      只有读权限时         只有写权限时      只有执行权限时
   root      可读 写 执行    可读 写 执行         可读 写 执行      可读 写 执行
    
   属主用户   没有任何权限     只能查看部分信息      没有任何权限        可执行
   
   其它用户   没有任何权限     没有任何权限         没有任何权限        可执行	   

总结:

1、对于目录来说, 执行权限更重要

普通文件默认权限:

644

(默认权限 读权限)

目录文件默认权限:

755

(拥有执行权限)



文件读取原理

例如要读取该路径下的oldboy.txt文件,大概流程如下:

/oldboy/oldboy01/oldboy03/oldboy.txt

1.先从根目录开始,先查看根目录inode中的权限信息,有权限就继续进行,没权限就反馈权限不足,流程中断

2.当权限满足时,根据inode中的指针信息,指向对应的block

3.找到对应的block后,可以查看block中的文件信息

4.在block中找到对应的目录后,继续查看该目录inode中的权限信息,权限满足后根据指针找到对应block,在block中找对应的目录。

5.每一级目录都要遵循这个流程,直到找到目标文件

6.找到目标文件后,也要根据inode中的权限信息,来判断有没有相应权限,有权限后也要根据指针信息,找到对应的block,才能读取到文件的内容

在这里插入图片描述
在这里插入图片描述



用户权限设置修改
   方法一: 修改系统数据权限:
   umask  默认数值022
   
   文件644  : 666 - 022 = 644    666  -  066 = 600  偶数运算
                                 666  -  033 = 644  奇数运算 (和奇数做运算后,每一位后面加一)
                                 
   目录755  : 777 - 022 = 755    777  -  066 = 711  
                                 777  -  033 = 744   
                                 
   临时修改:umask  xxx   
   
   永久修改: 修改/etc/profile 
   if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; 
   then
       umask 002
   else
       umask 022
   fi
   $UID -gt(大于) 199   --- 当前用户UID数值是否大于199
   /usr/bin/id -gn   --- 显示系统登录用户所属用户组名称
   /usr/bin/id -un   --- 显示系统登录用户名称信息

   方法二: 修改系统数据权限: 
   chmod: 修改文件或数据权限位信息  9位权限
   对指定用户修改权限:
   属主用户: chmod u(user)+(添加) / -(去掉) / =(设置)
   属组用户: chmod g(group)+(添加) / -(去掉) / =(设置)
   其他用户: chmod o(other)+(添加) / -(去掉) / =(设置)
   
   对所有用户修改权限:
   利用数值修改: chmod 764  文件信息 
   统一设置权限: chmod a(all)+/-/=

   PS: 对目录进行操作时, 可以进行权限递归修改 (慎用)
       chmod -R 777 /oldboy	   
   
   chown: 修改文件属主和属组信息
   chown 属主.属组 文件信息 
   chown -R 属主.属组 目录信息
   
   方法三: root用户将自身权利下放 (sudo)
   chmod 
   第一个历程: root用户分配特殊权限给普通用户
   visudo(使用时会验证语法格式)  == vi /etc/sudoers (使用时不会语法验证)
   root  ALL=(ALL)  ALL cat cp 
   ①: 将特殊权限赋予哪个普通用户
   ②: 类似权限集中管理 
   ③: 指定拥有特殊权利   
   oldboy  ALL=(ALL)  /usr/bin/rm, /usr/bin/vi 多个权限用逗号分隔
   oldgirl ALL=(ALL)  /usr/bin/*,  ! /usr/bin/vi /etc/sudoers    !代表取反操作,排除掉该权限
   oldboy  ALL=(ALL)  NOPASSWD: /usr/bin/rm, /usr/bin/vi       ---  NOPASSWD 每次sudo操作不会提示输入密码信息
   
   第二个历程: 普通检查确认特权分配
   sudo -l 
   
   第三个历程: 验证自己权利
   sudo 命令 xxx


用户特殊权限说明
   setuid: 让一些命令可以被普通用户使用, 像命令属主用户一样使用
   chmod u+s /bin/cat
   chmod 4755 /bin/cat    
   ll /bin/cat 
   rwsxxxxxx

   setgid: 让一些命令可以被普通用户使用, 像命令属组用户一样使用
   chmod g+s xxx
   chmod 2755 xxx
   
   粘滞位: 使一个目录中数据, 只能让属主用户进行删除或编辑, 其他用户只能进行共享查看
   /tmp  1777 
   chmod o+t xx 
   chmod 1777 xxx


用户相关命令参数
   useradd   --- 创建用户命令
   -u  -- 指定用户uid  sa 1000  dev 2000  dba 3000
   -g  -- 指定用户所属主要组信息  
   -G  -- 指定用户所属附属组信息
   -M  -- 不创建家目录
   -s  -- 指定用户登录系统方式  /bin/bash(可以登录系统) /sbin/nologin(禁止登录系统)
   创建系统虚拟用户:
   useradd mysql -M -s /sbin/nologin 
   虚拟用户: 管理数据目录|管理服务进程(例如:postfix)
   -c  -- 给用户添加注释说明信息  
  
   groupadd   --- 创建用户组信息
   -g  -- 指定用户组gid信息   
 
   usermod    --- 用户信息修改
   -u  -- 指定用户uid  sa 1000  dev 2000  dba 3000
   -g  -- 指定用户所属主要组信息  
   -G  -- 指定用户所属附属组信息
   -s  -- 指定用户登录系统方式  /bin/bash(可以登录系统) /sbin/nologin(禁止登录系统)
   
   groupmod
   -g  -- 指定用户组gid信息  
   
   userdel    --- 用户信息删除
   -r  -- 彻底删除用户相关信息
   说明:
   1) 删除用户时, 也会删除相关组信息
   2) 删除用户时, 需要考虑家目录和邮件是否一并删除
   
   groupdel   --- 用户组信息删除
   
   passwd     --- 设置系统用户密码信息
   echo 123456|passwd --stdin xxx    ???  秘钥


用户相关文件目录
   文件信息: 
   · /etc/passwd   --- 记录系统中所有用户信息
     第一列: 用户名称
	 第二列: 密码信息
	 第三列: 用户uid
	 第四列: 用户gid
	 第五列: 用户描述信息
	 第六列: 用户家目录信息
   · /etc/shadow   --- 记录所有用户密码信息
   · /etc/group    --- 记录所有用户组信息
   · /etc/gshadow  --- 记录所有用户组密码信息
   
   目录信息: 
   /etc/skel  --- 所有用户家目录模版
   PS: 用户命令提示符出现问题, 恢复命令提示符
   
   方法一: 利用模版恢复到家目录	  
   cp /etc/skel/* ~/
   cp /etc/skel/.b* ~/
   cp -r /etc/skel/* ~/
   
   方法二: 恢复命令提示符 
   1.echo $PS1	输出环境变量
   
   2.将PS1信息配置在环境变量文件中
   vim /etc/profile

在这里插入图片描述



版权声明:本文为Wangjiachenga原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。