本文介绍linux下用户管理的相关知识,供大家学习参考。
首先,来看如何在linux中添加一个新的用户
[root@localhost ~]#
[root@localhost ~]# useradd user1
[root@localhost ~]# id user1
uid=500(user1) gid=500(user1) groups=500(user1)
[root@localhost ~]#
User1这个用户就创建成功了,用useradd命令会自动的在/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow。这四个文件中添加条目。创建用户的主目录。设定用户的权限和拥有者。
使用passwd命令来设置用户的密码
[root@localhost ~]#
[root@localhost ~]# passwd user1
Changing password for user user1.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
密码设置成功。
接下来,我们来看如何在linux中删除一个用户
可以手动的在/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow。这个四个文件中去手动删除用户信息。
也可以使用userdel命令来删除一个用户。
-r 删除用户的home目录
[root@localhost ~]#
[root@localhost ~]# userdel -r user1
[root@localhost ~]#
[root@localhost ~]# id user1
id: user1: No such user
[root@localhost ~]#
这样,user1这个用户就被删除了。
关于用户的私有组和附加组的概念
在linux系统中,我们组分为两种,一种是私有组,一种是附加组。我们知道当利用useradd这条命令去创建一个用户的时候,系统将默认的去创建一个与之同名的组。这个组就叫做用户的私有组。
[root@localhost ~]# su - user1
[user1@localhost ~]$
[user1@localhost ~]$ touch abc.txt
[user1@localhost ~]$ ll
total 0
-rw-rw-r-- 1 user1 user1 0 Mar 2 14:58 abc.txt
[user1@localhost ~]$
当我们使用user1的身份去创建一个文件,这个文件的拥有组就是用户的私有组。
当然,这个用户的私有组也是可以通过命令去改变的。
用户附加组是指当一个用户有附加组,那么该用户就可以共享用户的资源,额外的得到组里面的权限。
一个用户不可以属于多个私有组,但是一个用户可以属于多个附加组。
如何去修改用户的信息
我们可以直接修改/etc/passwd这个文件。
也可以在使用useradd命令创建用户的时候去指定用户信息。
还可以使用usermod命令来调整用户的信息。
1.修改用户的描述
[root@localhost ~]#
[root@localhost ~]# usermod -c "test account" user1
[root@localhost ~]#
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:500:500:test account:/home/user1:/bin/bash
[root@localhost ~]#
可以看到,这个用户就多了一个描述。
2.修改用户的home目录
修改用户的home目录,有两种方法。可以在创建用户的时候指定,也可以使用usermod命令来调整。
现在先来看下在创建用户的时候指定home目录。
[root@localhost ~]#
[root@localhost ~]# cd /home/
[root@localhost home]# mkdir guests
[root@localhost home]# ls
guests user1
[root@localhost home]# useradd -d /home/guests/user2 user2
[root@localhost home]# su - user2
[user2@localhost ~]$ pwd
/home/guests/user2
[user2@localhost ~]$
OK,在创建用户时候指定用户的home目录是没有问题的。
现在在来看看使用usermod命令来调整用户的信息。
[root@localhost home]#
[root@localhost home]# ls
guests user1
[root@localhost home]# usermod -d /home/guests/user1/ user1
[root@localhost home]#
[root@localhost home]# su - user1
su: warning: cannot change directory to /home/guests/user1/: No such file or directory
-bash-3.2$ pwd
/home
-bash-3.2$
使用user1登录的时候,用户的/home目录和环境变量都不正确。
我们知道,在guests这目录下面其实是没有user1 user2这两个目录的。但是在创建用户的时候指定home目录,系统是可以自动生成这个用户的/home目录的。但是用户usermod命令是不会自动生成的,我们必须在/home目录下面创建一个user2的目录。然后改变权限,在去复制环境变量过来。这样user2登录的时候才会正常登录。
[root@localhost guests]# ll
total 4
drwx------ 3 user2 user2 4096 Mar 2 15:25 user2
[root@localhost guests]# mkdir user1
[root@localhost guests]# ll
total 8
drwxr-xr-x 2 root root 4096 Mar 2 15:28 user1
drwx------ 3 user2 user2 4096 Mar 2 15:25 user2
[root@localhost guests]# chown user1:user1 user1
[root@localhost guests]# chmod 700 user1/
[root@localhost guests]# ll
total 8
drwx------ 2 user1 user1 4096 Mar 2 15:28 user1
drwx------ 3 user2 user2 4096 Mar 2 15:25 user2
[root@localhost guests]# su - user1
-bash-3.2$ cp /etc/skel/.* .
cp: omitting directory `/etc/skel/.'
cp: omitting directory `/etc/skel/..'
cp: omitting directory `/etc/skel/.mozilla'
-bash-3.2$ exit
[root@localhost guests]# su - user1
[user1@localhost ~]$
现在user1的home目录和环境变量就正常了。
建议在创建用户的时候就指定/home目录,否则以后去改变用户的home目录会比较麻烦。
3.修改用户的私有组
[root@localhost ~]# usermod -g user1 user2
[root@localhost ~]#
[root@localhost ~]# id user2
uid=501(user2) gid=500(user1) groups=500(user1)
[root@localhost ~]#
将user2的私有组变成user1。
4.修改用户的附加组
[root@localhost ~]#
[root@localhost ~]# usermod -G user2 user3
[root@localhost ~]#
[root@localhost ~]# id user3
uid=502(user3) gid=502(user3) groups=502(user3),501(user2)
[root@localhost ~]#
可以看到,user3的附加组就变成了user2。
注意usermod –G 是修改用户的附加组,而不是添加用户的附加组。添加修改可以使用下面这条命令。
[root@localhost ~]#
[root@localhost ~]# usermod -a -G user4 user3
[root@localhost ~]#
[root@localhost ~]# id user3
uid=502(user3) gid=502(user3) groups=502(user3),501(user2),503(user4)
[root@localhost ~]#
可以看到,user3现在就有两个附加组了。
5.修改用户的登录名
[root@localhost ~]#
[root@localhost ~]# usermod -l students user1
[root@localhost ~]#
[root@localhost ~]# su - students
[students@localhost ~]$
可以看到,user1的登录名就变成了students。
6.修改用户的shell
[root@localhost ~]#
[root@localhost ~]# usermod -s /sbin/nologin user2
[root@localhost ~]# su - user2
This account is currently not available.
[root@localhost ~]#
User2的登录shell变成/sbin/nologin以后,用户就不可以登陆计算机,只可以登陆服务了。
7.锁定用户
[root@localhost ~]#
[root@localhost ~]# usermod -L user3
[root@localhost ~]# cat /etc/shadow | grep user3
user3:!$1$coBU9WM5$r0Qmp12kA15KLD5Dte9De0:14670:0:99999:7:::
[root@localhost ~]# su - user4
[user4@localhost ~]$ su - user3
Password:
su: incorrect password
[user4@localhost ~]$
可以看到,当我们锁定用户的时候,系统会自动的在/etc/shadow文件里面的密码位前面添加一个感叹号,就代表这个用户被锁定了。当然我们也可以手动添加。我们的user3的确是不能登录的。
8.解锁用户
[root@localhost ~]#
[root@localhost ~]# usermod -U user3
[root@localhost ~]#
[root@localhost ~]# cat /etc/shadow | grep user3
user3:$1$coBU9WM5$r0Qmp12kA15KLD5Dte9De0:14670:0:99999:7:::
[root@localhost ~]# su - user4
[user4@localhost ~]$ su - user3
Password:
[user3@localhost ~]$
解锁后,user3登录成功了。
关于用户密码的时效策略
默认情况下,用户的密码永不过期。
密码的默认设置在/etc/login.defs这个文件中都有定义。也可以修改这个文件。
这个文件是全局的配置文件,对每个用户都生效。
如何修改密码的时效策略
可以在/etc/shadow里面去修改用户密码的策略。
也可以使用chage 命令来修改用户的密码策略。
查看用户密码的时效策略
[root@localhost ~]#
[root@localhost ~]# chage -l user1
Last password change : Mar 02, 2010
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change :0
Maximum number of days between password change : 99999
Number of days of warning before password expires :7
[root@localhost ~]#
这条命令可以查看用户密码的策略。
如何修改用户密码的策略,
[root@localhost ~]#
[root@localhost ~]# chage user1
Changing the aging information for user1
Enter the new value, or press ENTER for the default
Minimum Password Age [0]:
Maximum Password Age [99999]:
Last Password Change (YYYY-MM-DD) [2010-03-02]:
Password Expiration Warning [7]:
Password Inactive [-1]:
Account Expiration Date (YYYY-MM-DD) [1969-12-31]:
[root@localhost ~]#
它会以交互式的方式来修改用户的密码时效。
从上到下,依次解释:
密码的最小存活期,多长时间以后可以修改密码。(0为随时可以修改密码)
密码的最大存活期,密码在多长时间后过期。(99999是代表用户密码永不过期)
密码的最后一次修改时间,所有的策略以这个时间为标准
密码的警告时间,多长时间警告用户密码快过期了(默认是七天)
密码的宽限期,密码过期以后,账号多久过期。(默认是-1,密码过期了,账号就过期了。)
最后一个是账号的过期时间。
账号过期,就代表用户不可以登录了。
密码过期,只需要修改密码,用户就可以立即登录了。
关于组的管理
在组里面添加用户,
我们可以直接在/etc/group这个文件里面在组的后面去添加用户。
添加一个组
#groupadd
修改一个组
#groupmod
删除一个组
#groupdel
至此,关于linux下用户管理的相关内容就介绍完了,希望对大家有所帮助。
本文介绍linux的用户,组,权限相关知识,供大家学习参考。
Linux中的用户
在linux系统中每个用户都被分配一个独特的用户UID号码,用户名是给人来识别的,而UID号码是给计算机来识别的。用户名和UID都被保存在/etc/passwd这个文件当中。默认情况下面,前500个UID被系统占有,root的UID为0,1-499为系统用户。也就是说系统中第一个普通用户的UID应该为500。
可以使用id命令来查看用户的信息
#id root (用户名)
[root@localhost ~]#
[root@localhost ~]# id root
Uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[root@localhost ~]#
Linux中的用户组
在创建每个用户的时候,系统会自动的创建与之同名的组,每个组都被分配一个独特的组ID号码(gid)。组和gid都被保存在/etc/group这个文件当中。每个用户都有它们自己的私有组。组中的所有用户可以共享属于组群的文件。
同样通过id命令来查询组。
Linux中权限的介绍
每个文件都属于一个UID和一个GID
在linux下面我们将访问文件的用户分为三类
1.文件拥有人 (user)
2.文件拥有组 (group)
3.其他人 (other)
关于权限的优先顺序
如果UID匹配,就应用用户(user)权限。
否则。如果GID匹配,就应用组群(group)权限。
如果都不匹配,就应用(other)权限。
User----group----other
关于权限的类型
r:读
w:写
x:执行
-:无权限
关于权限类型对文件和目录的意义
r 文件 读
目录 列举,不可以进入
w 文件 写
目录 创建,删除
x 文件 执行程序
目录 可以进入,不可以列举
- 文件 无权限
目录 无权限
如何查看文件的权限呢?
#ls -l file
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rw-r--r-- 1 root root 0 Feb 28 12:26 file
[root@localhost ~]#
这个文件的权限位上面有十个栏位。
第一个- 代表这是一个文件,如果是d,代表是一个目录。
后面的九位,每隔三位为一段。
rw- 可读可写
r- - 只读
r- - 只读
第一个root代表文件的拥有人是root
第二个root代表文件的拥有组是root
在权限位上面的前三位代表的是user的权限,中间三位代表的是group的权限,后面三位代表的是other的权限。(第一位除外)
在这里例子中就是用户root对这个文件是可读可写的,root组里面的成员对这个文件是只读的,除了用户root和root组里面的成员的其他用户对这个文件的权限也是只读的。
改变文件所有者
改变文件的所属用户
#chown user1(用户名) file(文件或者是目录)
Chown = change owner
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rw-r--r-- 1 root root 0 Feb 28 12:26 file
[root@localhost ~]#
[root@localhost ~]# chown user1 file
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rw-r--r-- 1 user1 root 0 Feb 28 12:26 file
[root@localhost ~]#
可以看到,原来file这个文件的所有者是root,现在就变成了user1。
改变文件的所属组群
# Chgrp user1(组名) file(文件或者是目录)
Chgrp = change group
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rw-r--r-- 1 user1 root 0 Feb 28 12:26 file
[root@localhost ~]#
[root@localhost ~]# chgrp user1 file
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rw-r--r-- 1 user1 user1 0 Feb 28 12:26 file
[root@localhost ~]#
可以看到,文件的所属组也变成了user1。
只有root用户才能够改变文件的所有者。
只有root用户和文件的所有者才能改变文件的组群。
我们可以在改变的时候加上- R的参数,表示递归。这个也只读目录生效。
改变文件的权限
符号式方法
# chmod u-x,g+x,o=rwx file (文件名)
+ 添加某个权限
- 删除每个权限
= 分配权限
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rwxr--r-- 1 user1 user1 0 Feb 28 12:26 file
[root@localhost ~]#
[root@localhost ~]# chmod u-x,g+x,o=rwx file
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rw-r-xrwx 1 user1 user1 0 Feb 28 12:26 file
[root@localhost ~]#
[root@localhost ~]#
可以看到,我们文件的权限就被改正过来了。这个非常灵活。多试试。
数字式方法
#chmod 755 file(文件名)
使用三个数字来代表权限
第一个数字代表所属用户的权限
第二个数字代表所属组的权限
第三个数字代表其他用户的权限
通常吧以下的数值加起来来代表权限
4 代表读取
2 代表写入
1 代表执行
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rw-r-xrwx 1 user1 user1 0 Feb 28 12:26 file
[root@localhost ~]#
[root@localhost ~]# chmod 755 file
[root@localhost ~]#
[root@localhost ~]# ls -l file
-rwxr-xr-x 1 user1 user1 0 Feb 28 12:26 file
[root@localhost ~]#
我们这个文件的权限就变成了755。
同样我们可以在改变的时候加上- R的参数,表示递归。这个也只读目录生效。
至此,linux中的用户,组,权限的基本内容就介绍完了,希望对大家有所帮助。
本文介绍linux 系统服务管理的相关内容,供大家学习参考。
Linux系统服务可以分为三类:
1、由init控制的服务
2、由System V启动脚本启动的服务
3、由xinetd管理的服务
下面介绍这三种系统服务:
一.Init控制的服务
Init的配置文件在/etc/inittab这个文件中。
二.System V服务
经常使用几个配置文件,大多数服务启动一个或多个进程。都是独立启动服务。
在/etc/init.d/下面的脚本都是system V服务。
[root@localhost ~]# cd /etc/init.d/
[root@localhost init.d]# ls
acpid functions kudzu nscd setroubleshoot
anacron gpm libvirtd ntpd single
apmd haldaemon lvm2-monitor pand smartd
atd halt mcstrans pcscd sshd
auditd hidd mdmonitor portmap syslog
autofs hplip mdmpd psacct vmware-tools
avahi-daemon ip6tables messagebus rawdevices vncserver
avahi-dnsconfd ipmi microcode_ctl rdisc vsftpd
bluetooth ipmievd multipathd readahead_early wdaemon
conman iptables named readahead_later winbind
cpuspeed irda netconsole restorecond wpa_supplicant
crond irqbalance netfs rhnsd xend
cups iscsi netplugd rpcgssd xendomains
cups-config-daemon iscsid network rpcidmapd xfs
dnsmasq kdump NetworkManager rpcsvcgssd xinetd
dund killall nfs saslauthd ypbind
firstboot krb524 nfslock sendmail yum-updatesd
[root@localhost init.d]#
在这个里面的所有脚本都是system V的服务。
如果想运行这些服务,可以使用两种方式,
#/etc/init.d/vsftpd restart
[root@localhost ~]#
[root@localhost ~]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@localhost ~]#
直接使用脚本的方式来运行,还有一种方式,
#service vsftpd restart
[root@localhost ~]#
[root@localhost ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@localhost ~]#
使用service命令来调用脚本。
如何控制系统服务呢?
我们一般使用chkconfig工具来管理,
我们可以使用chkconfig工具来定义那个服务运行在那个级别上面。
#chkconfig --list
这条命令会显示系统中所有的系统服务,输出很多。后面可以跟查询的服务。
# Chkconfig --list vsftpd
[root@localhost ~]#
[root@localhost ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]#
通过chkconfig工具可以查询到vsftpd这个服务在下次启动的时候在2,3,4,5这四个级别上面是启动的。
如何定义系统服务在下次启动的时候在那个级别启动呢?
现在我们定义vsftpd服务在下次启动的时候在3,5级别启动。
[root@localhost ~]#
[root@localhost ~]# chkconfig --level 35 vsftpd on
[root@localhost ~]#
[root@localhost ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
[root@localhost ~]#
现在我们的vsftpd服务在下次启动的时候就会在3和5的级别启动。
如果我们不加任何级别,直接将vsftpd服务给off。
[root@localhost ~]#
[root@localhost ~]# chkconfig vsftpd off
[root@localhost ~]#
[root@localhost ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]#
现在在所有的级别上面,vsftpd服务就off了。
将vsftpd服务直接给on
[root@localhost ~]#
[root@localhost ~]# chkconfig vsftpd on
[root@localhost ~]#
[root@localhost ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]#
那么就会在2,3,4,5级别上面启动。因为在0,1,6级别启动没有意义。
这条命令也是我们最长用到的。
我们可以添加服务或者删除服务在chkconfig的管理程序里面。
删除一个服务在chkconfig的管理程序里面,
[root@localhost ~]#
[root@localhost ~]# chkconfig --del vsftpd
[root@localhost ~]#
[root@localhost ~]# chkconfig --list vsftpd
service vsftpd supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add vsftpd')
[root@localhost ~]#
Vsftpd这个服务就从chkconfig的管理程序里面删除了,通过chkconfig --list命令也查询不到了。
添加一个服务到chkconfig的管理程序里面
[root@localhost ~]#
[root@localhost ~]# chkconfig --add vsftpd
[root@localhost ~]#
[root@localhost ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]#
OK,vsftpd服务就被成功的添加到了chkconfig的管理程序里面。
注意:service vsftpd restart这条命令是使vsftpd服务在当前生效,下次启动不生效。而chkconfig工具开启的服务是在下次生效。
Chkconfig vsftpd on这条命令一定要敲。
关于/etc/sysconfig下面的文件,
/etc/sysconfig这个目录我们并不陌生了,这个目录下面的所有文件都是全局配置文件。我们很多的服务都在/etc/sysconfig下面有全局的配置文件。
三.Xinetd管理的服务
我们由xinetd管理的服务都在/etc/xinetd/下面。
[root@localhost ~]# cd /etc/xinetd.d/
[root@localhost xinetd.d]# ls
chargen-dgram discard-stream gssftp rsync time-stream
chargen-stream echo-dgram klogin tcpmux-server
daytime-dgram echo-stream krb5-telnet telnet
daytime-stream eklogin kshell tftp
discard-dgram ekrb5-telnet rmcp time-dgram
[root@localhost xinetd.d]#
这个目录下面的服务都是由Xinetd来管理的。
可以看到,在这个目录下面有个telnet。也就是说telnet是由xinetd来管理的。
现在我们打开这个文件来看看。
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
在telnet的配置文件里面有个disable = yes,是不是关闭这个服务呢,yes。
现在我们将它改成no,不关闭。
那么我们如何重新启动这个服务呢。
使用service telnetd restart来试试,
[root@localhost ~]# service telnetd restart
telnetd: unrecognized service
[root@localhost ~]#
好像不行,因为telnet不是system V的服务,不可能会调用/etc/init.d下面的脚本。
telnet服务是属于xinetd服务的,我们重启下xinetd服务,试试。
[root@localhost ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@localhost ~]#
OK,xinetd服务启动成功。
因为xinetd服务也是属于system V服务,所以可以用service来启动。
我们知道telnet的端口号是23,我们来查询这个端口有没有监听。
[root@localhost ~]# netstat -tulnp | grep 23
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 14854/xinetd
[root@localhost ~]#
可以看到,telnet服务的确是监听在23号端口的。并且是由xinetd来管理的。
现在我们来测试一下
[root@localhost ~]# telnet 192.168.0.254
Trying 192.168.0.254...
Connected to 192.168.0.254 (192.168.0.254).
Escape character is '^]'.
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel 2.6.18-164.el5xen on an i686
login: user1
Password:
Last login: Mon Mar 8 14:22:29 from 192.168.0.2
[user1@localhost ~]$ ls
[user1@localhost ~]$
同样的,我们也可以使用chkconfig来管理telnet。
[root@localhost ~]# chkconfig telnet on
[root@localhost ~]# chkconfig --list telnet
telnet on
[root@localhost ~]# chkconfig telnet off
[root@localhost ~]# chkconfig --list telnet
telnet off
[root@localhost ~]#
关于system V服务和xinetd管理的服务,
System V 占用资源,反应速度快。
Xinted 占用资源少,反应速度慢。
Xinetd的全局配置文件在/etc/xinetd.conf文件,
/etc/xinetd.d/service这个是xinetd服务的配置文件。
以xinetd服务自己定义的为准,如果xinetd服务没有定义的条目,就会继承全局配置文件中定义的条目。
首先来看看全局配置文件,
Enabled = yes or no
开启或者关闭,
Instances = 50
最多可以管理50个请求,
Per_source = 10
每个单一的IP仅可以访问10次,
V6only
是否启用ipv6,
log_on_failure = HOST
当访问我失败,记录主机名。
Log_on_success = PID HOST DURATION EXIT
当访问我成功了,就记录这些信息。
Cps =50 10
当连接到我的计算机上面的用户超过50,就暂停10S。
在来看看xinetd服务的配置文件,
Service telnet
服务的名字
Disable = yes or no
是否开启telnet
Socket_type = stream
类型是TCP
Wait = no
是否等待
User = root
服务的管理者是root
Log_on_failure += USERID
登录失败,记录用户的uid。
下面就是关于xinetd服务的访问控制,
语法:
使用only_from 来定义允许访问,
使用no_access来定义禁止访问。
Only_from代表仅允许那些人来访问,
No_access代表不允许那些人访问。
关于xinetd服务访问控制的主机模式
192.168.0.10 主机
192.168.0.0/24 网段
Station10.example.com. 主机名
.example.com 域名
现在我们来做试验,
[root@localhost ~]# ssh 192.168.0.10
root@192.168.0.10's password:
Permission denied, please try again.
root@192.168.0.10's password:
Last login: Mon Mar 8 15:32:07 2010 from 192.168.0.254
[root@localhost ~]#
[root@localhost ~]# telnet 192.168.0.254
Trying 192.168.0.254...
Connected to 192.168.0.254 (192.168.0.254).
Escape character is '^]'.
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel 2.6.18-164.el5xen on an i686
login: user1
Password:
Last login: Mon Mar 8 15:21:50 from 192.168.0.10
[user1@localhost ~]$
现在我们是可以telnet到192.168.0.254上面的。
现在我们对telnet来做访问控制,
[root@localhost ~]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
no_access = 192.168.0.10
}
[root@localhost ~]#
我们拒绝192.168.0.10进行telnet到192.168.0.254。
然后重启下xinetd服务,
[root@localhost ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
服务启动成功,测试下,
[root@localhost ~]# ssh 192.168.0.10
root@192.168.0.10's password:
Last login: Mon Mar 8 15:49:20 2010 from 192.168.0.254
[root@localhost ~]#
[root@localhost ~]# telnet 192.168.0.254
Trying 192.168.0.254...
Connected to 192.168.0.254 (192.168.0.254).
Escape character is '^]'.
Connection closed by foreign host.
[root@localhost ~]#
OK,可以看到,连接就被拒绝了。
那192.168.0.20可以telnet到192.168.0.254上面吗。试试
[root@localhost ~]# ssh 192.168.0.20
root@192.168.0.20's password:
Last login: Mon Mar 8 15:58:27 2010 from 192.168.0.254
[root@localhost ~]#
[root@localhost ~]# telnet 192.168.0.254
Trying 192.168.0.254...
Connected to 192.168.0.254 (192.168.0.254).
Escape character is '^]'.
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel 2.6.18-164.el5xen on an i686
login: user1
Password:
Last login: Mon Mar 8 15:32:35 from 192.168.0.10
[user1@localhost ~]$
是可以的,我们只是拒绝了192.168.0.10进行telnet到192.168.0.254。
所以192.168.0.20是可以的。
如果有这样的情况呢?
Only_from 192.168.0.0/24
No_access 192.168.0.20
那么192.168.0.20最终可以访问吗?
我们来尝试一下。
[root@localhost ~]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
only_from = 192.168.0.0/24
no_access = 192.168.0.20
}
[root@localhost ~]#
配置OK,重启下服务,
[root@localhost ~]#
[root@localhost ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
服务启动成功,测试下,
[root@localhost ~]# ssh 192.168.0.20
root@192.168.0.20's password:
Last login: Mon Mar 8 16:03:23 2010 from 192.168.0.254
[root@localhost ~]# telnet 192.168.0.254
Trying 192.168.0.254...
Connected to 192.168.0.254 (192.168.0.254).
Escape character is '^]'.
Connection closed by foreign host.
[root@localhost ~]#
可以看到,192.168.0.20最终还是不可以telnet到192.168.0.254上面去的。
那么192.168.0.10可以telnet吗?
[root@localhost ~]# ssh 192.168.0.10
root@192.168.0.10's password:
Last login: Mon Mar 8 16:05:00 2010 from 192.168.0.254
[root@localhost ~]#
[root@localhost ~]# telnet 192.168.0.254
Trying 192.168.0.254...
Connected to 192.168.0.254 (192.168.0.254).
Escape character is '^]'.
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel 2.6.18-164.el5xen on an i686
login: user1
Password:
Last login: Mon Mar 8 16:00:42 from 192.168.0.20
[user1@localhost ~]$
OK,192.168.0.10是没有问题的,可以telnet到192.168.0.254上面去。
我们允许192.168.0.0/24这个网段里面所有的主机,但是拒绝192.168.0.10这台主机。
这个访问控制还可以支持访问时间的控制。
Access_times = 8:00-12:00
[root@localhost ~]#
[root@localhost ~]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
access_times = 8:00-12:00
}
[root@localhost ~]#
配置就OK,重启下服务,
[root@localhost ~]#
[root@localhost ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
服务启动成功,测试下,
[root@localhost ~]# ssh 192.168.0.10
root@192.168.0.10's password:
Last login: Mon Mar 8 16:12:00 2010 from 192.168.0.254
[root@localhost ~]# date
Mon Mar 8 16:12:20 CST 2010
[root@localhost ~]#
[root@localhost ~]# telnet 192.168.0.254
Trying 192.168.0.254...
Connected to 192.168.0.254 (192.168.0.254).
Escape character is '^]'.
Connection closed by foreign host.
[root@localhost ~]#
192.168.0.10是不可以telnet到192.168.0.254上面去的,因为访问时间限制了。
至此,RHEL5.4系统服务管理的相关知识就介绍完了,希望对大家有所帮助。