合理增加账户,确保系统的安全性

  在涉及到系统安全可靠这个问题时,我们可以考虑的问题很多。今天,我们就重点看一下怎样安全地增加账户和设置用户的外壳。

  向服务器增加用户账户

  在设置服务器时,我们经常会允许人们上传文件或者从服务器下载文件或消息。然而,我们却不想允许这些人访问整个服务器。实际上,在我们创建这些用户时,就可以限制这些用户的访问权限。

  要限制一个远程用户登录并且限制其访问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文件正是你执行这种操作的地方。