当前位置: 首页 > news >正文

深南花园裙楼 网站建设上海网站建设shzanen

深南花园裙楼 网站建设,上海网站建设shzanen,上海市建设交通工会网站,中国建设银行贵州省分行网站文章目录 Linux 用户身份切换su使用案例 sudo使用案例 visudo与/etc/sudoers单一用户可使用root所有命令#xff0c;与sudoers文件语法利用wheel用户组以免密码的功能处理visudo有限制的命令操作通过别名创建visudosudo的时间间隔问题sudo搭配su的使用方式 Linux 用户身份切换… 文章目录 Linux 用户身份切换su使用案例 sudo使用案例 visudo与/etc/sudoers单一用户可使用root所有命令与sudoers文件语法利用wheel用户组以免密码的功能处理visudo有限制的命令操作通过别名创建visudosudo的时间间隔问题sudo搭配su的使用方式 Linux 用户身份切换 什么在Linux系统当中还要作身份切换这是为什么可能有下面几个原因 安全性身份切换可以限制用户的权限防止恶意操作和数据泄漏。多用户环境在多用户环境中每个用户拥有自己的账户和权限需要通过身份切换来切换用户。程序运行某些程序需要以不同的权限运行例如管理员权限或普通用户权限需要通过身份切换来切换权限。系统管理系统管理员需要在不同的身份之间切换以便执行不同的系统管理任务。学习和实践学习Linux系统管理需要了解身份切换的操作和原理以便更好地管理和维护系统。 那么如何让一般用户变身份成为root呢主要有两种方式 通过【su -】直接将身份变成root即可但是这个命令却要root的密码也就是说如果你要通过su变成root的话你的一般用户就必须要知道root的密码才行。 通过【sudo命令】执行root的命令串由于sudo需要事先设置妥当且sudo需要输入用户自己的密码因此多人共管一台主机时sudo要比su要来的好至少root密码不会流出去 su 在Linux系统中su命令用于切换用户身份其语法如下 su [选项] [用户名]选项解释-表示切换到目标用户的环境变量即切换到目标用户的家目录-l与-相同表示切换到目标用户的环境变量-c执行完命令后退出目标用户身份返回原用户身份-m-m与-p是一样的表示【使用目前的环境设置而不读取新使用者的配置文件】 使用案例 假设你原本是zhw的身份想要使用su 命令把自己变成root [zhwroot ~]$ su # 现在是zhw的身份使用su切换root 密码 # 输入密码 [rootroot zhw]# id # 查看提示字符是root uid0(root) gid0(root) 组0(root) 环境unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 # 确实是root身份 [rootroot zhw]# env |grep zhw USERzhw 竟然还是zhw这个身份 PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/zhw/.local/bin:/home/zhw/bin 这个影响最大 MAIL/var/spool/mail/zhw PWD/home/zhw 并非root的家目录 LOGNAMEzhw # 虽然你的UID已经是具有root身份但是看到上面的输出信息了吗 # 还是有一堆变量为原本zhw的身份所以很多数据还是无法直接利用 [rootroot zhw]# exit 这样可以退出su的环境 也可以Ctrl D单纯的使用【su】切换成root身份读取的变量设置方式为非登录shell的方式这种方式很多原本的变量不会被修改由于没有修改成root的环境因此很多root常用的命令只能使用绝对路径来执行。还有MAIL这个变量你输入mail时收到的邮件竟然是zhw用户的而不是root本身的邮件所以切换身份时务必使用如下案例 使用login shell的方式切换为root的身份 [zhwroot ~]$ su - 密码 上一次登录二 4月 11 14:52:22 CST 2023pts/2 上 [rootroot ~]# env |grep root HOSTNAMEroot USERroot MAIL/var/spool/mail/root PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin PWD/root HOME/root LOGNAMEroot # 了解差异了吧下次切换成为root时记得最好用 su - [rootroot ~]# exit exit退出su的环境上述的做法是让用户的身份变成root并开始使用系统如果想要退出root的身份则得要利用exit才行那我如果至少想要执行【一个只有root才能执行的命令且执行完毕就恢复原本的身份】呢 zhw想要执行【head -n 3 /etc/shadow】一次且知道root密码 [zhwroot ~]$ head -n 3 /etc/shadow head: 无法打开/etc/shadow 读取数据: 权限不够 [zhwroot ~]$ su - -c head -n 3 /etc/shadow 密码 root:$6$0x0W5U0lAIGfNePS$fQegjEeiYdvyV7xK7zyhR9jsXzAwkB6XoA6RxpGo0X/uz8uPhblK9frf36sRtpdyNgJY4jZPQplMR1b/Hqgb9/::0:99999:7::: bin:*:18353:0:99999:7::: daemon:*:18353:0:99999:7::: [zhwroot ~]$ # 注意看 这里执行完命令还是zhw的身份那么如果我是root或是其他人我想要切换成为某些特殊账户可以使用如下的方法来切换 原本是zhw的用户想要切换成pro1时 [zhwroot ~]$ su -l pro1 密码 -bash-4.2$ env |grep pro1 USERpro1 MAIL/var/spool/mail/pro1 PWD/home/pro1 HOME/home/pro1 LOGNAMEpro1 -bash-4.2$ su - 密码 上一次登录二 4月 11 15:19:01 CST 2023pts/2 上 [rootroot ~]# su -l sshd This account is currently not available. 竟然说此账户无法切换 [rootroot ~]# finger sshd Login: sshd Name: Privilege-separated SSH Directory: /var/empty/sshd Shell: /sbin/nologin # 原来shell是/sbin/nologin Last login 二 4月 11 15:24 (CST) on pts/2 No mail. No Plan.[rootroot ~]# exit 退出第二次的 su -bash-4.2$ exit 退出第一次的 su [zhwroot ~]$ 这个才是最初的环境su命令的优点 su命令可以允许用户临时切换为另一个用户身份方便执行需要特定权限的命令。 su命令可以避免用户频繁登录和退出提高了系统使用效率。 su命令可以控制用户对系统的访问权限增强了系统安全性。 su命令的缺点 su命令需要用户输入目标用户的密码如果密码被泄露可能导致系统安全问题。 su命令切换为root用户身份后用户可以执行任何命令可能会造成系统的损坏或数据的丢失。 su命令无法控制用户对系统的访问权限范围如果目标用户拥有过多的权限可能会导致系统的安全性降低。 sudo 相对于su需要了解新切换的用户密码(常常是root的密码)sudo的执行则仅需要自己的密码即可甚至可以设置不需要密码即可执行sudo。由于sudo可以让你以其他用户的身份执行命令(通常是使用root的身份来执行命令)因此并非所有人都能够执行sudo而是仅有规范到/etc/sudoers内的用户才能够执行sudo这个命令。下面介绍一下sudo sudo [选项] [命令] 选项 -u指定要切换到的用户身份 -b以后台模式运行命令使用案例 想要以sshd的身份在/tmp 下创建一个名为mysshd的文件 [rootroot zhw]# sudo -u sshd touch /tmp/mysshd [rootroot zhw]# ll /tmp/mysshd -rw-r--r--. 1 sshd sshd 0 4月 11 15:47 /tmp/mysshd # 留意以下这个文件的权限是由sshd所建立的但是使用sudo默认仅有root能使用为什么因为sudo的执行是这样的流程 sudo命令的执行流程如下 用户输入sudo命令并指定要执行的命令。系统检查用户是否在sudoers文件中有相应的权限如果没有则提示用户无权执行该命令。如果用户有权限执行该命令则要求用户输入自己的密码而不是目标用户的密码。系统检查密码是否正确如果正确则将用户切换为目标用户身份并执行命令。执行完命令后返回原用户身份。 所以说,sudo的执行的重点是【能否使用sudo必须要看/etc/sudoers的设置值】由于能否使用与/etc/sudoers有关,所以我们当然要去编辑sudoers文件不过该文件的内容有一定的规范所以直接使用vi去编辑是不好的此时我们要通过visudo去修改这个文件 visudo与/etc/sudoers 从上面说明我们可以知道除了root之外的其外账号若想要使用sudo执行属于root的权限命令则root需要先使用visudo去修改/etc/sudoers让账号能够使用全部或部分的root命令功能为什么要使用visudo呢 使用visudo命令修改sudoers文件可以避免语法错误、竞争条件和自动备份提高sudoers文件修改的安全性和正确性方便了系统管理员对sudoers文件的管理 一般来说visudo的设置有几种简单的方法下面我们以几个简单的例子来说明 单一用户可使用root所有命令与sudoers文件语法 假如我们要让zhw这个账号可以使用root的任何命令基本有两种语法第一张是直接修改/etc/sudoers文件 [rootroot zhw]# visudo ...(前面省略)... root ALL(ALL) ALL # 搜索到这一行 zhw ALL(ALL) ALL # 这一行是增加的 ...(后面省略)...我们来解释一下上面的参数(root ALL(ALL) ALL) 第一个组件表示授权的用户或用户组这里是root用户。第二个组件表示用户或用户组执行命令的主机这里是ALL表示可以在任何主机上执行命令。第三个组件表示用户或用户组可以切换到的目标用户这里是ALL表示可以切换到任何用户的身份。第四个组件表示用户或用户组可以执行的命令这里是ALL表示可以执行任何命令。 修改后保存退出登录到zhw用户进行测试看看 [zhwroot ~]$ tail -n 5 /etc/shadow tail: 无法打开/etc/shadow 读取数据: 权限不够 # 因为不是root所以当然不能查询/etc/shadow [zhwroot ~]$ sudo tail -n 5 /etc/shadow # 通过sudo执行 [sudo] zhw 的密码 # 输入自己的密码 myuser2:$6$WHRvq32S$d40vM5Qgw8q7zelrSyCPaeugrRQE94KLICed2RHjWaru3aN6gHoycRN6PTpRIL/rx271Oiqds/M5p2me2IUd11:19458:0:99999:7::: myuser3:$6$1EIWjK3Y$V07xoA9T2zWtWjbq.C8zbfH1jD6uF5PzqGHS2JANbJyLcLVmNr6mNTJlD6Du7O2369k756FUbouyrQJUsRwqj0:19458:0:99999:7::: pro1:$6$JyB/VQok$uLn7kywLiGZzYE1CpwZprx5U1fc8EX6JJv2f1e50lJNByJ7Out/JidM8C4GxpAJgESpufvDQxU3iUfYEJGoMG.:19458:0:99999:7::: pro2:$6$tStx6sam$nn6PawgEIgeqK886H1iWtuhC98h2s0BkawWMFfX98W.RyWcwaeZmL1kesXC3gRFCLf8/5TPqCr8.KzwXOogA50:19458:0:99999:7::: pro3:$6$IAko7jZE$Mw6oy.c80tcqc/.WpXTLK3Zm7QkHCCKiX.DxyAhUARQY1N5tRAPQEPBXe0oFssxeDFxFGglSdcEud/ij8VEt/.:19458:0:99999:7::: # 看执行成功了可以查询shadow了zhw输入自己的密码能够执行root的命令了另外一个一个设置太麻烦了能不能使用用户组的方式来设置参考下面方案 利用wheel用户组以免密码的功能处理visudo 之前的案例博客地址 , 任务一和任务二 我们在之前的账户管理案例中建立了pro1pro2pro3能否通过用户组的功能让这三个人可以管理系可以很简单如下案例 [rootroot zhw]# visudo ...(前面省略)... %wheel ALL(ALL) ALL # 把这行的#拿掉 # 在最左边加上%代表后面接的是一个【用户组】改完保存退出 ...(后面省略)... [rootroot zhw]# usermod -aG wheel pro1 # 将pro1加入wheel的支持上面的设置值会造成【任何加入wheel这个用户组的用户就能够使用sudo切换任何身份来操作任何命令】也可以将wheel改成你想要的组名接下里分别切换身份成功pro1pro2试试sudo的运行 [pro1localhost ~]$ sudo tail -n 5 /etc/shadow # 这里的身份是pro1 [sudo] pro1 的密码 zhw:!!:19459:0:99999:7::: csq:!!:19459:0:99999:7::: pro1:$6$8XzICuAG$PCIjmv4s13f4x4IRcb4thG96JX6Tnl.Ots08wlnmc6Ndkgrq4u9e2EYfhWn5YLksFgEX.ySPSGlfj839f7eyh/:19459:0:99999:7::: pro2:$6$3.4UjuHd$v1lUPlXjpZ6vn9ewVN1NicSGv5tx9BhyCmrWNWd/xBAsxlXdJJJbovrB/ohR5AUeB5VRRSHcRSGv5o3AcuhS01:19459:0:99999:7::: pro3:$6$ARlJULFa$BVrVHjmRQp7IgS5c4ViqpgN8DDN9O5b2qbnxhzPQvxessejHO0iVqmDcEikNMelu.Mni76NIfh.V3JlUn6nTQ0:19459:0:99999:7:::[pro2localhost ~]$ sudo tail -n 5 /etc/shadow # 这里的身份是pro2 [sudo] pro2 的密码 pro2 不在 sudoers 文件中。此事将被报告。 [pro2localhost ~]$ 这样就立即用户组了吧如果你想要pro3也支持这个sudo的话不需要重新使用visudo只要利用usemod去修改pro3的用户组支持让pro3用户加入wheel用户组那它就能够进行sudo了。 Centos7开始在sudoers文件中默认已经开发%wheel那一行以前的Centos旧版本都没有启用 不过既然我们都信任这些sudo的用户了能否实现【不需要密码即可使用sudo】呢 可通过一下方式实现 [rootlocalhost ~]# visudo ..... .. %wheel ALL(ALL) NOPASSWD: ALL # 找到这行把前面的#去掉 ... ....重点是NOPASSWD 该关键字是免除密码输入的意思 有限制的命令操作 以上两点都可以让用户能够利用root的身份进行任何事情这样总是不太好如果我想让用户仅能够进行部分任系统任务。比如说系统上面的myuser1仅能够帮root修改其他用用户的密码时即【当用户仅能使用passwd这个命令帮忙root修改其他用户密码】时该如何编写可以这样做 [rootlocalhost ~]# visudo .... .. myuser1 ALL(ALL) /usr/bin/passwd # 添加这一行内容后面的路径务必用绝对路径 ... .. 上述内容设置值指的是 【myuser1可以切换为root使用passwd命令】要注意必须要写绝对路径否则visudo会出现语法错误 我们测试一下passwd是否可用 [myuser1localhost ~]$ sudo passwd myuser3 # 这里的身份是myuser1 [sudo] myuser1 的密码 # 输入myuser1的密码 更改用户 myuser3 的密码 。 # 更改myuser3的密码 新的 密码 重新输入新的 密码 passwd所有的身份验证令牌已经成功更新。 [myuser1localhost ~]$ sudo passwd root # 发现能改root的密码怎么会这样的 更改用户 root 的密码 。 新的 密码 无效的密码 密码是一个回文 重新输入新的 密码 passwd所有的身份验证令牌已经成功更新。root的密码竟然能被myuser1的用户修改下次root登录就登录不上去了欲哭无泪所以我们就要加上限制用户的命令参数修改方法如下 [rootlocalhost ~]# visudo .... .. myuser1 ALL(ALL) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root .... ..在设置值中加上感叹号【 ! 】代表【不可执行】的意思。因此上面这一行会变成可以执行【passwd 任意字符】但是【passwd】与【passwd root】这两个命令例外如此一来myuser1就无法修改root的密码了。这位用户可以具有root的能力帮助root修改其他用户的密码却不能随意修改root的密码。 通过别名创建visudo 如上述的第三点如果我有15个用户需要加入刚刚的管理员行列那么我是否要将上述那长长的设置15行呢而且如果想要修改命令或者是新增命令每一行都要设置很麻烦。有没有更简单的方法呢可以设置别名visudo的别名可以是【命令别名、账号别名、主机别名】等。这里仅介绍一下账号别名 假如我的pro1、pro2、pro3、与myuser1、myuser2要加入上述的密码管理员的sudo列表中那我可以创建一账号别名为ADMPW然后将这个名称处理一下处理的方式如下 [rootlocalhost ~]# visudo # 这里是root身份 .... .. User_Alias ADMPW pro1, pro2, pro3, myuser1, myuser2 Cmnd_Alias ADMPWCOM !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root ADMPW ALL (root) ADMPWCOM .... ..我通过User_Alias 建立一个新账号这个账号名称一定要使用大写字符来处理包括Cmnd_Alias(命令别名)Host_Alias(来源主机别名)都需要使用大写字符。 User_Alias ADMPW pro1, pro2, pro3, myuser1, myuser2 这行指定了一个名为ADMPW的用户别名它包含了5个用户: pro1、pro2、pro3、myuser1和myuser2 Cmnd_Alias ADMPWCOM !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]* , !/usr/bin/passwd root 这行指定了一个名为ADMPWCOM的命令别名它包含了3个命令: !/usr/bin/passwd、/usr/bin/passwd [A-Za-z]* !/usr/bin/passwd root。其中!/usr/bin/passwd表示禁止使用passwd命令/usr/bin/passwd [A-Za-z]* 表示使用passwd命令修改非root用户的密码!/usr/bin/passwd root表示禁止使用passwd命令修改root用户的密码。 ADMPW ALL (root) ADMPWCOM 这行指定了一个授权策略它允许ADMPW用户别名中的所有用户在所有主机上以任何方式ALL执行ADMPWCOM命令别名中的命令但必须以root用户身份执行。也就是说只有ADMPW用户别名中的用户才能执行ADMPWCOM命令别名中的命令并且必须以root用户身份执行。 未来要修改时我们只要修改 User_Alias以及Cmnd_Alias 这两行即可设置方面比较有弹性 sudo的时间间隔问题 或许你已经发现了那就是如果我们使用同一个账号在短时间内重复操作sudo来运行命令的话在第二次执行sudo时并不需要自己的密码sudo还是会正确的运行。为什么呢第一次执行sudo需要输入密码是担心由于用户暂时离开座位但有人跑来你座位使用你的账号操作系统所以需要你输入密码重新确认一次身份。 二次执行sudo的间隔在5分钟内那么再次执行sudo时就不需要重新输入密码了这是因为系统相信你在5分钟内不会离开不过两次sudo操作时间间隔超过5分钟那就得重新输入一次你的密码了 sudo搭配su的使用方式 很多的时候我们需要大量执行很多root的工作所以一直执行sudo觉得很烦那么有没有办法使用sudo搭配su一口气将身份转为root而且还用用户自己的密码来变成root呢如下 [rootlocalhost ~]# visudo User_Alias ADMPW pro1, pro2, pro3, myuser1, myuser2 ADMPW ALL (root) /bin/su -[pro2localhost ~]$ sudo su - [sudo] pro2 的密码 上一次登录三 4月 12 17:36:49 CST 2023pts/2 上 [rootlocalhost ~]# 我们只要输入【sudo su -】并且输入【自己的密码】就立刻会成为root身份。不但root密码不会外流用户管理也很方便。这些你加入的用户全部都是你能够信任的用户才行 总结 sudo命令更加安全和灵活能够提供更细粒度的授权控制适用于多用户环境下的权限管理 su命令则更加方便可以在命令行上直接切换身份适用于单用户环境下的工作。在使用这两个命令时需要根据实际情况选择合适的方法避免因误操作造成不必要的麻烦。 本文参考《鸟哥的Linux私房菜》这本书
http://www.hkea.cn/news/14270655/

相关文章:

  • 网站开发应注意什么百度seo工具
  • 浙江王氏生态建设网站企点营销软件
  • 徐水网站建设制作微信公众号的网站
  • 网站设计步骤详解厦门大型网站设计公司
  • 网上下载的网页模板怎么用淄博优化网站
  • 制作网站什么制作软件云匠网订单多吗
  • 零基础jsp网站开发wordpress 主题 地图
  • wordpress免插件cdn加速seo销售话术开场白
  • 能做SEO优化的网站建设怎么做网站官方电话
  • 石家庄网站建设seo网站好玩代码和特效
  • 佳木斯网站建设哪家好中国建设银行春季招聘网站
  • 青岛网站建设的流程有哪些建站公司转型做什么业务
  • 如何打百度人工电话常州网站关键字优化
  • asp.net.做简单的网站找企业网站制作
  • 网站后台怎么用云南做网站需要多少钱
  • 太原北京网站建设公司企业所得税怎么计算公式
  • 网站建设中最有效网站推广方式管家婆进销存管理系统
  • 简单网站建设合同模板长春网站seo报价
  • 免费网站模块互联网与网站有哪些
  • 青岛网站seo多少钱秦皇岛网站建设
  • 微网站怎么开发做公开网站的步骤
  • 专业开发手机网站建设为什么不能娶电商女
  • 专注企业网站建设株洲专业网站建设
  • 镇江网站建设推广投资公司注册需要什么资质
  • cms站群管理系统wordpress所含数据库文件
  • 关于旅游网站策划书wordpress 免插件 浏览数
  • 解决国外网站很慢襄樊公司网站建设
  • 食品网站源码建造师个人业绩查询系统
  • 如何搭建一个论坛网站黄骅港赶海推荐个好地方
  • 深圳市网站建设单位十佳学习网站建设