|
在涉及到系统安全可靠这个问题时,我们可以考虑的问题很多。今天,我们就重点看一下怎样安全地增加账户和设置用户的外壳。
向服务器增加用户账户
在设置服务器时,我们经常会允许人们上传文件或者从服务器下载文件或消息。然而,我们却不想允许这些人访问整个服务器。实际上,在我们创建这些用户时,就可以限制这些用户的访问权限。
要限制一个远程用户登录并且限制其访问shell(通过SSH,telnet,或其它登录服务),我们可以为一个用户设置默认的shell为nologin。例如:
# useradd -s /sbin/nologin jerryb
在将其shell设置为nologin之后,这个用户就不能登录到服务器来打开一个shell。不过,用户仍然能够使用这个账户登录到服务器上的FTP服务(如果此服务器可用并且此用户拥有一个口令)。默认情况下,此例中,用户通过FTP方式登录时的起始目录(home directory)将会是/home/jerryb。另一个只能访问服务器上的FTP服务的方法是,使用/usr/lib/sftp服务器作用一个用户的登录shell。虽然这会允许用户访问对用户可用的整个文件系统,它却限制其只能通过安全的FTP访问服务器。
Web主机的一个通用作法是允许用户在服务器中放置内容,通常是通过利用FTP(但并非shell登录)放置在那个用户的/home/username/public_html目录中。但是,管理员能够选择将Web内容的位置指定到任何一个目录,包括系统范围内的Web服务器目录。下面的命令为用户webuser指定了/var/www/html为其起始目录(为了让此命令生效,我们还应该将文件的所有权改为属于webuser):
# useradd -s /sbin/nologin -d /var/www/html webuser
如果你想增加一个账户,使其只能访问电子邮件服务,也可以选择防止对FTP的任何访问。其中的一个方法是将用户的起始目录指向/dev/null。例如:
# useradd -s /sbin/nologin -d /dev/null jerryb
在设置好受限的用户账户之后,你还可以利用与特定服务相关的特性,进一步定义服务器上用户能访问的服务和不能访问的服务。
为用户配置Shell
允许为每一个用户个别地定制其shell启动文件是一个相当灵活而实用的方法。不过,有时我们需要比这种方法更加集中化的控制。你可能会拥有一个环境变量或者你想为每一个用户设置的其它shell设置(无一例外地进行)。如果你为每一个单独的shell增加这种设置,用户就可以拥有编辑这个文件并清除它的能力。进一步讲,如果这个设置要在将来做出改变,你就必须在每一个用户的shell启动文件中改变它。
幸运的是,有一种更好的方法。我们有默认的可以适用于计算机所有用户的启动文件,并且在读取特定用户的文件之前,命令外壳先读取默认的启动文件。在bash命令外壳这种情况中,它会在做执行任何其它操作之前,先读取/etc/bashrc文件。
与此类似的是,在处理用户home目录中的.cshrc 或者 .tcshrc文件之前,tcsh外壳先读取/etc/csh.cshrc文件。如下例中的/etc/csh.cshrc文件即适用于Fedora 和 RHEL:
# /etc/cshrc
#
# csh configuration for all shell invocations.
# by default, we want this to get set.
# Even for non-interactive, non-login shells.
[ 'id -gn' = 'id -un' -a 'id -u' -gt 99 ]
if $status then
umask 022
else
umask 002
endif
if ($?prompt) then
if ($?tcsh) then
set prompt='[%n@%m %c]$ '
else
set prompt=['id -nu'@'hostname -s']$
endif
endif
/etc/cshrc 和/etc/bashrc设置了多种外壳环境选项。如果你想增加或修改系统中为每一个用户提供的外壳环境,那么/etc/bashrc 或者 /etc/cshrc文件正是你执行这种操作的地方。
热门推荐: |
小心路由器故障威胁你的网络 |
综合布线基础知识及实用案例分析 |
【责任编辑 王凡】
|
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |