二、创建用户账号
创建用户账号有许多种方法,可以一次创建一个账号,也可以一次建多个账号。
使用useradd命令创建账号
在Red HatLinux中执行useradd命令,可创建新的用户帐号:
[root@free root]# useradd benny ←创建benny账号
[root@free root]# passwd benny ←设置口令
Changing password for user benny
New password: ←输入口令
Retype new password ←再输入一次
Passwd:all authentication ←设置成功
在一个系统中,用户的账号名称必须是唯一的,假若要创建的账号先被他人占用,这会出现用户已存在的信息:
[root@free root]# useradd benny
Useradd: user benny exists
[root@free root]# useradd lambert
Useradd: user lambert exists
要解决用户账号的管理问题,需要依靠系统管理员本身。一般说来有3种方法:
管理员自己根据用户的账号来创建一份数据库,以后在新增用户之前,都可以利用数据库先查询账号存在与否。
检查/etc目录下的passwd文件,该文件内含本系统所有用户的账号,管理员可确认账号是否已经存在。
执行finger“账号”命令,查看该账号是否存在。
三、管理员账号
安装完Linux之后,系统默认即创建了root账号。此账号为系统管理员,对系统拥有完全的控制权,可对系统做任何设置和修改,所以维护root账号的安全格外重要。
1.设置root账号的口令
在安装Linux过程中,即要求安装者为root账号设置口令。管理员可在日后更改甚至取消口令。不过,除非整个Linux系统只有自己使用,否则强烈建议替root账号设置一个不易被破译的口令。
在x window下面单击主菜单,执行“系统设置/根命令”命令,在图形界面下比较直观与Windows大致雷同。
图为:在图形界面下设置一般用户账号
拥有root账号的系统管理员除了设置口令之外,建议先替自己创建一个一般的用户的账号,供日常操作使用,如此可避免因操作失误而影响整个系统。最好等到系统需要维护时,再使用root账号登陆。
四,只允许root登陆的维护模式
如果希望这台计算机除了root账号之外,其他账号都不得登陆时,可在/ect目录中执行touch nologin命令,产生一个文件名为nologin的文件,当其他用户要登陆时,系统只要发现此文件存在,就会禁止他们登陆:
Red HatLinuxrelease 9 (Shrike)
Kernel 2.4.20-8 on an 686
free login benny ← 用benny账号登陆
Password: ← 输入正确的口令
Login incorrect ← 即使输入正确也会登陆失败
login ← 重新返回到登陆界面
这种状态通常用于管理员要维护系统时。若要再度恢复用户登陆,则只要将nologin文件删除即可。
五,停用与删除用户账号
当用户毕业、离职、或逾期不缴费时,可以考虑停用或删除用户账号,以避免这些用户继续登陆系统。
1,停用账号
将账号停用的意思是暂时不允许用户登陆系统,但仍然保留其数据。可编辑/ect/passwd文件,要把停止使用的账号标注起来:
cassia:x:502:502::/home/cassia:/bin/bash
#silent:x:600:100::/home/silent/bin/bash ←在账号最前面加上“#”
2,删除账号
当确定用户已不再需要使用本系统,或列为拒绝来往用户时,可以考虑将该账号完全删除。
1,使用userdel命令或编辑passwd与shadow文件
使用userdel命令可以很方便地将用户删除,范例如下:
[root@free root]# userdel –r silent
加上参数“-r”表示删除账号时,一并将该账号的用户的用户目录及邮件文件都删除。若不加“-r”参数,则只会删除而保留该账号的相关目录。
当然也可编辑passwd和shadow文件,直接将账号删除,随后删除账号该账号的主目录与邮件目录。
删除后台执行程序
为避免用户还有程序遗留在系统中,请执行下列命令检查后台执行的程序,并把在后台中执行的程序删除:
[root@free root]# ps aux grep “silent”
删除计时器
此外还有一点相当重要,就是要将用户所设置的计时器去掉。在Linux系统中,用户可以自行设置计时器,时间一到就自动执行某些命令。这些计时器所执行的命令,有的可能会影响系统的安全与保密,因此必须特别注意用户所留下来的计时器。执行下列命令检查计时器:
[root@free root]# crontab –u silent -1
当发现用户自行设置的计时器还在系统中时,直接执行crontab –u silent –r 命令,便能删除该用户的计时器文件。
六,创建组
创建组的方法和创建账号几乎相同,且过程更简单。可执行groupadd命令来创建组。例如要创建GID编号700、名称为staff的组:
[root@free root]# groupadd –g 700 staff ← 执行命令
[root@free root]# more/etc/group ← 查看结果
…
Lambert:x:501
Cassia:x:502
Staff:x:700 ← 加进来了
参数-g用来指定组标识符,0~499则留给系统使用。若省略此参数,系统会自动指定GID,使用从编号500开始尚未用掉的号码。
七,删除组
当不在需要某一个组时,可执行groupdel命令删除组(再删除某个组前,要执行find/-group组名称命令,检查系统中隶属于该组的目录及文件,并利用chown命令改变其所属组):
[root@free root]#groupdel staff
第二部分 磁盘空间管理
由于Linux是多用户的操作环境,如果任由每个用户存放文件而不加限制,磁盘空间将迅速消耗,很快便无法使用。Quota的功能就是去限制用户运用的磁盘空间。在系统尚未设置磁盘空间时,可用执行quota命令检查自己的磁盘使用空间,若出现下列信息,则表示没有限制:
[lambert@free lambert]$ quota
Disk quotas for user lambert (501):none ← 无限制
这表示用户lambert可以任意堆放文件,直到塞满整个磁盘为之,这样将造成其他用户都无法储存数据。为了避免这种毫无节制、滥用空间的灾难发生,本节将讨论如何为用户设置磁盘空间的限制。
一,编辑fstab文件
用文本编辑程序打开/etc/fstab 文件,其内容如下:
编辑ext3文件系统原生分区的设置表示要创建用户与组的磁盘空间限制:
LABEL=//ext3 defaults,usrquota,grpquota 1 1 ← ext3文件系统分区
倘若只要限制用户或组的磁盘空间,则只需要加上usrquota或grpquota其中一项即可,保存文件后退出,请重新启动。
对fstab文件中各字段的代表意义有兴趣者,可执行man fstab和man mount命令来查看相关信息。
二,生产配置文件
修改fstab文件后,请先在系统根目录下执行touch aquota.user与touch aquota.group命令,自行创建aquota.user及aquota.group两个文件,接着执行quotacheck命令设置:
[root@free root]# quotacheck –ugavmc
Quotacheck: Scanning / dec/ hda1[/]done
Quotacheck: Checked 10064 directories and 202332 files
以下是用于quotacheck命令的参数说明:
-a参数:扫描fstab文件加入quota设置的分区。
-d参数:详细显示命令执行过程,便于调试或了解程序执行的情形。
-g参数:扫描磁盘空间时,计算每个组标识符(GID)所占用的目录和文件数目。
-v参数:标识命令执行过程。
-m参数:强制执行命令。
-c参数:不读取已经存在的aquota数据库,重新扫描硬盘并保存。
进行如上操作后然后重新启动,并设置用户的磁盘空间。
三,执行quotaon
要取消磁盘空间的限制,执行quotaoff -avug命令即可。范例如下:
[root@free root]# quotaoff –avug
/dec/hda1[/]:group quotas turned off
/dec/hda1[/]:user quotas turned of
四,检查是否超过磁盘限制
一般的用户执行 quota –v命令,可知自己是否超过限制:
[lambert@free lambert]# quota –v
Disk quotas for user lambert(501):
……
第三部分 文件系统与权限设置
当所有人都把目光投注在操作系统身上时,却常常忘记了一个极为重要的配角――文件系统。文件系统的优劣与否和操作系统的执行效率、稳定性以及可靠度息息相关。
一,认识系统的目录
在安装Linux的磁盘中会有很多系统默认的目录,这些目录依照不同的用途而放置特定的文件。在前面已经简单介绍过一些常用的目录,以下将详细说明每一个默认目录的功能:
/: 根目录,包含整个Linux系统的所有目录和文件。
/bin:此目录放置操作系统时所需要使用的各种命令程序。例如cp、rpm、kill、tar、mv、rm与ping等常用命令,还有各种不同的Shell,如bash、bash2、tcsh等。
/dev:存放界面设备代号的文件。例如硬盘的/dev/had、终端机等。这些文件比较特殊,他们实际上都指向所代表的界面设备。
/etc:存放与系统设置、管理相关的文件。例如记录账号名称的passwd文件、投影口令文件shadow都放在这里。
/etc/X11:X Window 配置文件的目录。
/etc/rc.d:这个目录包含了启动或关机时所运行的script文件。
/home:此目录默认用来设置用户账号的主目录。
/lib:放置一些共享的函数库。
/lib/modules:存放系统内核的模块。某些可被模块化的部分,并不需要在编译系统内核本体,避免内核过大导致效率较低。
/lost+found:文件系统发生问题时,Linux会自动扫描磁盘试图修正错误,倘若找到遗失或错误的区域,就会将这些区域转成文件存放于目录中,等候管理员来进一步处理。
/misc:默认空无一物,供管理员堆放公共杂物。默认权限时全部用户都可以读取和执行文件,但是只有管理员能够写入文件。
/mnt:此目录下默认有/mnt/cdrom和/mnt/floppy两个目录,用来作为光盘与软件的加载点.
/proc:系统内核和执行程序之间的信息,如执行ps、free等命令时所看到的信息,就是从这里读取。这目录内的文件并非真的存在,用户看到的虚拟文件。
/root:系统管理员专用的目录,即root账号的主目录。
/sbin:此目录存放启动系统需运行,例如 fsck、init、grub、lilo与swapon等
/tmp:供全部用户暂时放置文件的目录。系统默认可让所有用户读取、写入和执行文件,因此对于一般用户来说,若觉得自己的磁盘空间不够使用,便可暂时利用此目录存放文件。这里也是临时文件的目录,某些程序在执行中说产生的临时文件会存放在这个目录内。
/usr:此目录包括许多子目录,用来存放系统命令。程序等信息。
/usr/bin:放置用户可以执行的命令程序,如find、free、gcc等。
/usr/share/doc:存放各种文件的目录。
/usr/share/man:放置多种帮助文件。
/usr/src:存放源代码的地方,Linux系统内核的源代码就放在此目录下。
/var:系统执行时,需要暂时记录存放的数据或临时文件,都会放置在这个目录里。
/var/tmp:前面介绍的/tmp目录除了放置所有用户暂时存放的文件之外,还提供给程序产生的临时文件使用,因此经常会因对方许多文件,而显得非常杂乱。管理员通常会定时清理/tmp目录,维护磁盘空间的整洁。加入不想将某些文件混入/tmp目录中,可以选择存放在这里。
二,文件属性
d:表示这是一个目录。在ext3中,目录被视为一种特殊的文件。
-:表示这是一个普通的文件
l:表示这是一个符号链接的文件,实际上它指向另一个文件。
b、c:分别代表区块设备和其他的界面设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和通道,通常很少见到。
1,一般权限
r (read,读取):对文件而言,用户具有读取文件内容的权限。对目录而言,用户拥有浏览目录内容的权限。
w (write,写入):对文件而言,用户具有修改文件内容的权限。对目录而言,用户具有删除或移动目录内文件的权限。
x(execute,执行):对文件而言,用户具有执行文件的权限。对目录而言,用户具有进入目录的权限。
2,特殊权限
其实文件与目录的权限设置不只如此,还有所谓的特殊权限存在。属于特殊权限会拥有一些“特权”,因而用户若无特殊需求,不应该去打开这些权限,避免安全方面出现严重漏洞,让黑客入侵。
设置UID,S(SUID, Set UID):可执行的文件若搭配这个权限,该文件便能得到权限,可以任意存取文件所有者能使用的全部系统资源。
设置GID,S(SGID,Set GID):应用在文件上面,其效果和SUID相同,只不过将范围由文件所有者扩大成组。也就是说,拥有此权限的文件,可以任意存取整个组所能使用的系统资源。
三,用户与组的权限关系
假如用户lambert属于cassia组,其用户主目录的权限设为rwxr-x—x,表示统属cassia组的用户,可以读取和记入这个目录,其他用户则只能进入该目录,但完全看不到任何内容。
因而属于其他组的用户saber,就无法读取lambert目录中的文件。但若将/etc目录下的group文件内容作些修改,情况就不同了:
…
postfic:x:89:
pvm:x:24:
cassia:x:501:lambert,saber ← 将saber账号加入cassia组
saber:x:502:
四,检查inode编号
链接的文件实际上都是指向磁盘中相同的数据,因为每个文件仅占用一个inode,所以他们的inode编号应该一样。执行ls –i命令来查看文件的inode编号:
[lambert@free lambert]$ ls –i LambertLink
10423 LambertLink
[lambert@free lambert]$ ls –i /tmp/var/ForEveryOne
10423 /var/tmp/ForEveryOne
从上面的结果可看出这两个文件的inode编号一样的,倘若是用复制而非连接的方法,便会是两个不相干的文件,各自拥有inode编号。
[lamnert@free lambert]$ ls –I LambertFile
366955 LambertFile ←这个文件的inode是366955,而ForEveryOne的是10423