快捷搜索:

技巧:Linux赋予普通用户特殊权限

在Linux系统中,治理员每每不止一人,若每位治理员都用root身份进行治理事情,根本无法弄清楚谁该做什么。以是最好的要领是:治理员创建一些通俗用户,分配一部分系统治理事情给他们。

我们弗成以应用su让他们直接变成root,由于这些用户都必须知道root的密码,这种措施很不安然,而且也不相符我们的分工需求。一样平常的做法是使用权限的设置,依事情性子分类,让特殊身份的用户成为同一个事情组,并设置事情组权限。例如:要wwwadm这位用户认真治理网站数据,一样平常Apache Web Server的进程httpd的所有者是www,您可以设置用户wwwadm与www为同一事情组,并设置Apache默认寄放网页目录 /usr/local/httpd/htdocs的事情组权限为可读、可写、可履行,这样属于此事情组的每位用户就可以进行网页的治理了。

但这并不是最好的办理法子,例如治理员想赋予一个通俗用户关机的权限,这时应用上述的法子就不是很抱负。这时您大概会想,我只让这个用户可以以 root身份履行shutdown敕令就行了。完全没错,可惜在平日的Linux系统中无法实现这一功能,不过已经有了对象可以实现这样的功能—— sudo。

sudo经由过程掩护一个特权到用户名映射的数据库将特权分配给不合的用户,这些特权可由数据库中所列的一些不合的敕令来识别。为了得到某一特权项,有资格的用户只需简单地在敕令行输入sudo与敕令名之后,按照提示再次输进口令(用户自己的口令,不是root用户口令)。例如,sudo容许通俗用户款式化磁盘,然则却没有付与其他的root用户特权。

1、sudo对象由文件/etc/sudoers进行设置设置设备摆设摆设,该文件包孕所有可以造访sudo对象的用户列表并定义了他们的特权。一个范例的/etc/sudoers条款如下:

代码:

liming ALL=(ALL) ALL

这个条款使得用户liming作为超级用户造访所有利用法度榜样,如用户liming必要作为超级用户运行敕令,他只需简单地在敕令前加上前缀sudo。是以,要以root用户的身份履行敕令format,liming可以输入如下敕令:

代码:

# sudo /usr/sbin/useradd sam

留意:敕令要写绝对路径,/usr/sbin默认不在通俗用户的搜索路径中,或者加入此路径:PATH=$PATH:/usr/sbin;export PATH。别的,不合系统敕令的路径不尽相同,可以应用敕令“whereis 敕令名”来查找其路径。

这时会显示下面的输出结果:

代码:

We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these two things:

#1) Respect the privacy of others.

#2) Think before you type.

Password:

假如liming精确地输入了口令,敕令useradd将会以root用户身份履行。

留意:设置设置设备摆设摆设文件/etc/sudoers必须应用敕令 Visudo来编辑。

只要把响应的用户名、主机名和许可的敕令列表以标准的款式加入到文件/etc/sudoers,并保存就可以生效,再看一个例子。

2、例子:治理员必要容许gem用户在主机sun上履行reboot和shutdown敕令,在/etc/sudoers中加入:

代码:

gem sun=/usr/sbin/reboot,/usr/sbin/shutdown

留意:敕令必然要应用绝对路径,以避免其他目录的同名敕令被履行,从而造成安然隐患。

然后保存退出,gem用户想履行reboot敕令时,只要在提示符下运行下列敕令:

代码:

$ sudo /usr/sbin/reboot

输入精确的密码,就可以重启办事器了。

假如您想对一组用户进行定义,可以在组名前加上%,对其进行设置,如:

代码:

%cuug ALL=(ALL) ALL

3、别的,还可以使用又名来简化设置设置设备摆设摆设文件。又名类似组的观点,有用户又名、主机又名和敕令又名。多个用户可以首先用一个又名来定义,然后在规定他们可以履行什么敕令的时刻应用又名就可以了,这个设置设置设备摆设摆设对所有用户都生效。主机又名和敕令又名也是如斯。留意应用前先要在/etc/sudoers中定义: User_Alias, Host_Alias, Cmnd_Alias项,在其后面加入响应的名称,也以逗号分隔开就可以了,举例如下:

代码:

Host_Alias SERVER=no1

User_Alias ADMINS=liming,gem

Cmnd_Alias SHUTDOWN=/usr/sbin/halt,/usr/sbin/shutdown,/usr/sbin/reboot

ADMINS SERVER=SHUTDOWN

4、再看这个例子:

代码:

ADMINS ALL=(ALL) NOPASSWD: ALL

表示容许ADMINS不用口令履行统统操作,此中“NOPASSWD:”项定义了用户履行操作时不必要输进口令。

5、sudo敕令还可以加上一些参数,完成一些帮助的功能,如

代码:

$ sudo –l

会显示出类似这样的信息:

代码:

User liming may run the following commands on this host:

(root) /usr/sbin/reboot

阐明root容许用户liming履行/usr/sbin/reboot敕令。这个参数可以应用户查看自己今朝可以在sudo中履行哪些敕令。

6、在敕令提示符下键入sudo敕令会列出所有参数,其他一些参数如下:

代码:

-V 显示版本编号。

-h 显示sudo敕令的应用参数。

-v 由于sudo在第一次履行时或是在N分钟内没有履行(N预设为5)会扣问密码。这个参数是从新做一次确认,假如跨越N分钟,也会问密码。

-k 将会逼迫应用者鄙人一次履行sudo时扣问密码(不论有没有跨越N分钟)。

-b 将要履行的敕令放在背景履行。

-p prompt 可以变动问密码的提示语,此中%u会调换为应用者的账号名称,%h会显示主机名称。

-u username/#uid 不加此参数,代表要以root的身份履行敕令,而加了此参数,可以以username的身份履行敕令(#uid为该username的UID)。

-s 履行情况变量中的 SHELL 所指定的 Shell ,或是 /etc/passwd 里所指定的 Shell。

-H 将情况变量中的HOME(宿主目录)指定为要变化身份的应用者的宿主目录。(如不加-u参数便是系统治理者root。)

要以系统治理者身份(或以-u变动为其他人)履行的敕令。

您可能还会对下面的文章感兴趣: