`
mintelong
  • 浏览: 392340 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ubuntu下sudo命令的用法

阅读更多
利用sudo命令为Ubuntu分配管理权限

Ubuntu 有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起。对于其他Linux系统来说,一般在安装过程就设定root密码,这样用户就能用它登录root帐户或使用su命令转换到超级用户身份。  

   与之相反,Ubuntu默认安装时,并没有给root用户设置口令,也没有启用root帐户。问题是要想作为root用户来运行命令该怎么办呢?没关系,我们可以使用sudo命令达此目的。

Ubuntu 如何启用root帐户
        只要为root设置一个root密码就行了:
        $ sudo passwd root
        好了,现在您能直接作为root登录了。

sudo是linux下常用的允许普通用户使用超级用户权限的工具,该命令为管理员提供了一种细颗粒度的访问控制方法,通过它人们既可以作为超级用户 又可以作为其它类型的用户来访问系统。这样做的好处是,管理员能够在不告诉用户root密码的前提下,授予他们某些特定类型的超级用户权限,这正是许多系 统管理员所梦寐以求的。

1.sudo的缺省配置

默认时,Ubuntu为sudo提供了一个基本的配置,该配置保存在/etc目录下的sudoers文件中。在修改该配置文件时,务必使用 visudo工具来进行编辑,因为该工具会自动对配置语法进行严格检查,如果发现错误,在保存退出时给出警告,并提示你哪段配置出错,从而确保该配置文件 的正确性。相反,如果使用其它的文本编辑程序的话,一旦出错,就会给系统带来严重的后果。下面给出的是Ubuntu默认的/etc/sudoers文件内 容:

# User privilege specificationroot ALL=(ALL) ALL# Members of the admin group may gain root privileges%admin ALL=(ALL) ALL

下面对以上配置做简要说明:

第一项配置的作用,是允许root用户使用sudo命令变成系统中任何其它类型的用户。第二个配置规定,管理组中的所有成员都能以root的身份执行 所有命令。因此,在默认安装的Ubuntu系统中,要想作为root身份来执行命令的话,只要在sudo后面跟上欲执行的命令即可。下面用一个例子加以说 明,如果您想执行apt-get update的话,应当在命令行中键入以下内容:

$ sudo apt-get update

2.配置文件语法详解

接下来,我们用一个实例来详细解释/etc/sudoers文件的配置语法,请看下面的例子:

jorge ALL=(root) /usr/bin/find, /bin/rm

上面的第一栏规定它的适用对象:用户或组,就本例来说,它是用户jorge。此外,因为系统中的组和用户可以重名,要想指定该规则的适用对象是组而非用户的话,组对象的名称一定要用百分号%开头。

第二栏指定该规则的适用主机。当我们在多个系统之间部署sudo环境时,这一栏格外有用,这里的ALL代表所有主机。但是,对于桌面系统或不想将sudo部署到多个系统的情况,这一栏就换成相应的主机名。

第三栏的值放在括号内,指出第一栏规定的用户能够以何种身份来执行命令。本例中该值设为root,这意味着用户jorge能够以root用户的身份来运行后面列出的命令。该值也可以设成通配符ALL,jorge便能作为系统中的任何用户来执行列出的命令了。

最后一栏(即/usr/bin/find, /bin/rm)是使用逗号分开的命令表,这些命令能被第一栏规定的用户以第三栏指出的身份来运行它们。本例中,该配置允许jorge作为超级用户运行 /usr/bin/find和 /bin/rm这两个命令。需要指出的是,这里列出的命令一定要使用绝对路径。

3.sudo命令的使用方法

现在的问题是,用户jorge怎样利用分配给他的权限呢?其实很简单,只要在命令行模式下使用sudo命令。

加上他想运行的程序就可以了,比如:

jorge@ubuntu:~$ sudo find . ! -name '*.avi' -exec rm -f //{//} //;
倘若jorge企图执行/etc/sudoers文件规定之外的程序(比如find 或 rm)的话,sudo命令便会以失败而告终,并给出警告信息,指出他无权以超级用户身份来运行这些命令。

要想以非root用户身份来运行命令,必须使用-u选项来指定想要作为的用户;否则的话,sudo会默认为root用户,比如要想以fred身份来执行ls命令,就应该这样: $ sudo -u fred ls /home/fred
就像您看到的那样,我们可以利用这些规则为系统创建具体的角色。例如,要让一个组负责帐户管理,你一方面不想让这些用户具备完全的root访问权限, 另一方面还得让他们具有增加和删除用户的权利,那么我们可以在系统上创建一个名为accounts的组,然后把那些用户添加到这个组里。之后,再使用 visudo为/etc/sudoers添加下列内容: %accounts ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod

现在好了,accounts组中的任何成员都能运行useradd、userdel和usermod命令了。如果过一段时间后,您发现该角色还需要其他工具,只要在该表的尾部将其添上就行了。这样真是方便极了!

需要注意的是,当我们为用户定义可以运行的命令时,必须使用完整的命令路径。这样做是完全出于安全的考虑,如果我们给出的命令只是简单的userad 而非 /usr/sbin/useradd,那么用户有可能创建一个他自己的脚本,也叫做userad,然后放在它的本地路径中,如此一来他就能够通过这个名为 useradd的本地脚本,作为root来执行任何他想要的命令了。这是相当危险的!

sudo命令的另一个便捷的功能,是它能够指出哪些命令在执行时不需要输入密码。这很有用,尤其是在非交互式脚本中以超级用户的身份来运行某些命令的 时候。例如,想要让用户作为超级用户不必输入密码就能执行kill命令,以便用户能立刻杀死一个失控的进程。为此,在命令行前边加上NOPASSWD:属 性即可。例如,可以在/etc/sudoers文件中加上下面一行,从而让jorge获得这种权力: jorge ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall ,这样一来,jorge就能运行以下命令,作为root用户来杀死失控的rm进程了。 jorge@ubuntu:~$ sudo killall rm
分享到:
评论

相关推荐

    Ubuntu中sudo命令的使用

    说明的Ubuntu中sudu命令的含义及用法。希望对大家有帮助。

    Ubuntu下samba的使用

    Ubuntu下samba的使用 1. 安装samba服务器 2. 共享Ubuntu下的文件夹 (1) 手动配置方法 1) 打开/etc/samba/smb.conf。注:打开之前最好先备份一下 2) 在末尾添加如下配置项,假设需共享/home/flyfish/7800文件夹 ...

    Linux 中不输入密码运行 sudo 命令的方法

    sudo命令允许受信任的用户作为另一个用户运行程序,默认情况下是root用户。如果您在命令行上花费了大量时间,那么sudo将会是您一直使用的命令之一。 通常,要授予sudo访问权限,请将用户添加到sudoers文件中定义的...

    ubuntu下命令安装qt开发环境

    1、sudo apt-get install build-essential 2、sudo apt-get install qt4-dev-tools qt4-doc qt4-...qt4-doc 是帮助文档,包含了Qt中各个类库的详细说明以及丰富的例子程序,可以使用Qt Assistant 工具来打开阅读。

    浅谈ubuntu 中sudo update与upgrade的作用及区别

    入门linux的同志,刚开始最迫切想知道...在UBUNTU下,我们维护一个源列表,源列表里面都是一些网址信息,这每一条网址就是一个源,这个地址指向的数据标识着这台源服务器上有哪些软件可以安装使用。 编辑源命令: sudo

    Ubuntu使用apt-get install安装程序下载速度慢?apt-fast加速下载。

    受到各种因素影响,有时ubuntu使用sudo apt-get install xx安装程序,在下载软件的时候会出现下载速度过慢的问题。 解决办法:通过安装apt-fast代替apt-get,可以使下载的速度有显著的提升。 解释:apt-fast采用aria...

    Ubuntu系统的Docker离线安装包

    Docker离线安装包,亲测有效。 安装操作如下: 1、sudo dpkg -i containerd.io_1.4.6-1_amd64.deb ...如果不想每次执行docker命令的时候使用sudo,可执行如下命令: sudo usermod -aG docker 登录账号

    Ubuntu22.04 软件安装包

    资源来源于自己部署沙箱时使用的,使用的是Ubuntu22.04.1版本的系统 ps: 因为安装过程涉及到依赖问题,尽可能使用下面的命令安装) 下载后解压及无错安装命令: sudo tar -xvf softbag.tar -C /var/cache/apt/...

    Ubuntu 9.04 源更新,欢迎大家使用

    ubuntu的 更新源 用sudo 命令进行源的更换

    Ubuntu命令_菜鸟必备

    Ubuntu 的确是一个很好的 Linux 的发行版,我更喜欢使用 sudo apt-get install 安装我需要使用的软件 包。 学习 Ubuntu 的其中的一个目的是 Ubuntu 拥用从多用,可以在不同的 Ubuntu 技术论坛中找到你想要解 决的技术...

    Linux (Ubuntu)休眠,挂起,待机,关机的命令详细介绍

    这里对linux 的几个命令整理下,有:休眠,挂起,待机,关机等几个命令的区别及如何实现。 休眠是一种更加省电的模式,它将内存中的数据保存于硬盘中,所有设备都停止工作。当再次使用时需按开关机键,机器将会恢复...

    在Windows 上使用 grub 进行硬盘安装Ubuntu

    1、将所有文件解压到C:\根目录下,然后将Ubuntu的ISO文件拷贝到C:\根目录下,并改名为ubuntu.iso再重启选择 Ubuntu,然后再选择Install Ubuntu即可进入Ubuntu Live界面。在里面点击“安装Ubuntu ”按提示执行即可...

    ubuntu下mentohust源码安装包

    ubuntu环境下mentohust的源码安装包,解压后到mentohust-0.3.1根目录下配置、编译、安装: ./configure make make install 即可使用mentohust联网,如果./configure失败,使用chomod 777 ./configure命令给configure...

    linux的dpkg命令的使用

    本文档介绍了dpkg命令的参数和使用方法

    ubuntu镜像 ubuntu20.4版本 已安装中文输入法

    已下载pycharm社区版,使用命令:sudo ./pycharm.sh即可打开(进入其所在文件夹) 内附ubuntu系统常用快捷命令,方便新手快速入门,免除前期安装的烦恼。 由于资源过大(压缩后7个G,解压后22G左右,采用百度网盘链接...

    《Ubuntu揭秘》(Ubuntu Unleashed)英文版.Part1(共2Parts)

    当然了,如果你非要在Ubuntu系统下敲那几行命令,也可以,Red Hat下能做的事Ubuntu都能做。 顺便说一下,Ubuntu的资助者就是那个曾经乘坐俄罗斯的太空船前往国际空间站旅游了一把的南非亿万富翁。旅游回来“落地”...

    nginx日常维护常用命令

    一、简明nginx常用命令 1. 启动 Nginx 代码如下:poechant@...3. Nginx 重载配置 代码如下:poechant@ubuntu:sudo ./sbin/nginx -s reload上述是采用向 Nginx 发送信号的方式,或者使用: 代码如下:poechant@ubuntu:serv

    Ubuntu 10.4 Alien Download

    由于Ubuntu系统无法使用yum来安装包,所以需要用alien命令来安装rpm包,详细安装方式如下: sudo alien -i MySQL.rpm

    ubuntu网卡驱动安装包

    2.ubuntu下切换到root:sudo -i 3.解压网卡驱动tar -xzvf e1000e-3.3.4.tar.gz 4.cd e1000e-3.3.4/src 5.编译安装:make install,将编译好的驱动(e1000e.ko)安装到/lib/modules/3.16.0-30-generic/updates/...

    2.0_Linux常用命令.txt

    ==========Linux command List ============= 1. man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ls 就可以查看ls相关的用法ls //注:按q键或者ctrl+c退出,在linux下可以...#man sudo //给出sudo命令的详细用法;

Global site tag (gtag.js) - Google Analytics