Linux学习资料-5(密码管理与设定、使用者身份切换、使用者查询、手动增加使用者)...

密码管理与设定: 

再来跟大家提一提那个重要的密码概念!您得要特别留意的是,今天,您的主机若是遭到入侵,对方的第一个入侵点自然就是您主机上面账号的『密码』了,所以,如果您的密码定义的比较严格的话,那么自然对方就不容易猜到你的密码,自然就会比较有保障啦! 

  

目前一些 Cracker 较常使用的密码破解软件,大抵是『字典攻击法』及所谓的『暴力攻击法』,就字面上的意义来说,『字典攻击法』是将字典里面所查的到的任何单字或词组都输入的程序中,然后使用该程序一个一个的去尝试破解你的密码,不要觉得这样的速度似乎很慢,实际上,现今的计算机运算速度太高了,字典攻击法的操作效率基本上是很高的!另一个『暴力攻击法』就是直接使用键盘上面任何可以使用的按键,然后依照组合,以 1 个, 2 个, 3 个…. 密码组合的方式去破解你的密码!这个方式就真的比较慢一点,如果你的密码组合是 6~8 个字符以上,那么暴力攻击法还是需要好长一段时间才能够破解的了的! 

  

由上面的『字典攻击法』与『暴力攻击法』猜测你的密码的方式来说,您知道如何设定一个好的密码了吗?是的,您的密码最好需要底下几个特性: 

密码中含有数个特殊字符,例如 $#@^&* 及数字键等等:如同上面提到的,您的按键越奇怪,那么对方就越不容易使用既有的软件来破解! 

英文字母大小写混合使用; 

密码长度至少要到 6 ~ 8 个以上才好; 

没有特殊意义的字母或数字组合,并且夹着很多的特殊字符! 

这种密码真的很不容易被破解,但是很不幸的,也很容易被你我忘记??所以呢,建议您常常使用一些对别人来说是没有意义,但是对您确有特殊涵意的字眼!例如我常常提到的,我爱我老婆!『 I&Mywife*^』之类的密码!不容易被猜,也挺容易被你自己记住的!那么有没有『很要命的密码』呢?有的,底下几种密码就很要命: 

常用的英文单字:例如 party, park, andyliu, linux, paper 等等,都不好!容易被字典攻击法破解! 

身边人物的名字,例如配偶、小孩的名字等等, Tom, andy, eric 等等,都不好! 

单纯的日期:例如您的生日啦!等等的,都不够好! 

任何与您相关的数字或其它信息,例如身份证号、银行账号等; 

VBird 曾经见过直接以账号做为密码的状况!真是要命??太好猜了? 

  

好了!知道了密码的重要性,与基本的设定之后,接着下来我们谈一谈如何手动设定密码吧!基本上, root 可以设定『任何样式的密码』,而且, root 也可以帮助 user 订定他们的密码!至于 user 仅能修改自己的密码!那么修改密码使用什么命令?就是 passwd 这个命令啦!咦!这里突然给他想到几个重要信息,大家赶紧复习一下: 

如何寻找 passwd 这个指令? 

使用 which passwd 即可

如何察看 passwd 这个档案的属性?并请说明他的属性为何? 

使用 ls –l `which passwd` 即可!他具有 SUID 的属性!

什么是 SUID ? 

就是该程序在被执行的过程中,具有程序拥有者的权限!

我该如何查询 /etc/passwd 与 /usr/bin/passwd 的用法与架构? 

分别使用 man passwd 及 man 5 passwd

这些指令与意义如果都还没有忘记!恭喜您了!真是不错!好了,还记得我们密码放在哪里吗?对啦!就是 /etc/shadow 里面,那个档案的权限是 –rw------- 所以只有 root 可以修改,因此, passwd 必需要具有 SUID 才能让一般使用者修改他们的密码啰!


--------------------------------------------------------------------------------


passwd 

语法: [root @test  /root]# passwd [username] 

[test @test  /root]# passwd 

[root @test  /root]# passwd test 

Changing password for user test 

New password:     <==输入密码 

BAD PASSWORD: it is based on a dictionary word 

Retype new password:   <==再输入一次! 

passwd: all authentication tokens updated successfully 

说明: 

这个指令可以修改使用者的密码!要注意的是,这个指令在 /bin/passwd 中,而账号所存放的地方在 /etc/passwd 中,是不一样的呦!搞清楚呦! 

一般使用者的用法是直接输入 passwd 即可; 

root 可以使用 passwd [username] 来替 username 这个账号取一个新的密码! 


--------------------------------------------------------------------------------

使用者身份切换: 

这里有个很有趣的问题要来跟大家分享一下,还记得在古老的年代里面,还没有 ssh 的时候,我们都是使用 telnet 登入系统的,偏偏系统预设是不开启 root 以 telnet 登入,那么好了!我们要怎样远程操控我们的 Linux 主机呀!?因为由前面的介绍我们不难发现,系统当中最特殊的账号就是 UID 为 0 的使用者了,他具有至高无上的权力!而且是系统管理员必须要具备的身份,否则怎样操控主机呢?您说是吧!好了,那么 telnet 将 root 的登入权限关掉了,而如果我们在制作一个使用者,并将其 UID 变为 0 的话又如何?嘿嘿!很抱歉, telnet 就是认 UID 的,所以肯定还是进不了系统,这个时候要怎么办呀!?就是变换身份呀!将一般使用者的身份变成了 root 就行了! 

  

但是怎样变换身份呀?怎么说呢?就是说,一般而言,我们都不希望以 root 的身份登入主机,以避免被怪客入侵了!但是一部主机又不可能完全不进行修补或者是设定等动作!这个时候要如何将一般使用者的身份变成 root 呢?主要有两种方式,分别是: 

以 su 直接将身份变成 root 即可,但是这个指令却需要 root 的密码,也就是说,如果你要以 su 变成 root 的话,你的一般使用者就必须要有 root 的密码才行; 

所以当有很多人同时管理一部主机的时候,那么 root 的密码不就很多人知道了?不是很好吧?所以,如果不想要将 root 的密码流出去呢?呵呵!可以使用 sudo 来进行工作呦! 

底下我们就来说一说 su 跟 sudo 的用法啦!


--------------------------------------------------------------------------------


su 

语法: [root @test  /root ]# su 

参数说明: 

范例: 

[test@test  test]$ su 

Password:          <==输入 root 的密码 

[root@test test]#       <==身份变成 root 了! 

[test@test test]$ su -  <==连环境参数档案都是读取 root 的! 

[root@test root]# su test  <==将 root 的身份改为 test ,且不需要输入密码喔! 

说明: 

这个指令很有用呦!这是用来将『一般身份转换成 super user 』的指令!通常为了安全的考虑, telnet 与 ssh 尽量不要以 root 的身份来登入!但是有时后我们又要在外头以 root 的身份来修改系统设定,这个时候 su 就很有用了!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 ,那么转换为其它身份的使用者,将不需要输入密码喔!很过瘾吧!例如上面的最后一个例子!


--------------------------------------------------------------------------------


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 的档案! 

说明: 

如果单纯的使用 su 来变换成 root 的身份,最大的好处是可以直接下达我们惯用的指令,但是,还是会有问题的,就是如果主机是由多人共管的时候,由于所有的人都必须要知道 root 的密码,如此一来,呵呵!很麻烦的啦!因为怕被入侵嘛!而且只要 root 改变了密码,那么所有人都必需要通知一次!很麻烦,加上,如果管理群中的一个人不小心泄出了 root 的密码,不就完蛋了??那么有没有可以不需要 root 的密码,却还是可以执行 root 的工具呢?呵呵!这个时候就有 sudo 的出现了! 

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 呦!会有问题!

sudo 除了变成 root 的功能之外!嘿嘿!他还可以变成『任何人』的功能呦!举个简单的例子来说好了,我们都知道启动程序的时候最好不要使用 root 来启动,因为如此一来当该程序被接管时,接管者(或者说是入侵者)将拥有 root 的权限了!所以近来我们都希望不要以 root 来启动一些程序啦!会比较安全!那么我们要以 root 来启动成为 test (例如常用的 nobody 这个账号)要如何作?很简单,就使用上面的第二个例子来看: 

  

sudo -u test touch test

   

root 可以改变身份成为 test 来建立档案!嘿嘿!还不需要输入密码!很棒吧!这个动作我曾经在 squid 这个执行程序上面做过,这样一来,即使我的 squid 被利用了,那么该怪客只能拥有 nobody 的权限,嘿嘿!该权限是很小很小的!所以可以达到保护主机的部分功能呦!

使用者查询: 

好了,知道了 UID,GID 以及与账号有关的一些信息之后,我们要来瞧瞧,那么如何知道哪一个使用者的 UID 与 GID ,以及他们所能够提供的支持的群组呢?可能的话,当然可以直接到 /etc/passwd 及 /etc/group 里面去查看啰!但是还有更简单的方法呢,那就是使用简单的指令工具呀!有哪些简便的工具呢?就是底下这几个: 

id  查询使用者的 UID, GID 及所拥有的群组; 

groups 查询使用者能够支持的群组; 

finger  查询使用者的一些相关讯息,例如电话号码等。 


--------------------------------------------------------------------------------


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 与所属的群组!当然啰,如果想要知道某个使用者的相关信息,就直接使用 id username ,例如 id test 就可以知道 test 这个使用者的相关信息啰!很方便吧!不需要去查看 /etc/passwd 及 /etc/group ! 

  


--------------------------------------------------------------------------------


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 这个邮件放置的地点,所以还会显示出是否有邮件的讯息呢!相当的方便吧!不过,这个 finger 通常必需要配合 chfn 这个指令,亦即是 13-1-6 的内容提到的那个指令,才能够显示出比较多的信息呢!另外,其实 finger 不是个很安全的指令,因此, Mandrake 系统预设是不安装这个套件的!如果您想要试试看 finger 的话,那么请依照第二篇教导的内容,将 Mandrake 安装光盘第二块放入 CDROM 当中,然后 mount cdrom 之后呢,再以『 rpm –ivh finger* 』来安装 finger 吧!至于 rpm  的用法,我们会在第十八章的时候在进行说明呦! 

  


--------------------------------------------------------------------------------


groups 

直接输入 groups 就可以显示出目前的使用者的所属群组了!包含了 Primary 与其它相关的群组都会被显示出来呢!


--------------------------------------------------------------------------------

手动增加使用者: 

好了,那么我们已经知道如何新增账号与删除甚至是修改账号了,呵呵!是否从此之后,天下太平呢?当然不是了!为什么呢?假设您今天要新增账号的内容是『数字账号』的话,那么是否可以使用 useradd 新增账号呢?例如: 

useradd 1234567

很抱歉?useradd 并不允许这样的账号设定的!唉?真难过,难道没有其它的方法可以新增这样的使用者账号了吗?咦!刚刚不是说过,其实我们都是使用 /etc/passwd 及 /etc/shadow 这几个档案来设定账号的吗?那么使用手动的方式是否就可以解决这样的困扰了!Bingo !没错!就是这样!所以底下我们尝试使用手动的方式来新增账号,试试看能不能成功的增加一个使用者 1234 呢?

一般使用者账号的增加: 

好了,现在我们知道其实使用 userconf 、 useradd 与 groupadd 其实会用到的档案最鲜明的就是 /etc/passwd 与 /etc/shadow 啰!那么如何手动的增加一个使用者呢?最大的困扰在于 passwd 与 shadow 的同步啦!OK!大致的步骤可以这样说:

先建立所需要的群组( vi /etc/group ) 

建立账号的各个属性( vi /etc/passwd ) 

将 passwd 与 shadow 同步化 ( pwconv ) 

建立该账号的密码 ( passwd acount ) 

建立使用者家目录 ( cp -r /etc/skel /home/account ) 

更改家目录属性 ( chown -R account.group /home/account ) 

这样就 OK 啦!实地的来新增一个 test 群组与账号来试试看: 

  建立新的群组 test ,设其 GID 为 520 

[root @test /root ]# vi /etc/group 

----略 

test:x:520:test               <==新增群组,且群组的人为 test ,GID 为 520 

建立 test 的各个属性 

[root @test /root ]# vi /etc/passwd 

----略 

test:x:520:520:testing account:/home/test:/bin/bash   <==建立各个属性 


同步化 /etc/passwd 与 /etc/shadow 

[root @test /root ]# pwconv         <==将 passwd 的资料转入 /etc/shadow 中! 


建立密码 

[root @test /root ]# passwd test    <==建立使用者 test 密码 

Changing password for user test 

New password: 

Retype new password: 

passwd: all authentication tokens updated successfully 


建立家目录并转化家目录的拥有者 

[root @test /root ]# cp -r /etc/skel /home/test 

[root @test /root ]# chown -R test:test /home/test

 


这样就建立完毕啰!!很简单吧!而由上面的例子,其实您也可以依据此而使用 scripts 来新增使用者,详细的步骤等以后 VBird 真的开发出来了,再来跟大家报告。(如果没记错的话,目前很多网页都已经有提供相关的大量建立账号的方式了!)


转载于:https://my.oschina.net/ysh3940/blog/350805

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值