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

Ubuntu中的用户管理(五)授予常规用户系统管理员权限

运行具有超级用户权限的命令通常有两种情况:(1)你同时拥有了一个超级用户帐号(root帐号启用)和一个常规用户帐号;(2)你不是一个常规用户但是并没有超级用户的权限(这种情况经常发生在大型多用户网络中的初级和中高级系统管理员身上)。下面我们分别来看下这两种情况:

1su命令短暂的更改用户身份

这种情况需要启用超级用户帐号(Ubuntu系统中是默认禁用超级用户帐号的)。启用root账号时,可使用sudo passwd命令。之后你就可以使用su命令进入root用户。

su命令的使用格式如下:

su option username arguments

单独使用su命令,你变成root用户,但是仍然保留你原来的常规用户的环境变量,你的当前目录也不会变化。

你使用su -命令,你变成root用户,并且继承了root用户的环境变量

想要变成其他用户,需要在命令行中指定用户名:su – other_user

如果要回到你原来的用户身份,使用exit命令。

当你想要某些用户能够执行需要超级用户权限的命令时,你告诉他们root用户的密码,他们就可以使用su命令进入root用户,执行相应的命令。

2sudo命令授予超级用户权限

sudo是和命令结合使用的。sudo命令的使用格式如下:

sudo command

当你输入上面的命令时,sudo会检查/etc/sudoers文件查看该用户是否被授权可以获得超级用户权限。如果可以的话,该用户会被提示输入这个用户的密码,然后命令会被执行,就好像是root用户执行命令一样。Ubuntu的默认设置时,15分钟内再使用sudo命令时,不要再次输入密码。如果一个没有被授权的用户使用sudo命令时,这个记录会被保存在系统日志中,并通知给超级用户。

有三个和sudo相关的man页面:sudosudoersvisudo。第一个主要是关于sudo命令本身,第二个是关于/etc/sudoers文件,第三个是使用文本编辑器编辑/etc/sudoers文件。你需要使用特殊的编辑命令因为它会检查文件的parse错误,并同时将文件锁起来防止其他人编辑。visudo命令使用vi编辑器。

/etc/sudoers文件如下所示:

#
#This file MUST be edited with the 'visudo' command as root.
#

#Please consider adding local content in /etc/sudoers.d/ instead of
#directly modifying this file.
#
#See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$
#Host alias specification
#User alias specification
#Cmnd alias specification

#User privilege specification
root ALL=(ALL:ALL) ALL

#Members of the admin group may gain root privileges
%adminALL=(ALL) ALL

#Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

#See sudoers(5) for more information on "#include"directives:
#includedir/etc/sudoers.d



文件中一个sudoers行的基本形式如下:

user host_computer=command

这个user可以是单独的一个用户,也可以是一个群组(群组前面有%)。host_computer通常是ALL包括所有的主机,也可以是localhost只包括本地主机。sudoers行中的command可以是ALL,包括了所有的特殊命令,也可以是所有命令的一个子集(不可被使用的命令前会加上!)。

sudoers man page将给出详细的信息,这里只举几个简单的例子:

如果我们添加行

%wheel ALL=(ALL) NOPASSWD:ALL

那么任何添加到wheel群组的用户将能够执行任何命令,而且不需要输入密码。

假设我们想要给用户sunny,在全网范围内将用户添加到图形界面的权限,我们可以加入下面一行:

sunny ALL=/users-admin

或者我们只希望sunny在她个人的电脑上有这个权限:

sunny 192.168.1.45=/usr/bin/users-admin

如果我们想要授权editors群组在全网范围内不需要密码的删除文件,那么我们可以使用:

%editors ALL=NOPASSWD: /bin/rm

如果我们希望给每一个用户权限在当前主机上不需要密码的挂载CD光驱,可以使用:

ALL localhost=NOPASSWD: /sbin/mount /dev/scd0 /mnt/cdrom /sbin/umount/mnt/cdrom

下面的命令将会输出当前用户被授权使用的命令列表:

sudo -l

有人会误以为su命令是super user的简写,实际上susubstitute user的所写。还有一个重要的区别是命令su和命令su -的区别,前者你获得了新用户的身份但是却保留你原有用户的环境变量(例如path),后者你继承了新用户的环境变量。例如当你使用su命令变成超级用户root时,你并没有继承超级用户的环境变量/bin或者/sbin,所以你必须得输入命令的全路径才能执行,否则系统将找不到你要执行的命令。在Ubuntu中,第一个创建的用户被分类为root,尽管真正的root用户是默认禁用的。如果你希望其他用户也可以通过sudo命令获得root用户的全权限,你可以将这个用户加到admin群组即可。


相关文章:

  • Ubuntu中的用户管理(六)硬盘配额
  • Ubuntu中的用户管理(七)相关Ubuntu命令
  • Windows下Ubuntu 12.04 LTS 的安装(双系统使用EasyBCD)
  • Ubuntu 12.04下安装QQ2012Beta3
  • Ubuntu 12.04 中文输入法
  • Ubuntu下的截图软件Deepin Scrot
  • SHELL 编程入门与提高(一)第一个shell程序
  • Ubuntu 12.04 LTS 中文txt文件显示乱码问题
  • SHELL 编程入门与提高(二)bash/pdksh中的表达式比较
  • SHELL 编程入门与提高(三)SHELL中的语句详解(上)
  • SHELL 编程入门与提高(三)SHELL中的语句详解(下)
  • SHELL 编程入门与提高(四)SHELL脚本中函数的应用
  • 文艺编程 Literate Programming (原文中英文对照)
  • Windows下PBRT v2 安装指南
  • PBRT 快速入门
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • exports和module.exports
  • HTML-表单
  • JavaScript DOM 10 - 滚动
  • JavaScript HTML DOM
  • Javascript基础之Array数组API
  • Java多态
  • JSDuck 与 AngularJS 融合技巧
  • laravel with 查询列表限制条数
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • overflow: hidden IE7无效
  • Spring声明式事务管理之一:五大属性分析
  • 面试总结JavaScript篇
  • 一文看透浏览器架构
  • NLPIR智能语义技术让大数据挖掘更简单
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 容器镜像
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (09)Hive——CTE 公共表达式
  • (10)ATF MMU转换表
  • (4)事件处理——(7)简单事件(Simple events)
  • (C)一些题4
  • (C++)八皇后问题
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (万字长文)Spring的核心知识尽揽其中
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)Sql Server 保留几位小数的两种做法
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .mysql secret在哪_MySQL如何使用索引
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET委托:一个关于C#的睡前故事
  • 。Net下Windows服务程序开发疑惑
  • @ModelAttribute注解使用
  • @requestBody写与不写的情况
  • @软考考生,这份软考高分攻略你须知道
  • []AT 指令 收发短信和GPRS上网 SIM508/548