你在使用 Linux 命令行时曾经得到过“拒绝访问Permission denied”的错误提示吗?这可能是因为你正在尝试执行一个需要 root 权限的操作。例如,下面的截图展示了当我尝试复制一个二进制文件到一个系统目录时产生的错误。
那么该怎么解决这个错误?很简单,使用 sudo
命令。
用户运行此命令后会被提示输入他们(自己)的登录密码。一旦输入了正确的密码,操作将会成功执行。
在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用
su切换为超级用户。但是使用su的缺点之一在于必须要先
告知超级用户的密码。
sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“
sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权力”,让他们执行一些只有超级用户或其他特许用户才能完成的任务(主要体现为命令)比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab, /etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。
权力分配主要通过在配置文件/etc/sudoers按照约定格式添加一行信息。
用户名主机名=(运行用户名) 可运行的命令
例如:sn ALL=(ALL) /usr/sbin/useradd 给sn用户添加系统用户的权利
这样,就可以执行在sn用户下,执行sudo useradd username 命令来添加用户。