📄 00000017.htm
字号:
<BR> 第五栏:经过多少天之后,用户必须修改自己的口令。现在这个栏目是999999,说明 <BR>用户可以永远不修改自己的口令,这个账号也不会被冻结。 <BR> <BR> 第六栏:在口令修改期限到达之前多少天开始通知用户必须修改口令。 <BR> <BR> 第七栏:在口令修改期限到达之后多少天冻结用户账号。 <BR> <BR> 第八栏:从1970年一月一日到冻结账号的日期有多少天。 <BR> <BR> 第九栏:保留。 <BR> <BR> 如果你很关心用户的安全性,建议你使用这些栏目。 <BR> <BR> <BR> 在建立用户账号的时候,需要设置用户的缺省shell。你可以用useradd –s [shell的 <BR>名字]来设置这个,或者在建立用户账号之后用vipw程序修改他的登录shell。这个技术 <BR>经常被用来封禁用户账号,只要把用户的shell栏目清空或改成一个其它的无法执行的s <BR>hell,这个用户就无法使用telnet登录。类似的技术被用来封禁ftp权限,只要用户的s <BR>hell不列入/etc/shells文件,用户就无法使用自己的账号进行ftp存取。我们的办法是 <BR>写一个只有一行的shell文件: <BR> <BR> #! /etc/noshell <BR> <BR> exit <BR> <BR> 以后只要把用户的登录shell改成这个文件,用户就无法使用telnet和ftp进行登录。 <BR> <BR> 尽管Linux的缺省设置(bash,path,………)已经比许多其它的UNIX要友好得多,但 <BR>是许多情况下你仍然需要一些自定义的设置。在Linux中,如果/etc/skel目录存在,那 <BR>么adduser程序执行的时候会自动把这个目录下面的所有文件和子目录复制到新用户的宿 <BR>主目录下面。因此,你可以建立一组比较合适的配置文件和目录(.bashrc,.cshrc,. <BR>procmailrc,public_html,qmail的Maildir等等),放到/etc/skel目录下面,确定这 <BR>些目录的属主是root,权限被正确地设置,然后当建立新用户的时候,adduser程序会把 <BR>它们拷贝到用户的目录中并且自动把属主设置为新的用户,于是新的用户就得到了一个 <BR>正确的系统配置。 <BR> <BR> 也许你想要修改adduser程序的缺省设置。这可以用修改/etc/login.defs的办法来完 <BR>成。下面是一个范例性质的/etc/login.defs: <BR> <BR> MAIL_DIR /var/spool/mail <BR> <BR> PASS_MAX_DAYS 99999 <BR> <BR> PASS_MIN_DAYS 0 <BR> <BR> PASS_MIN_LEN 5 <BR> <BR> PASS_WARN_AGE 7 <BR> <BR> UID_MIN 500 <BR> <BR> UID_MAX 60000 <BR> <BR> GID_MIN 500 <BR> <BR> GID_MAX 60000 <BR> <BR> CREATE_HOME yes <BR> <BR> 这里面的定义一目了然。其中,UID_MAX,UID_MIN以及GID_MIN,GID_MAX显示的是ad <BR>duser对新用户设置uid和gid值范围。如果你想要建立一个uid比较小的系统账号,你需 <BR>要使用useradd的-r选项。 <BR> <BR> 在许多情况下,你需要向所有用户发出一些公告信息,一个办法是使用email向所有人 <BR>发信,另外一个办法是在用户登录的时候发出。后一项技术是通过在/etc目录下放一个 <BR>名字叫motd的文本文件实现的,例如,我们这样建立自己的/etc/motd: <BR> <BR> $cat /etc/motd <BR> <BR> I am testing.Never Mind. <BR> <BR> 那么,当用户登录系统的时候会出现这样的信息: <BR> <BR> Last login: Thu Mar 23 15:45:43 from 202.199.249.2 <BR> <BR> I am testing.Never Mind. <BR> <BR> [wanghy@mail ~]$ <BR> <BR> 还有另外一种情况,你想要对登录到系统内的所有用户发送一条信息。这可以用wall <BR>命令实现: <BR> <BR> $ wall I am Testing <BR> <BR> 那么用户的终端上会出现下面的信息: <BR> <BR> Broadcast message from root (pts/0) Thu Mar 23 16:16:13 2000... <BR> <BR> <BR> I am testing <BR> <BR> 作为系统管理员,你也许想要知道每个文件都在由哪个用户使用。在你需要强制拆卸 <BR>文件系统的时候,这个功能特别有用,这可以通过lsof命令完成: <BR> <BR> $lsof |more <BR> <BR> COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME <BR> <BR> init 1 root cwd DIR 3,1 4096 2 / <BR> <BR> ……………… <BR> <BR> csh 2338 wanghy txt REG 3,1 262152 80521 /bin/tcsh <BR> <BR> csh 2338 wanghy mem REG 3,1 344890 64406 /lib/ld-2.1 <BR>.2.so <BR> <BR> ……………… <BR> <BR> 显然,wanghy用户正在使用/lib/ld-2.1.2.so文件。 <BR> <BR> 9.8 系统升级和补丁程序 <BR> <BR> GNU模式下的所有事情都依赖于补丁程序。许多其它UNIX系统的用户嘲笑Linux的工作 <BR>方式是“每周升级一个内核”,不过,说实话,不断地升级和修正已有的错误总要比把 <BR>已知的错误放在那里等着服务器崩溃要好得多。许多其它UNIX系统没有这样多的补丁, <BR>原因很多,但是有一个很重要的问题是开发商总是希望用户对系统的缺陷报以“眼不见 <BR>为净”的态度。相反,Linux系统是提供源代码的,因此不断有人发现它的缺陷并且加以 <BR>改进。 <BR> <BR> 在Linux下面,修正程序的主要方式是对源代码打补丁,或者用标准的说法叫做“pat <BR>ch”。patch命令会从标准输入读入补丁的内容,与目标文件进行比较,然后修改目标文 <BR>件中对应的部分。这样说可能不容易理解,我们可以看一个范例性的patch文件: <BR> <BR> $cat bash-2.03-profile.patch <BR> <BR> --- bash-2.03/config-top.h.profile Mon Feb 22 14:37:17 1999 <BR> <BR> +++ bash-2.03/config-top.h Mon Feb 22 14:37:29 1999 <BR> <BR> @@ -3,6 +3,8 @@ <BR> <BR> /* This contains various user-settable options not under the control of <BR> <BR> autoconf. */ <BR> <BR> <BR> +#define NON_INTERACTIVE_LOGIN_SHELLS <BR> <BR>+ <BR> <BR> /* Define CONTINUE_AFTER_KILL_ERROR if you want the kill command to <BR> <BR> continue processing arguments after one of them fails. This is <BR> <BR> what POSIX.2 specifies. */ <BR> <BR> 其实真正的应该注意的行只有里面用---和+++开始的行。这两行的含义是,以+++开头 <BR>的行中指出的文件应该被修改,修改的方法就是按照下面的说明,说实话,你并不需要 <BR>了解patch文件的详细语法,那是开发者的任务,你真正需要的是如何在已有的代码上使 <BR>用patch。 <BR> <BR> 要使用patch文件,可以使用patch命令,例如,我们进入到bash-2.03的源代码目录, <BR>然后: <BR> <BR> $patch < ../bash-2.03-profile.patch <BR> <BR> patching file `config-top.h' <BR> <BR> 这个信息的出现说明patch文件已经被正确地读入,修改了需要打补丁的文件。 <BR> <BR> 在使用patch的过程中,最容易发生的问题是弄错了目录。patch文件的目录设定比较 <BR>怪异。比如说,像上面的那个patch,文件路径名是bash-2.03/config-top.h,那么,我 <BR>们应该在哪个目录下执行patch命令?bash-2.03的父目录吗?否!必须在bash-2.03目录 <BR>下执行。如果执行时你的目录不正确,你就会得到这样的信息: <BR> <BR> $patch < bash-2.03-profile.patch <BR> <BR> can't find file to patch at input line 3 <BR> <BR> Perhaps you should have used the -p or --strip option? <BR> <BR> The text leading up to this was: <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -