sudo配置临时取得root权限
系统中的普通用户有时需要root权限执行某种操作,要是使用su - root的话必须要知道root的密码,这是不安全的,所以有了sudo,root可以对/etc/sudoers做一定的配置,让普通用户在不切换到root的情况下,执行一些只有root才能执行的操作。这个文件只能root去修改,建议使用visudo这个命令修改,而不是直接vim /etc/sudoers。
原因有二:
◦ 一是它能够防止两个用户同时修改它;
◦ 二是它也能进行有限的语法检查。
当编辑这个文件有错误时,使用visudo会给出错误提示,此时可以按e重新编辑,x不保存退出,Q保存退出,如果选择Q,sudo就不能正常工作了。
实验过程完成了给指定用户sudo权限和用别名指定一组用户的可以执行的sudo指令
过程如下:
[root@mail ~]# visudo
#chen为普通用户,ALL可以从任何的主机登陆,(root)可以以root身份,后面是可以执行的命令,最好写全路径
88 ## Allow root to run any commands anywhere
89 root ALL=(ALL) ALL
90 chen ALL=(root) /usr/sbin/useradd,/usr/bin/passwd
91 ## Allows members of the 'sys' group to run networking, software,
[root@mail ~]# exit
logout
[chen@mail 桌面]$ sudo -l #查看自己可以执行的sudo命令
[sudo] password for chen: #输入自己的密码
Matching Defaults entries for chen on this host:
requiretty, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User chen may run the following commands on this host:
(root) /usr/sbin/useradd, (root) /usr/bin/passwd #这里看到可以执行的sudo命令
[chen@mail 桌面]$ sudo useradd user3 #测试
[chen@mail 桌面]$ sudo passwd user3
更改用户 user3 的密码 。
新的 密码:
无效的密码: 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[chen@mail 桌面]$ id user3 #添加user3成功
uid=503(user3) gid=503(user3) 组=503(user3)
[chen@mail 桌面]$ visudo #普通用户不允许编辑
visudo: /etc/sudoers: Permission denied
visudo: /etc/sudoers: Permission denied
[chen@mail 桌面]$ su - root
密码:
[root@mail ~]# visudo
[root@mail ~]# cat /etc/sudoers |grep user1 #编辑增加了下面一行
user1 ALL=(user2) /bin/ls
[root@mail ~]# su - user1
[user1@mail ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for user1:
Matching Defaults entries for user1 on this host:
requiretty, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User user1 may run the following commands on this host:
(user2) /bin/ls
[user1@mail ~]$ ls /home/user2 #user1直接查看user2的家目录肯定是不允许的
ls: 无法打开目录/home/user2: 权限不够
[user1@mail ~]$ sudo -u user2 ls /home/user2 #但是sudo以user2的身份查看就可以
a
#这里不能以user2的身份添加用户,因为user2本身还没有useradd的权限
#事实上,即使给user2 sudo的添加用户权限这样也是不行的,因为user2添加的时候也要sudo的啊
#直接以user2肯定不行,看演示。
[user1@mail ~]$ sudo -u user2 useradd user4 #这时候不能添加
Sorry, user user1 is not allowed to execute '/usr/sbin/useradd user4' as user2 on mail.example.com.
[user1@mail ~]$ exit
logout
[root@mail ~]# visudo
#添加了这行,给user2 sudo添加用户的权限,这时候sudo -u user2 useradd user4是否可以呢?不行的!
user2 ALL=(root) /usr/sbin/useradd,/usr/bin/passwd
[root@mail ~]# su - user2
[user2@mail ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for user2:
Matching Defaults entries for user2 on this host:
requiretty, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User user2 may run the following commands on this host:
(root) /usr/sbin/useradd, (root) /usr/bin/passwd
[user2@mail ~]$ su - user1
密码:
[user1@mail ~]$ sudo -u user2 useradd user4 #答案在此,不行的!
Sorry, user user1 is not allowed to execute '/usr/sbin/useradd user4' as user2 on mail.example.com.
[user1@mail ~]$
#总结下,sudo -u 用户名 命令 ,当前用户以某个用户的身份执行某个命令的时候,必须这个用户本身不加sudo的情况
#直接能执行的命令,才可以这种方式执行。另外,sudo不加-u,默认以root身份执行
[user1@mail ~]$ exit
logout
[user2@mail ~]$ exit
logout
[root@mail ~]# visudo
#改动如下:删除了91,92行,
88 ## Allow root to run any commands anywhere
89 root ALL=(ALL) ALL
90 chen ALL=(root) /usr/sbin/useradd,/usr/bin/passwd
91 user1 ALL=(user2) /bin/ls #删除
92 user2 ALL=(root) /usr/sbin/useradd,/usr/bin/passwd #删除
88 ## Allow root to run any commands anywhere
89 root ALL=(ALL) ALL
90 chen ALL=(root) /usr/sbin/useradd,/usr/bin/passwd
91 ADMIN ALL=(root) /usr/sbin/useradd,/usr/bin/passwd #新添加
20 # User_Alias ADMINS = jsmith, mikem
21 User_Alias ADMIN = user1, user2 #新添加
22
#这里相当于ADMIN为user1,user2的别名,这个别名具有添加用户的权限,user1和user2也具有这个权限
[root@mail ~]# su - user1
[user1@mail ~]$ sudo -l
[sudo] password for user1:
Matching Defaults entries for user1 on this host:
requiretty, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User user1 may run the following commands on this host:
(root) /usr/sbin/useradd, (root) /usr/bin/passwd #可以看到user1有useradd权限
[user1@mail ~]$ su - user2
密码:
[user2@mail ~]$ sudo -l
[sudo] password for user2:
Matching Defaults entries for user2 on this host:
requiretty, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User user2 may run the following commands on this host:
(root) /usr/sbin/useradd, (root) /usr/bin/passwd #user2也有
[user2@mail ~]$
sudo配置临时取得root权限的更多相关文章
- [root]既然sudo 可以暂时获取root权限,那么为何还需要root这个用户呢
既然sudo 可以暂时获取root权限,那么为何还需要root这个用户呢 sudo 非root用户可以临时行使root权限,也就是非root用户可以操作该系统下的任何文件,仍然存在安全风险,怎么解释? ...
- 普通用户如何临时获取root权限
转自:http://634871.blog.51cto.com/624871/1325907 在实际工作中,公司不会将root用户直接给员工使用,而是通过员工自己的账号临时获得系统的root权限. 1 ...
- 【linux】sudo su切换到root权限
在用户有sudo权限但不知道root密码时可用 sudo su切换到root用户
- linux命令-sudo普通用户拥有root权限
普通用户权限不够 [root@wangshaojun ~]# su - dennywang[dennywang@wangshaojun ~]$ ls /root/ls: 无法打开目录/root/: 权 ...
- cygwin选择安装包选项搭建NDK开发环境/配置cygwin的root权限
9.Search是可以输入你要下载的包的名称,能够快速筛选出你要下载的包.那四个单选按钮是选择下边树的样式,默认就行,不用动.View默认是Category,建议改成full显示全部包再查,省的一些包 ...
- Linux su和sudo命令的区别,并获得root权限
su(superuser) su表示切换用户,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-"后表示也切 ...
- Debian普通用户获取root权限|sudo的安装与配置
Debian系统的普通用户需要安装软件时,往往会收到“Permission denied”的提示,这时候需要root权限.那么如何在不登陆超级管理员账户的前提下拥有root权限呢?对于大多数Linux ...
- 设置用户sudo -s拥有root权限
开通普通用户的ROOT权限,上线了可以禁止用户使用root权限 修改配置文件 vi etc/sudoers 在 root ALL=(ALL) ALL那么你就在下边再加一条配置:hjd ALL=( ...
- 编写具有临时root权限的应用
本文以dpkg为例进行演示 关于setuid具体原理可查阅<Unix高级环境编程>“进程控制”章节关于“设置用户id和设置组id”的介绍 1. 首先需要通过setuid(0),让程序获取临 ...
随机推荐
- linux进程状态
系统维护的时候难免会遇到进程的状态的查询和管理,到底什么是R,有的是S,有的还是S+呢?一直有些混沌的问题,今天细细的来总结一下: ps是用来报告系统中程序执行状况的命令这个是无可厚非的,linux进 ...
- sublime text 2 中文乱码解决办法
sublime text 2是一款非常优秀的跨平台文本及源代码编辑器,本人非常喜欢,但是不支持GB2312和GBK编码在某些时候比较麻烦.可以通过向sublime text 中添加编码类型转换包(比如 ...
- linux下快速删除大量文件
昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受.Google了一下,查到了一种方法,试用了下确实比 ...
- Pass Dynamic Value to a Grid Label
A grid label is the blue (normally) colored grid header that you see on PeopleSoft pages. The grid ...
- [leetcode]_Path Sum I && II
都是考查DFS.经典回溯算法,问题在于我对该类型的代码不熟悉,目前以参考别人的代码,然后加上自己的实现为主,通过类似的题目加强理解. 一.给定一棵二叉树,判断是否存在从root到leaf的路径和等于给 ...
- SQL Server编程(04)基本语法
一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @ ...
- recurse_array_change_key_case()递规返回字符串键名全为小写或大写的数组
//递归返回字符串键名全为小写或大写的数组function recurse_array_change_key_case(&$input, $case = CASE_LOWER){ if( ...
- jquery 消息提醒插件 toastmessage
最近做系统,想到使用后台要使用消息提醒,但是一直苦恼消息提醒的效果,于是找了一个toastmessage,还不错.记录下使用的方法. 第一步:引入需要的文件 <script type=" ...
- DevExpress 关于 GridView 表格编辑中 点击其他按钮里导致 值未取到处理
只需要给添加以下代码 在执行其他按钮前调 用一下 就可以了:主要是用来关闭编辑以及更新当前行编辑内容 this.gridControl1.FocusedView.CloseEditor(); this ...
- WIN8+VS2013编写发布WCF之二(部署)
上文简介了如何建立WCF工程并且调试,下面说一下如何部署. 本文将陆陆续续讲述三种部署方式,随着项目的进展将不断补全. 声明: 用管理员身份打开VS2013,发布前请将程序的.net版本改成与服务器相 ...