一. Linux的账号与用户组
1. 怎样登入 Linux 主机?当我们在主机前面或者是以 telnet 或者 ssh 登入主机时,系统会出现一个 login 的画面让你输入账号,这个时候当你输入账号与密码之后, Linux 会:
(1). 先找寻 /etc/passwd 里面是否有这个账号?如果没有则跳出,如果有的话则将该账号对应的 UID 与 GID 读出来,另外,该账号的家目录与 shell 设定也一并读出;
(2). 再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
(3). 如果一切都 OK 的话,就进入 Shell 控管的阶段啰!
2. 用户识别:UID 与 GID
每一个文件都会有所谓的UID 与GID,然后系统会依据 /etc/passwd 的内容,去将该档案的拥有者与群组名称,使用账号的形式来秀出来!我们可以作个小实验,你可以以 root 的身份 vi /etc/passwd ,然后将你的一般身份的使用者的 ID 随便改一个号码,然后再到你的一般身份的目录下看看原先该账号拥有的档案,你会发现该档案的拥有人变成了『数字了』呵呵!这样可以理解了吗?
[root @test /root]# vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
test:x:500:500:test user:/home/test:/bin/bash <==将 500 改成 510
[root @test /root]# cd /home/test
[root @test test]# ll
-rw-rw-r-- 1 500 test 12542 Apr 12 11:22 test
看上面,拥有者变成了数字了!
既之前test拥有这个文件,但是test改了UID之后,这个文件找不到UID=500的这个用户了,所以只能用数字来表示。
3. 用户账号: /etc/passwd 文件与 /etc/shadow 文件
由上面的说明您大概已经知道,嘿嘿!账号管理最重要的两个文件就是『 /etc/passwd 与 /etc/shadow 』了!这两个文件可以说是 Linux 里头最重要的档案之一了!如果没有这两个文件的话,您可是无法登入 Linux 的呦!
3.1 passwd 的构造
这个档案的构造是这样的:每一行都代表一个账号,有几行就代表有几个账号在你的系统中!不过需要特别留意的是, 里头很多账号本来就是系统中必须要的(例如 bin, daemon, adm, nobody 等等),请不要随意的杀掉他!!root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
我们先来看一下 root 这个系统管理员这一行好了,你可以明显的看出来,每一行使用
『:』分隔开,共有七个,分别是
(1).账号名称:就是账号名称啦!对应 UID 用的!例如 root 就是预设的系统管理员的账号名称;
(2).密码:早期的 Unix 系统的密码是放在这个档案中的,不过由于这样一来很容易造成数据的被窃取,所以后来就将数据给他改放到 /etc/shadow 中了,这一部份等一下再说,而这里你会看到一个 x ,呵呵!别担心密码已经被移动到 shadow 这个加密过后的档案啰;
( 3).UID:这个就是使用者识别码(ID)啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下:0 系统管理员,所以当你要作另一个系统管理员账号时,你可以将该账号的 UID 改成 0 即可;
1~499 保留给系统使用的ID,其实 1~65534 之间的账号并没有不同,也就是除了 0 之外,其它的 UID 并没有不一样,预设 500 以下给系统作为保留账号只是一个习惯。这样的好处是,以 named 为例,这个程序的预设所有人 named 的账号 UID 是 25 ,当有其它的账号同样是 25 时,很可能会造成系统的一些小问题!为了杜绝这样的问题,建议保留 500 以前的 UID 给系统吧!
500~65535 给一般使用者使用!
UID 为 0 的时候,就是 root 呦!所以请特别留意一下你的 /etc/passwd 档案!
(4).GID:这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范 group 的而已!
(5).说明:这个字段基本上并没有什么用途,只是用来解释这个账号的意义而已!不过,如果您提供使用 finger 的功能时,这个字段可以提供很多的讯息呢!底下的 chfn 可以解释一下啰!
(6).家目录:这是使用者的家目录,以上面为例, root 的家目录在 /root ,所以当 root 登入之后,马上在的所在就是 /root 里头啦!呵呵!如果你有个账号的使用空间特别的大,你想要将该账号的家目录移动到其它的硬盘去,没有错!可以在这里进行修改呦!预设的使用者家目录在 /home/yourIDname!
3.2 shadow 的构造
由于 /etc/passwd 并不安全,所以后来发展出将密码移动到 /etc/shadow 这个文件中,并且加入了很多密码限制参数在 /etc/shadow 里头!我们来了解一下这个档案的构造吧!
root:$K.K2.hqu.QfV.dkjjteojiasdlkjeo:11661:0:99999:7:::
bin:*:11661:0:99999:7:::
daemon:*:11661:0:99999:7:::
adm:*:11661:0:99999:7:::
这是 shadow 的形式,也同样的以
『:』作为分隔的符号。数一数,共可以发现有九个字段,分别给他说明如下:
(1).账号名称:这个跟 passwd 需要对应!也就是跟 passwd 相同的意思啦!
(2).密码:这个才是真正的密码,而且是经过编码过的密码啦!你只会看到有一些特殊符号的字母就是了!需要特别留意的是,虽然这些加密过的密码很难被解出来,但是『很难』不等于『不会』,所以,这个档案的预设属性是『-rw-------』亦即只有 root 才可以读写!你得随时注意,不要不小心更动了这个文件的属性!另外,如果是在密码栏的第一个字符为『 * 』表示这个账号并不会被用来登入的意思。所以万一哪一天你的某个使用者不乖时,可以先在这个档案中,将他的密码多加一个 *!嘿嘿!他就无法使用该账号啰!直到他变乖了,再给他启用啊!
(3).上次更动密码的日期:这个字段记录了『更动密码的那一天』的日期,不过,很奇怪呀!在我的例子中怎么会是 11979 呢?呵呵,这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 ,而 1971 年 1 月 1 日则为 366 啦!所以这个日期是累加的呢!得注意一下这个资料呦!那么最近的 2002 年 1 月 1 日就是 11689 啦,了解了吗?(4).密码不可被更动的天数:第四个字段记录了这个账号的密码需要经过几天才可以被变更!如果是 0 的话,表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码呦!
(5).密码需要重新变更的天数:由于害怕密码被某些『有心人士』窃取而危害到整个系统的安全,所以有了这个字段的设计。你必须要在这个时间之内重新设定你的密码,否则这个账号将会暂时失效。而如果像上面的 99999 的话,那就表示,呵呵,密码不需要重新输入啦!不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码呢!
(6).密码需要变更期限前的警告期限:当账号的密码失效期限快要到的时候,系统会依据这个字段的设定,发出『警告』言论给这个账号,提醒他『再过 n 天你的密码就要失效了,请尽快重新设定你的密码呦!』,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。
(8).账号取消日期:这个日期跟第三个字段一样,都是使用 1970 年以来的日期设定。这个字段表示:这个账号在此字段规定的日期之后,将无法再使用。这个字段会被使用通常应该是在『收费服务』的系统中,你可以规定一个日期让该账号不能再使用啦!
(9).保留:最后一个字段是保留的,看以后有没有新功能加入。
这个 /etc/shadow 是很重要的数据,千万不能遗失也不能被 root 以外的人看到或修改!尤其是密码栏,因为很早之前就已经发明了『暴力计算』密码的程序,如果你的密码被看过了,则别人可以利用该程序去演算出你的真实密码,呵呵,到时候可就伤脑筋了!切记切记!
注意事项:密码忘记或者被更动了?
有的时候会发生这样的情况,就是说,你的 root 密码忘记了!要怎么办?重新安装吗?另外,有的时候是被入侵了, root 的密码被更动过,该如何是好?
这个时候就必须要使用到 /etc/shadow 这个数据了!我们刚刚知道密码是存在这个档案中的,所以只要你能够以软盘开机,进入『单人维护系统』,那么就可以不用输入密码来以 root 的身份登入(通常就是在 boot: 时输入 linux single 就是了!)然后进入 /etc/shadow 这个档案中,将 root 的密码这一栏全部清空!然后再登入 Linux 一次,这个时候 root 将不需要密码(有的时候需要输入空格符)就可以登入了!这个时候请赶快以 passwd 设定 root 密码即可!
认识账号与密码是使用 /etc/passwd 与 /etc/shadow ,那么认识 group 就是 /etc/group 与 /etc/gshadow !
4.1 /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
这个内容也说明如下:
(1).群组名称:就是群组名称啦!
(2).群组密码:通常不需要设定,因为我们很少使用到群组登入!不过,同样的,密码也是被纪录在 /etc/gshadow 当中啰!
(3).群组 ID:就是所谓的 GID 啦!(4).支持的账号名称:这个群组里面的所有的账号,如上面所言,如果你想要让 mysccount 也属于 root 这个群组的话,那么就将上面的第一行最后面加上 ,myaccount (不要有空格)使成为『root:x:0:root,myaccount』就可以啦。
root:::root
bin:::root,bin,daemon
daemon:::root,bin,daemon
sys:::root,bin,adm
adm:::root,adm,daemon
一般来说,group password 是用来让那些不在 group 中的成员,临时加入 group 用的,有兴趣的话可以使用 man newgrp 了解一下他的用法!不过,因为牵涉到 "密码",不好管理,因此很少用。真想让对方加入,不如将对方加入该群组,用密码反而不方便。
二. 账号管理
1. 新增与删除用户:useradd, 相关设置文件, passwd, usermod, userdel
1.1 新增用户:useradd
语法:
[root @test /root ]# useradd [-u UID] [-g GID] [-d HOME] [-mM] [-s shell] username
参数说明:
-u :直接给予一个 UID
-g :直接给予一个 GID (此 GID 必须已经存在于 /etc/group 当中)
-d :直接将他的家目录指向已经存在的目录(系统不会再建立)
-M :不建立家目录
-s :定义其使用的 shell
范例:
[root @test /root]# useradd testing
<==直接以预设的数据建立一个名为 testing 的账号
[root @test /root]# useradd -u 720 -g 100 -M -s /bin/bash testing
<==以自己的设定建立账号
说明:
这个指令能够变更的档案可多了!包括了底下的各个档案:
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/skel
/etc/default/useradd
/etc/login.defs
1.2 相关设置文件
建立账号的时候,如果没有特殊的设定,通常我们只使用『 useradd username 』就可以建立一个名为 username 的账号了!不过你知道预设的账号的基本设定吗?基本设定就在/etc/login.defs 与 /etc/default/useradd 这两个档案中!
在 login.defs 里头有点像底下这样:
MAIL_DIR /var/spool/mail <==邮件预设目录摆放处
PASS_MAX_DAYS 99999 <==密码需要变更的时间
PASS_MIN_DAYS 0 <==密码多久需要变更
PASS_MIN_LEN 5 <==密码的最小长度(这个可以改大一些吧!)
PASS_WARN_AGE 7 <==密码快要失效之前几天发警告讯息?
UID_MIN 500 <==预设帐号最小起算的 UID 数目(最小为 500 )
UID_MAX 60000 <==最大的 UID 限制
GID_MIN 500 <==GID 限制
GID_MAX 60000 <==GID 限制
CREATE_HOME yes
<==是否建立家目录,预设是要建立家目录(若为 mail server 可以取消此项目)
几乎可以设定的都在这里设定了!所以需要了解一下这个档案!另外,如果你是专门开启 mail server 的,那么由于使用者账号不需要登入主机,所以也就不需要给予家目录,这个时候最后一项 GREATE_HOME 或者可以设定为 no !此外,当你以预设的数据建立账号时,该账号的 UID 将会取目前在 /etc/passwd 当中『最大的(其实是小于 60000)』那一个 UID + 1 即是预设帐号的 UID 啰!
而至于 useradd 内容则为:
GROUP=100 <==预设的使用者群组为 100 ,查看一下 /etc/group 时,这个群组名称为 users 呢!
HOME=/home <==预设使用者的家目录建立的目录
INACTIVE=-1 <==是否不启动,设定为 -1 自然就是启动啦!
EXPIRE= <==是否需要设定『死亡』时间?如果你希望该用户在期限到之后就不许登入,此项可以设定天数。
SHELL=/bin/bash <==预设的 Shell 为何?
SKEL=/etc/skel <==使用者家目录的内容!
在这个项目中,最需要了解的就是 SKEL 啦!当你建立一个名为 testing 的账号时,预设的家目录会是『 /home/testing 』这个目录,而这个目录的内容就是由 /etc/skel 所 copy 过去的!所以『当你想要让使用者的预设家目录内容更动时,可以直接将要更动的数据写在 /etc/skel 当中!』
1.3 设置用户密码:passwd
语法:
[root @test /root]# passwd [username]
范例一:test 自己修改密码
[test @test /root]# passwd
范例二:root 要帮test修改密码
[root @test /root]# passwd
testChanging password for user testNew
password: <==输入密码
BAD PASSWORD: it is based on a dictionary wordRetype
new password: <==再输入一次!
passwd: all authentication tokens updated successfully
说明:
这个指令可以修改使用者的密码!要注意的是,这个 指令在 /bin/passwd 中,而 账号所存放的地方在 /etc/passwd中,是不一样的呦!搞清楚呦!
一般使用者的用法是直接输入 passwd 即可;
root 可以使用 passwd [username] 来替 username 这个账号取一个新的密码!
1.4 修改账号相关数据:usermod
[root@linux ~]# usermod [-cdegGlsuLU] username
1.5 删除用户:userdel
语法:
[root @test /root ]# userdel [-r] username
参数说明:
-r :将该账号的[home directory]一并删除!
范例:
[root @test /root]# userdel testing
<==只有砍掉 /etc/passwd 与 /etc/shadow 的该账号内容;
[root @test /root]# userdel -r testing
<==连该账号的 /home/testing 砍掉!
说明:
这个指令下达的时候要小心了!通常我们要移除一个账号的时候,你可以手动的将 /etc/passwd 与 /etc/shadow 里头的该账号取消即可!一般而言,如果该账号只是『暂时不启用』的话,那么将 /etc/shadow 里头最后倒数一个字段设定为 0 就可以让该账号无法使用,但是所有跟该账号相关的数据都会留下来!使用 userdel 的时机通常是『你真的确定不要让该用户在主机上面使用任何数据了!』
2. 用户功能:chfn, chsh, finger, id
2.1 更改用户的shell:chsh
语法:
[root @test /root ]# chsh [-l] [-s shellname]
参数说明:
-l :列出目前系统上可用的 shell,其实就是 /etc/shells 的内容
-s :改变目前的 shell 成为 shellname
范例:
[test @test /root]# chsh -l <==列出本机上所有能用的 shell 名称
/bin/sh
/bin/bash
/bin/ash
/bin/bsh
/bin/csh
[test @test /root]# chsh -s /bin/csh <==test 这个用户自行改变自己的预设 shell
说明:
这是用来改变使用者自己的 shell 的指令!
2.2 修改个人属性:chfn
语法:
[root @test /root ]# chfn [-foph]
参数说明:
-f : 后面接完整的名字
-o : 办公室的房间号码
-p : 办公室的电话号码
-h : 家里的电话号码
范例:
[test@test test]$ chfn
Changing finger information for test.
Password: <==为了防止账号被乱动,所以需要输入这里输入密码确认
Name [Testing]: Testing <==这里输入你要显示的『昵称』
Office []:
Office Phone []:
Home Phone []:
Finger information changed.
说明:
这个指令说实在的,除非是你的主机有很多的用户,否则倒真是用不着这个程序!这就有点像是 bbs 里头更改你『个人属性』的那一个资料啦!
2.3 查看用户相关信息:finger
语法:
[root @test root]# finger [-s] username
参数说明:
-s :使用长串数据输出格式
范例:
[root @test root]# finger test
Login: test Name: Testing user
Directory: /home/test Shell: /bin/bash
Office: 06-123-1234, 06-123-1234 Home Phone: 06-123-1234
Never logged in.
No mail.
No Plan.
[root @test root]# finger –s test
Login Name Tty Idle Login Time Office Office Phone
test Testing user * * No logins 06-123-123 06-123-1234
说明:
finger 的用法也是真的很简单,就是直接给他 finger username 就可以知道任何一个人的相关信息了!而这个相关的讯息基本上都是写在 /etc/passwd 里面,当然,里面还搜寻了 /var/spool/mail 这个邮件放置的地点,所以还会显示出是否有邮件的讯息呢!
2.4 查询某人或自己的相关 UID/GID 信息:id
语法:
[root @test root]# id [username]
范例:
[root @test root]# id
uid=0(root) gid=0(root) groups=0(root)
[root @test root]# id test
uid=501(test) gid=501(test) groups=501(test)
说明:
直接输入 id 就可以知道目前这个账号的 UID, GID 与所属的群组!
3. 新增与删除用户组
3.1 新增用户组:groupadd
语法:
[root @test /root ]# groupadd [-g GID] groupname
参数说明:
-g GID :自行设定 GID 的大小
范例:
[root @test /root]# groupadd -g 55 testing<==设定一个群组,GID为 55
说明:
这个指令会增加群组呢!而作用到的档案只有『/etc/group 与 /etc/gshadow』这两个档案,说实在的,你也可以直接修改这两个档案就好了,根本不需要使用到这个指令的!使用 vi 修改上面两个档案还比较简单呢!另外,如果你要新增的使用者所要的群组并不存在于系统中,那么您在增加使用者账号之前,就必须要先新增群组啰!
3.2 删除用户组:groupdel
语法:
[root @test /root ]# groupdel groupname
参数说明:
范例:
[root @test /root]# groupdel testing
说明:
这很简单的,就是将 group ID 给他杀掉去!不过,有一点必须要特别留意,就是『在杀掉群组之前,请 先将该群组的 primary 使用者删除!』才好!那什么是 Primary 的使用者呢?说穿了也很简单啦!就是 /etc/passwd 里面,那个 GID 设定为这个群组的 GID 的那个使用者就对啦!
4. 密码管理:passwd
语法:
[root @test /root]# passwd [-lunxwS] usrename
参数:
-l : 将username账号的密码锁住
-u : 将-l的lock解开
-n : 最短天数
-x : 最长天数
-w : 警告天数
-S : 显示当前这个username 的相关信息
二. 切换用户身份
1. su
语法:
[root @test /root ]# su [-lcm] [username]
参数说明:
- : 使用su - 时, 表示该用户想要变换身份为root,且使用root的环境设置参数文件。
-l : 后可以接用户,如su -l test, 这个-l的好处是,可使用变换身份者的所有相关环境变量
-m : 使用当前环境设置
-c : 后面可以加上命令
范例:
[test@test test]$ su
Password: <==输入 root 的密码
[root@test test]# <==身份变成 root 了!
[root@test test]# exit <==离开 su 的环境!
[test@test test]$ su - <==连环境参数档案都是读取 root 的!
[root@test root]# su test <==将 root 的身份改为 test ,且不需要输入密码喔!
说明:
su 的使用真的很简单,输入 su 之后,直接给他输入 root 的密码,此时您就是 root 了!但是需要特别留意的是:
虽然您已经是 root 的身份,但是 您的环境当中,还是属于当初登入的那个使用者!例如我以 test 登入 Linux ,再以 su 切换身份成为 root ,但是我的 mail, PATH 及其它一些相关的环境变量,都还是 test 这个身份呢!
至于环境变量当中,最麻烦的当属 PATH 这个东西,因为为了避免一般使用者使用了 root 的管理指令,所以通常 Linux 都会将指令分类放在两个主要的目录,分别是 /bin 与 /sbin !那个 /sbin 大多是 super user就是 root 用来管理系统的指令啦!所以,可能的话,将 test 的 PATH 重新设定成为 root 的 PATH ,这样也比较方便呀!
如果要全部的环境变量均使用 root 的设定档,这个时候必需使用 [su -] 来下达命令喔!
此外, su 也可以将您的身份转换成为其它身份的使用者,而,如果您是 root ,那么转换为其它身份的使用者,将不需要输入密码喔!
2. sudo
[root @test /root ]# sudo [-u username] [command]
参数说明:
-u :将身份变成 username 的身份
范例:
[test@test test]$ sudo mkdir /root/testing
Password: <==输入 test 自己的密码
[root@test test]$ sudo -u test touch test
<==root 可以执行 test 这个使用者的指令,建立 test 的档案!
说明:
(1).如果单纯的使用 su 来变换成 root 的身份,最大的好处是可以直接下达我们惯用的指令,但是,还是会有问题的,就是如果主机是由多人共管的时候,由于所有的人都必须要知道 root 的密码,如此一来,而且只要 root 改变了密码,那么所有人都必需要通知一次!很麻烦,加上,如果管理群中的一个人 不小心泄出了 root 的密码,不就完蛋了??那么有没有可以不需要 root 的密码,却还是可以执行 root 的工具呢?呵呵!这个时候就有 sudo 的出现了!
(2).sudo 的基本语法就是在 sudo 后头直接加上指令,例如上面的例子中, mkdir /root/testing 就是命令啦!那么就可以来执行 root 身份可以动作的事情!此外,由于执行 root 身份的工作时,『 输入的密码是使用者的密码,而不是 root 的密码,所以可以减少 root 密码外流的问题!』如此 root 的密码将不会流出去了!但是 sudo 在使用的时候请小心,就是要在 /etc/sudoers里头设定该有的事项!在预设情况下,只有 root 才能使用 sudo !那有什么用!我们是一般使用者,想要使用的是 sudo 来变成 root 的身份呀!呵呵!没关系!可以使用 visudo 来编辑 /etc/sudoers 这个档案即可!在 Mandrake 9.0 与 Red Hat 的 Linux 版本之的预设情况中,使用『 visudo 』才能编辑 /etc/sudoers 这个档案,此外,编辑者的身份必须要 root 才行!如何编辑呢?在预设的情况中,我们会希望将可以执行 root 动作的人的 group 设定为 wheel ,然后:
[root@est /root]# visudo
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
test ALL=(ALL) ALL <==这一行可以加入,使 test 这个人可以使用 sudo
# Uncomment to allow people in group wheel to run all commands
%wheel ALL=(ALL) ALL <==将这一行批注符号取消
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
如果如同上面的方式,在 /etc/sudoers 里头将
# %wheel ALL=(ALL) ALL
这一行的批注符号取消,如此一来,则 群组为 wheel 的人就可以进行 root 的身份工作!这个 wheel 是系统预设的 group 呢!因此,如果您想要让这部主机里头的一般身份使用者具有 sudo 的使用权限,那么您就必需将该 user 放入支持 wheel 这个群组里头!如何加入?呵呵!刚刚上面不是介绍了 /etc/group 吗?赶紧去看看!那么万一我想要让『单独的个人可以使用 sudo 的功能』呢?呵呵!那就直接以 visudo 加上这一行
test ALL=(ALL) ALL
即可!那么 test 即可使用 sudo 的功能啰!很简单吧!但是请记得 不要以 vi 直接修改 sudoers 呦!会有问题!
(3).sudo 除了变成 root 的功能之外!嘿嘿!他还可以变成『任何人』的功能呦!举个简单的例子来说好了,我们都知道启动程序的时候最好不要使用 root 来启动,因为如此一来当该程序被接管时,接管者(或者说是入侵者)将拥有 root 的权限了!所以近来我们都希望不要以 root 来启动一些程序啦!会比较安全!那么我们要以 root 来启动成为 test (例如常用的 nobody 这个账号)要如何作?很简单,就使用上面的第二个例子来看:
sudo -u test touch test
root 可以改变身份成为 test 来建立文件!嘿嘿!还不需要输入密码!很棒吧!这个动作我曾经在 squid 这个执行程序上面做过,这样一来,即使我的 squid 被利用了,那么该怪客只能拥有 nobody 的权限,嘿嘿!该权限是很小很小的!所以可以达到保护主机的部分功能呦!