Posts Tagged ‘ Linux

架设 linux 网站,如何收费?

今天有一位朋友问我“帮人家架设 Linux 服务器,以及转移电子信箱该如何收费”相关的问题,我上网去找了一下,从 Google 的讨论群组看到这一则讨论: 架设 linux 网站,如何收费?,里面有一段话,让我深感认同,这段话就是…

奉劝各位,千万别给公众如下的印像:

  • Linux 很容易 (no! 它比许多人想像的专业多了!)
  • Linux 很便宜 (no! 专业服务是一分钱一分活的!)

如何即时封锁想要用“暴力密码”破解 SSH 的入侵者

本程式无法处理 IPv6 的问题,请改用功能更强大、更完整的 Fail2Ban,请参考本站文章:


粉久之前写了一支 Log 分析的程式,可以统计、分析前一天系统的 Log,在这一份报表里面,总是会看到有一些人使用“暴力法”,尝试以各种帐号、密码,借由 SSH 或 FTP 入侵服务器! 而我只能看着“前一天”的报表,分析他们用过哪些帐号、统计他们尝试了几次…实在有点不是滋味
Read more

实用的 screen 终端机管理程式

screen 是一个很方便的终端机管理程式,可以让你在同一个终端机开启多个 Session 来操作,加强多工的处理。即使你要离开电脑,也可以将 Session 执行脱离,或直接关闭终端机,这时执行中的程式还是会继续执行,下次登入终端机时再取回 Session 来操作即可。

首先执行 Screen 程式,开始一个 Session:

$ screen

某些终端机视窗会在标题列显示目前在操作的终端机编号,如果没有显示,你也可以输入:

$ tty

来了解你目前正在哪个终端机中。

以快速键操作

切换时的快速键一开始都是 Ctrl + A

  • 新增 Session:
    Ctrl + ACtrl + C
  • 切换到上一个编号的 Session:
    Ctrl + ACtrl + P
  • 切换到下一个编号的 Session:
    Ctrl + ACtrl + N
  • 切换到指定编号的 Session:
    Ctrl + A数字键
  • 切换到下一个编号的 Session:
    Ctrl + ASpace
  • 在两个 Session 之间互相切换:
    Ctrl + ACtrl + A
  • 锁定 Session:
    Ctrl + ACtrl + X
  • 显示 Session 列表,可供你选取:
    Ctrl + A⇧Shift + "
  • 新视窗的标题列显示所有的 Session 编号 (其中有加上 * 表示是目前使用的 Session) :
    Ctrl + ACtrl + W
  • 水平分割视窗 (可以持续分割) :
    Ctrl + A⇧Shift + S
  • 垂直分割视窗 (可以持续分割,只有特定版本才支援,请参考后方的说明) :
    Ctrl + A⇧Shift + |
  • 在分割的视窗做切换:
    Ctrl + ATab
  • 关闭分割的视窗:
    Ctrl + A⇧Shift + Q
  • 将所有的 Session 脱离(Detach),并回到执行 screen 前的状态:
    Ctrl + ACtrl + D
    在这种状态下,用户可以不须理会这些 Session。不管用户离线或是要从别的地方登入,只要下次登入时执行:

    screen -r

    将所有 Session 叫回来继续操作。

  • 重新命名 Session:
    Ctrl + A⇧Shift + A
  • 显示日期、主机名称及负载:
    Ctrl + ACtrl + T
  • 将画面暂停 (程式仍继续执行):
    Ctrl + ACtrl + S
  • 将暂停的画面恢复:
    Ctrl + ACtrl + Q

screen 的相关指令

  • 启动 Screen 程式,开始一个 Session:
    $ screen

    或指定 Id

    $ screen -S SessionId
  • 查看同一帐号共开启过多少个 Session 及其 Id:
    $ screen -ls
  • 取回被脱离执行的 Session:
    $ screen -r

    $ screen -r SessionId
  • 将其它的 Session 强制脱离:
    $ screen -d

    $ screen -d SessionId

    这功能适用于原本操作的电脑当机或断线了,让你可以在下次取回还在主机中执行的 Session。

  • 同步操作终端机 Session (两边必须登入相同的帐号):
    $ screen -x

    $ screen -x SessionId
  • 移除 Session:
    $ screen -wipe SessionId

模拟页签显示

如果要在画面底部秀出现在在哪个编号的 Session,请编辑 /etc/screenrc 或 ~/.screenrc,加入:

hardstatus alwayslastline "%-w%{= BW}%50>%n %t%{-}%+w%<"

同步作业说明

假设我在我目前所操作的终端机 Session 要分享给另一端的登入者查看,并且可以操作 (或者是我不想将远端登入的用户脱离 Session),则我要先以我的帐号登入主机并且执行 screen -S 特定名称,然后另一端的登入者:

  1. 以相同的帐号登入主机
  2. screen -ls 查看要取回的终端机 Session
  3. screen -x 特定名称screen -x SessionId 进入相同的终端机 Session

垂直分割视窗

因为 screen 只能水平分割视窗,不能充分利用宽萤幕的特性实在有点可惜! 这里有新版可垂直分割功能的 screen:

垂直分割 screen 视窗

请自行编译安装。

命令别名

因为 screen 很实用,于是我在 bashrc 建立两个 screen 指令的别名:

alias scr='screen -d -r Normal || screen -S Normal'
alias scl='screen -ls'

我只要登入终端机就先打一次 scr,以取回上一次没关闭的 Session。如果没有上一次没关闭的 Session,则会建立一个新的 Session。

scl 则可以列出目前有几个属于我的 session。

参考网页

hdparm 参数

测硬盘速度:

hdparm -tT /dev/hda

UDMA3(ATA33):

# hdparm -X66 -c1 -d1 -m16 /dev/hda

UDMA4(ATA66):

# hdparm -X68 -c1 -d1 -m16 /dev/hda

UDMA5(ATA100):

# hdparm -X69 -c1 -d1 -m16 /dev/hda

[转载]Linux 上的用户管理

转载自: 中文 PHP 资讯站


在linux中,每个普通用户都有一个帐户,包括用户名、密码和主目录等资讯。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义。其中最重要的是超级用户,在linux中,它默认用户名是root。

基本操作

增加一个用户 newuser :

useradd newuser
passwd newuser

然后根据提示两次输入新用户的密码,请注意,用useradd增加一个用户后应该立刻用passwd给新用户修改密码,没有密码的新帐号将不能使用。在/etc/passwd文件中,没有密码的新用户的记录是如下一行:

newuser:!!:506:506::/home/newuser:/bin/bash

在这一行里,用户的密码域被设置成了”!!”,这就意味着用户密码还没有设置,用户不能登陆。(passwd文件的格式是 用户名:密码:用户ID(UID):组ID(GID):全名:用户目录:外壳脚本)。

当然你可以用-d参数设置新用户的主目录(例如:useradd newuser -d /www),也可以用-g参数为用户指定新组名(例如:useradd newuser -g linuxusers),你还可以用-G参数把新用户设成系统其他一些组的成员(例如:useradd newuser -G users,shutdown)。所有这些,你都可以在本站的命令查询中得到详细资讯。

附注:相应的,仅仅增加一个新组可以用命令groupadd。

修改现有用户的帐号:

  • 修改密码
  • 普通用户可以用passwd修改自己的密码,只有管理员才能用passwd username为其他用户修改密码。
  • 修改用户shell设置
  • 使用chsh命令可以修改自己的shell,只有管理员才能用chsh username为其他用户修改shell设置。注意,指定的shell必须是列入/etc/shells文件中的shell,否则该用户将不能登陆。
    你也可以使用usermod命令修改shell资讯,如下所示:
    usermod -s(new shell path)(username)
    其中new shell path和username应取相应的值。
  • 修改主目录设置
  • usermod -d(new home directory)(username)
    如果想将现有主目录的主要内容转移到新的目录,应该使用-m参数,如下所示:
    usermod -d -m/www/newuser newuser
  • 修改UID
  • usermod -u UID username
    主目录中所有该用户所拥有的文件和目录都将自动修改UID设置。但是,对于主目录外该用户所拥有的文件,只能手工用chown命令修改所有权设置。
  • 修改默认组设置
  • username -g(group name) or GID username
  • 修改帐号的有效期
  • 如果使用了影子密码,则可以使用如下命令来修改一个帐号的有效期:
    usermod -e MM/DD/YY username
    例如把用户newuser的有效期定为12/31/01:
    usermod -e 12/31/01 newuser
  • 删除或禁止用户帐号
  • 使用userdel命令删除现有用户。例如,下面的命令将删除bluewind用户:
    usedel bluewind
    如果想同时删除该用户的主目录以及其中所有内容,要使用-r参数来递回删除。值得注意的是你无法删除已经进入系统的用户,如果想强行完成,需要先killall有关它的进程,然后再运行userdel命令。
  • 如果只是想暂时禁止某个帐号,可以使用下列方法:
  • - 使用无效的shell。例如使用usermod -s newshell username将用户的 shell改为/bin/false(最好把它列入/etc/shells文件里)。
    - 使该帐号过期。如果使用影子密码,可使用usermod -e MM/DD/YY username命令使该帐号过期。
    如果想禁止所有帐号(root帐号当然除外)的访问,可以创建一个名为/etc/nologin的文件,说明系统暂时不允许访问。注意,确认你还能用root直接登陆才使用这个办法,否则你惨了。

    本文中的所有命令都可以在linuxaid获得中文详细的帮助,下面我们一起来继续探讨有关用户管理的高级内容。

    建立多个超级用户

    不少新系统管理员认为root用户是唯一的超级用户,其实root只是系统默认的超级用户的名称,root并非因为它叫root而成为超级用户的。随便打开一个/etc/passwd文件的例子,你就会发现如下几行:

    root:asiewhgYfaoO/J:0:0:root:/root:/bin/tcsh
    bin:*:1:1:bin:/bin:
    daemon:*:2:2:daemon:/sbin:
    lanf:Yuao56Ioyefg:0:0:bluewind:/home/bluewind:/bin/bash
    jake:gUyfaiIodashfj:501:501:jake cheng:/home/jake:/bin/tcsh
    apache:!!:502:502::/usr/local/apache:/bin/false

    可以看到,root的UID和GID都被设置为0了。实际上,超级用户的充要条件就是UID和GID都等于0。也就是说,任何用户,只要它的UID和GID都为0,就与常被称为root超级用户没有什么两样了。比如上面那个例子里面的lanf,也是一个超级用户。

    所以,可以将任何普通用户变成超级用户。但是,这样做并没有好处,很多时候这都会增加系统的隐患。除非在组织中需要多个系统管理员管理同一个系统,这就需要有多个超级用户帐号。这有利于各个管理员明确责任,通过日志知道不同的人分别做过什么事。

    还有一种情况,也可能出现多个超级用户帐号,那就是黑客入侵后设置一个看起来象普通帐号的用户,却修改了UID和GID使之为0。这样根本就不需要知道root用户密码,就可以执行超级用户权限了。而从我们的系统管理员的一方来说,我们不可能时刻注意passwd文件的变化的,没有那个时间也没有那个精力。这时只好编写一个脚本来帮助监视,例如:

    /bin/grep '0:0' /etc/passwd |awk 'BEGIN{FS=":"}{print $1}'|mail -s "`date +"%D%T"`"root

    这是一个很小的脚本程式,使用了一些常规的命令来查看/etc/passwd文件,把UID和GID为0的行寄给root用户。把这个脚本放在/etc/cron.daily文件中让cron运行,root将每天收到一封信,报告当前的超级用户。

    实际上,由于PAM(可插入验证模组)的限制,在telnet上是不允许超级用户登入的,也就是说,黑客修改了自己的UID和GID后,想再次登陆从而获得超级用户的权限的话,不修改/etc/seuretty文件是不可能的–除非你傻到自己添加了为TTY设备ROOT用户登陆权限。一般可以让超级用户先用普通用户帐号登陆,再su(su命令相关内容请参考本站命令查询部分)。

    为普通用户分配特权

    使用sudo命令可以允许普通用户执行超级用户才能执行的命令。无论是基于信任的建立需要时间,还是基于是否存在这种必要,我们都不会把超级用户的所有权限轻易许人的。这是网管工作的原则。所以,当一些用户必须访问某些内容时,我们可以配置sudo以允许单独的普通用户运行特权命令。

    sudo命令允许已经在/etc/sudoers文件中指定的用户运行超级用户命令。例如,一个已经获得许可的普通用户可以运行:

    sudo vi /etc/passwd

    实际上,sudo的配置完全可以让我们指定某个列入/etc/sudoers文件的普通用户可以做什么、不可以做什么。/etc/sudoers的配置行如下:

  • 空行或注释行(以#字符打头):无用行。
  • 可选的主机别名行:用来创建主机列表的简称。必须以Host_Alias关键字开头,列表中的主机必须用逗号隔开。例如:
  • Host_Alias REDHAT=binbu,qd

    其中binbu和qd是俩主机名,你可以用REDHAT(别名)统称它们。

  • 可选的用户别名行:用来创建用户列表的简称。用户别名行必须以User_Alias关键字开头,列表中的用户名必须以逗号隔开。其格式同主机别名行。
  • 可选的命令别名行:用来创建命令列表的简称。必须以Cmnd_alias开头,列表中的命令必须用逗号隔开。
  • 可选的运行方式别名行:也是用来创建用户列表的简称。不同的是,使用这样的别名可以告诉sudo程式以列表中某一用户的身份来运行程式。
  • 必要的用户访问说明行:用户访问的说明语法如下:
  • user host= [run as user ] command list

    在user处指定一个真正的用户名或定义过的别名,同样的,host也可以是一个真正的主机名或者定义过的主机别名。默认情况下,sudo执行的所有命令都是以root身份执行。如果你想使用其他身份可以指定。至于command list可以是以逗号分隔的命令列表,也可以是一个已经定义过的别名。例如:

    lanf binbu=/sbin/shutdown

    这一句说明lanf可以在binbu主机上运行关机命令。

    注意:

  • 可以在一行定义多个别名,中间用:隔开。
  • 可以在命令或命令别名之前加上!号,使该命令或命令别名无效。
  • 有两个关键字:ALL 和NOPASSWD。ALL意味着”所有文件”(所有主机或所有命令),NOPASSWD意味着不用密码。
  • 下面是一个sudoers文件的例子:

    #sudoers files#User alias specificationUser_Alias ADMIN=yourid:POWERUSER=hisid,herid#user privilege specification ADMIN ALL=ALLPOWERUSER ALL=ALL,!/bin/su

    第三行定义了两个别名ADMIN和POWERUSER,第五行说明在所有主机上ADMIN都可以以root身份执行所有命令。第六行给POWERUSER除了运行su命令外同等ADMIN的权限。

    iptables 防火墙的一些基本用法

  • 列出目前的规则
  • iptables -L -n
  • 删除 “INPUT” 的第 1 条规则
  • iptables -D INPUT 1
  • 丢弃来自 192.168.1.203 的封包
  • iptables -A INPUT -p all -s 192.168.1.203 -j DROP
  • 禁止 192.168.1.203 的用户以 SSH 登入(Port:22)
  • iptables -A INPUT -p tcp -s 192.168.1.203 --dport 22 -j DROP
  • 储存防火墙的设定到 filename
  • iptables-save > filename
  • 从 filename 读取防火墙的设定
  • iptables-restore < filename

    .htaccess 简易的网页帐号认证

    .htaccess 让你不用写程式,就可以用最简单的方式做出“网页登入”的功能,限制哪些用户能进到网页的某一层目录。

    建立用户验证资料

    建立用户验证档

    建立用户验证档,并新增一组帐号及密码:

    htpasswd -c /path/to/.htusers UserName1

    这里所产生的 .htusers 是一个文字档,里面会有用户名称及编码过的密码。第一次建立档案时,必须加 -c 参数。同时,请找一个安全的地方放置 .htusers 这个档案,所谓的“安全”是指至少不要在公开网页可以被下载到的路径,例如放在 public_html 的上一层。

    继续增加第二组帐号及密码到验证档时,就不用加 -c 参数:

    htpasswd /path/to/.htusers UserName2

    建立群组资料档

    如果用户比较多,你可能会想要用群组的方式来做管理。群组资料档的目的是要将多个用户设为一个群组,请新增或编辑 /path/to/.htgroups,依需求增加类似如下的设定:

    Group1:UserName1 UserName2

    代表 Group1 包含 UserName1UserName2 这两个用户。

    验证登入

    在欲执行用户验证的网页目录下,建立一个 .htaccess 档案,验证的方式可针对用户或群组,差别在于 require 这个参数。

    针对用户:

    AuthName "Restricted Area" # 名称必须用英文
    AuthType Basic
    AuthUserFile /path/to/.htusers
    require user UserName1 # 仅针对特定用户,以空白分隔多个用户

    上述的最后一行是只有 UserName1 允许进入,你也可以改成:

    require valid-user # 针对全部用户

    表示针对 .htusers 里的所有用户。

    针对群组:

    AuthName "Restricted Area" # 名称必须用英文
    AuthType Basic
    AuthUserFile /path/to/.htusers
    AuthGroupFile /path/to/.htgroups
    require group Group1 # 仅针对特定群组的用户,以空白分隔多个群组

    表示针对 .htgroups 里,归属于 Group1 下的用户。

    针对特定档案:

    若你只想针对特定档案做保护,那可以与 <Files>~</Files> 一起使用:

    <Files FileName>
         require valid-user
    </Files>

    <Files>~</Files> 一次只能填写一个档案,但支援正规表示式。以下是使用正规表示式限制图档存取的范例:

    <Files ~ "\.(gif|jpe?g|png)$">
         require valid-user
    </Files>

    或是:

    <FilesMatch "\.(gif|jpe?g|png)$">
         require valid-user
    </FilesMatch>

    设定好之后,当用户要存取该目录 (或档案),就会跳出叫你登入的对话框:


    另外,你也可以在网址中直接输入你的帐号、密码,格式:

     http://UserName:Password@www.example.com/directory/

    问题排除

    如果在设定 htaccess 认证方式之后,在进入网页时,仍然没有跳出验证的对话框,则请编辑 /etc/httpd/conf/httpd.conf,搜寻相关的“AllowOverride”设定,改成:

    AllowOverride All

    安全性问题

    虽然用户储存在 Server 端的密码有经过加密,但因为是采用 Basic 方式验证,当要存取网页时,用户输入的帐号与密码仅是以 Base64 编码,包裹在 Headers 里进行传输,有机会被窃听之后解码、盗用! 网站必须导入 SSL 才能完全在传输的过程中加密。

    参考网页

    [Perl]格式化系统 LOG 分析 *

    本文件是参考鸟哥写的 logfile.sh,我把它改成符合我自己系统的 LOG 分析程式,全面以 Perl 重写。我自己用了一段时间 (其实也半年了),觉得勉强还可以用,所以公开给大家用看看…
    Read more

    [Perl]安装 ImageMagick 相关模组 *

    ImageMagick 是个功能强大的图片工具,让你读取、写入、操作任何热门的图片格式,如 GIF、JPEG、PNG、PDF… 等。使用 ImageMagick 可以即时的建立 GIF 的图片档案,让图形可以更融入网页等应用接口。你也可以更改图片的大小、反转图形、增强亮度、减少颜色对比、加入额外特殊的效果。图片可以储存不同的格式依你的工作需求。
    Read more

    Redhat Linux 7.3 快速安装指引 *

    教你快速安装 Redhat Linux 7.3…

    特点及功能如下

    • 使用单纯的结构,以提供主流服务,系统将不安装 X-Window 接口。
    • 具备 ProFtp、Sendmail、Webmail、web 及数据库 (MySQL) 的服务。
    • 可使用浏览器在线上做系统管理 (WebMin)、数据库维护 (phpMyAdmin) 及流量监控 (Mrtg)。
    • 每天与时间服务器对时。
    • 每周自动更新系统的套件。

    Read more

    return top