当前位置:首页-->操作系统-->显示文章内容
站 内 搜 索
请输入查询的字符串:
分类最新文章
木马身披“IE皮” 个人防火墙
系统RUN命令大全
LINUX用户安全管理
搜索引擎优化
什么是网络传真?(转载)
传真通无纸化办公先锋(转载
如何检测网络速度慢或性能不
Windows XP系统故障快速解决
知己知彼 解析远程控制带来的
巧改注册表 实现Windows XP自
分类热门文章
把DOS启动装进硬盘─MaxDos实
如何解决局域网内的电脑IP冲
IIS6.0应用程序池的问题
网管须知道 顾客是这样解除上
小技巧教你隐藏IE进程清除指
Microsoft Windows NT/2000服
某高手毕生精力总结的电脑技
系统提示“虚拟内存”不足的
8139网卡的设置技巧
Windows操作系统任务管理器五

LINUX用户安全管理


发布时间:2007-12-22 被阅览数: 次 作者:青岛网络公司

在linux中,每个普通用户都有一个帐户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义。其中最重要的是超级用户,在linux中,它默认用户名是root。

  ◆基本操作

  ● 增加一个用户newuser :

useradd newuser


  passwd newuser (然后根据提示两次输入新用户的密码。)

 

  注意点 用useradd增加一个用户后应该立刻用passwd给新用户修改密码,没有密码的新帐号将不能使用。

在/etc/passwd文件中,没有密码的新用户的记录是如下一行:

 

newuser:!!:506:506::/home/newuser:/bin/bash

 


  在这一行里,用户的密码域被设置成了“!!”,这就意味着用户口令还没有设置,用户不能登陆。(passwd文件的格

式是 用户名:密码:用户ID(UID):组ID(GID):全名:用户目录:外壳脚本)。

 

  当然你可以用-d开关设置新用户的主目录(例如:useradd newuser –d /www),也可以用-g开关为用户指定新组名

(例如:useradd newuser –g linuxusers),你还可以用-G开关把新用户设成系统其它一些组的成员(例如:useradd

newuser –G users,shutdown)。所有这些,你都可以在本站的命令查询中得到详细信息。

 

  附注:相应的,仅仅增加一个新组可以用命令groupadd。

 

  ●修改现有用户的帐号:

 

  1、 修改密码

 

  普通用户可以用passwd修改自己的密码,只有管理员才能用passwd username为其它用户修改密码。

 

  2、 修改用户shell设置

 

  使用chsh命令可以修改自己的shell,只有管理员才能用chsh username为其它用户修改shell设置。注意,指定的

shell必须是列入/etc/shells文件中的shell,否则该用户将不能登陆。

 

  你也可以使用usermod命令修改shell信息,如下所示:

 

usermod –s(new shell path)(username)

 


  其中new shell path和username应取相应的值。

 

  3、 修改主目录设置

 

usermod –d(new home directory)(username)

 


  如果想将现有主目录的主要内容转移到新的目录,应该使用-m开关,如下所示:

 

usermod –d –m/www/newuser newuser

 


  4、 修改UID

 

usermod –u UID username

 


  主目录中所有该用户所拥有的文件和目录都将自动修改UID设置。但是,对于主目录外该用户所拥有的文件,只能手工

用chown命令修改所有权设置。

 

  5、 修改默认组设置

 

username –g(group name) or GID username

 


  6、 修改帐号的有效期

 

  如果使用了影子口令,则可以使用如下命令来修改一个帐号的有效期:

 

usermod –e MM/DD/YY username

 


  例如把用户newuser的有效期定为12/31/01:

 

usermod –e 12/31/01 newuser

 


  7、 删除或禁止用户帐号

 

  使用userdel命令删除现有用户。例如,下面的命令将删除bluewind用户:

 

usedel bluewind

 


  如果想同时删除该用户的主目录以及其中所有内容,要使用-r开关来递归删除。值得注意的是你无法删除已经进入系

统的用户,如果想强行完成,需要先killall有关它的进程,然后再运行userdel命令。

 

  如果只是想暂时禁止某个帐号,可以使用下列方法:

 

  a、 使用无效的shell。例如使用usermod –s newshell username将用户的 shell改为/bin/false(最好把它列

入/etc/shells文件里)。

 

  b、 使该帐号过期。如果使用影子口令,可使用usermod –e MM/DD/YY username命令使该帐号过期。

 

  如果想禁止所有帐号(root帐号当然除外)的访问,可以创建一个名为/etc/nologin的文件,说明系统暂时不允许访

问。注意,确认你还能用root直接登陆才使用这个办法,否则你惨了。

 

  本文中的所有命令都可以在linuxaid获得中文详细的帮助。下一个部分我们讲述用户管理的高级内容。

 

  ◆超级用户权限与授权

 

  ●建立多个超级用户

 

  不少新系统管理员认为root用户是唯一的超级用户,其实root只是系统默认的超级用户的名称,root并非因为它叫

root而成为超级用户的。随便打开一个/etc/passwd文件的例子,你就会发现如下几行:

 

root:asiewhgYfaoO/J:0:0:root:/root:/bin/tcsh
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
lanf:Yuao56Ioyefg:0:0:bluewind:/home/bluewind:/bin/bash
jake:gUyfaiIodashfj:501:501:jake cheng:/home/jake:/bin/tcsh
apache:!!:502:502::/usr/local/apache:/bin/false

 


  可以看到,root的UID和GID都被设置为0了。实际上,超级用户的充要条件就是UID和GID都等于0。也就是说,任何用

户,只要它的UID和GID都为0,就与常被称为root超级用户没有什么两样了。比如上面那个例子里面的lanf,也是一个超级

用户。

 

  所以,可以将任何普通用户变成超级用户。但是,这样做并没有好处,很多时候这都会增加系统的隐患。除非在组织

中需要多个系统管理员管理同一个系统,这就需要有多个超级用户帐号。这有利于各个管理员明确责任,通过日志知道不

同的人分别做过什么事。

 

  还有一种情况,也可能出现多个超级用户帐号,那就是黑客入侵后设置一个看起来象普通帐号的用户,却修改了UID和

GID使之为0。这样根本就不需要知道root用户密码,就可以执行超级用户权限了。而从我们的系统管理员的一方来说,我

们不可能时刻注意passwd文件的变化的,没有那个时间也没有那个精力。这时只好编写一个脚本来帮助监视,例如:

 

/bin/grep ‘0:0’ /etc/passwd |awk ‘BEGIN{FS=”:”}
{print $1}’|mail –s “`date +”%D%T”`”root

 


  这是一个很小的脚本程序,使用了一些常规的命令来查看/etc/passwd文件,把UID和GID为0的行寄给root用户。把这

个脚本放在/etc/cron.daily文件中让cron运行,root将每天收到一封信,报告当前的超级用户。

 

  实际上,由于PAM(可插入验证模块)的限制,在telnet上是不允许超级用户登入的,也就是说,黑客修改了自己的

UID和GID后,想再次登陆从而获得超级用户的权限的话,不修改/etc/seuretty文件是不可能的——除非你傻到自己添加了

伪TTY设备ROOT用户登陆权限。一般可以让超级用户先用普通用户帐号登陆,再su(su命令相关内容请参考本站命令查询部

分)。

 

  ●为普通用户分配特权

 

  使用sudo命令可以允许普通用户执行超级用户才能执行的命令。无论是基于信任的建立需要时间,还是基于是否存在

这种必要,我们都不会把超级用户的所有权限轻易许人的。这是网管工作的原则。所以,当一些用户必须访问某些内容时

,我们可以配置sudo以允许单独的普通用户运行特权命令。

 

  sudo命令允许已经在/etc/sudoers文件中指定的用户运行超级用户命令。例如,一个已经获得许可的普通用户可以运

行:

 

sudo vi /etc/passwd

 


  实际上,sudo的配置完全可以让我们指定某个列入/etc/sudoers文件的普通用户可以做什么、不可以做什

么。/etc/sudoers的配置行如下:

 

  > 空行或注释行(以#字符打头):无用行。

 

  > 可选的主机别名行:用来创建主机列表的简称。必须以Host_Alias关键词开头,列表中的主机必须用逗号隔开。例

如:

 

Host_Alias REDHAT=binbu,qd

 


  其中binbu和qd是俩主机名,你可以用REDHAT(别名)统称它们。

 

  >可选的用户别名行:用来创建用户列表的简称。用户别名行必须以User_Alias关键词开头,列表中的用户名必须以逗

号隔开。其格式同主机别名行。

 

  >可选的命令别名行:用来创建命令列表的简称。必须以Cmnd_alias开头,列表中的命令必须用逗号隔开。

 

  >可选的运行方式别名行:也是用来创建用户列表的简称。不同的是,使用这样的别名可以告诉sudo程序以列表中某一

用户的身份来运行程序。

 

  >必要的用户访问说明行:用户访问的说明语法如下:

 

user host= [run as user ] command list

 


  在user处指定一个真正的用户名或定义过的别名,同样的,host也可以是一个真正的主机名或者定义过的主机别名。

默认情况下,sudo执行的所有命令都是以root身份执行。如果你想使用其他身份可以指定。至于command list可以是以逗

号分隔的命令列表,也可以是一个已经定义过的别名。例如:

 

lanf binbu=/sbin/shutdown

 


  这一句说明lanf可以在binbu主机上运行关机命令。

 

  注意:

 

  1、可以在一行定义多个别名,中间用:隔开。

 

  2、可以在命令或命令别名之前加上!号,使该命令或命令别名无效。

 

  3、有两个关键词:ALL 和NOPASSWD。ALL意味着“所有文件”(所有主机或所有命令),NOPASSWD意味着不用密码。

 

  下面是一个sudoers文件的例子:

 

#sudoers files
#User alias specification
User_Alias ADMIN=yourid:POWERUSER=hisid,herid
#user privilege specification
ADMIN ALL=ALL
POWERUSER ALL=ALL,!/bin/su

 


  第三行定义了两个别名ADMIN和POWERUSER,第五行说明在所有主机上ADMIN都可以以root身份执行所有命令。第六行给

POWERUSER除了运行su命令外同等ADMIN的权限。

 



设为首页 | 加入收藏 | 联系站长 | 广告联系 | 最新文章 | 文章分类 
Copyright @ 青岛畅通网络公司 版权所有
公司地址:青岛市仙居路66号14#303 电话:0532-86068282 邮编:266071
Email:support@0532163.com