关于密码的二三事

关于账号和密码的二三事

久了不更linux的相关知识,实在是懒得想内容点(纯粹是懒)。那么今天就来谈谈关于linux密码和账号的重要概念。

假如你的主机遭到入侵,那么对方的第一个侵入点自然就是主机上面的账号密码。所以,如果密码定义比较严格(就像我这种脑抽自然是有%&@#!这种自己都嫌烦的字符),那么自然对方就不容易猜到你的密码,保障也是杠杠的!

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

由上面猜测密码的方式来说,设定一个好密码最好需要:

  • 密码中含有数个特殊字符,例如#@$%^及数字键等等,你的按键越奇怪,那么对方越不容易使用既有的软件破解。什么123456、666666的就不要用了~
  • 英文字母大小写混合使用
  • 密码长度至少6~8个以上为好
  • 没有特殊意义的字母或数字组合,并且夹着很多特殊字符

↑这种密码真的不容易破解,就是也容易被忘记就是了→ →

特别的什么【I&you~^_^~】也是可以的~

说回linux,基本上root可以设定【任何样式的密码】,而且root也可以帮助user订定他们的密码。那么修改密码使用什么命令?就是passwd了!

passwd

[root@linux ~]# passwd [-lunxwS] username
参数:
-l :将 username 这个账号的密码锁住 (lock),在 /etc/shadow 内的密码栏修订~
-u :将 -l 的 lock 解开!
-n :后面接天数 (数字) ,最短天数;亦即是 /etc/shadow 内的第四栏;
-x :后面接天数 (数字) ,最长天数;亦即是 /etc/shadow 内的第五栏;
-w :后面接天数 (数字) ,警告天数;亦即是 /etc/shadow 内的第六栏;
-S :显示目前这个 username 的相关信息。
范例:
范例一:将 dmtsai 这个使用者的密码冻结,并观察他!
[root@linux ~]# passwd -l dmtsai
Locking password for user dmtsai.
passwd: Success
[root@linux ~]# passwd -S dmtsai
Password locked.
[root@linux ~]# grep dmtsai /etc/shadow
dmtsai:!!$1$TDy6D7eg$jVJV/FMaQn14v5Kl7sqw6/:13026:0:99999:7::13149:
范例二:将上述密码冻结解开
[root@linux ~]# passwd -u dmtsai

实际上这个passwd指令功能强大,尤其很多功能仅有root才能执行。你可以使用passwd -lpasswd -u来强制让一个使用者暂时无法使用该账号。

在linux下,为了避免一不小心把系统玩坏,一般都会建议你以一般身份使用者来操作,等到需要设定系统环境时,才变换身份为root进行系统管理。

那么下面就来谈谈使用者身份切换问题。

一般而言,我们都不希望以root的身份登入主机,以避免被什么给入侵了。但是一部主机又不可能完全不进行修补或者设定等动作。这时候可以:

  1. su直接将身份变成root,但是这个指令需要root密码
  2. 所以当有很多人同时管理一部主机的时候,那么root的密码不就很多人知道了吗?这个时候可以使用sudo来进行工作

su

[root@linux ~]# su [-lcm] [username]
参数:
- :如果执行 su - 时,表示该使用者想要变换身份成为 root ,且使用 root 的
环境设定参数档,如 /root/.bash_profile 等等。
-l :后面可以接使用者,例如 su -l dmtsai ,这个 -l 好处是,可使用欲变换身份者
他的所有相关环境设定档。
-m :-m 与 -p 是一样的,表示『使用目前的环境设定,而不重新读取新使用者的设定档。』
-c :仅进行一次指令,所以 -c 后面可以加上指令喔!
范例:
范例一:由原本的 dmtsai 这个使用者,变换身份成为 root 。
[dmtsai@linux ~]$ su
Password: <==这里输入 root 的密码喔!
[root@linux ~]# env
USER=dmtsai
USERNAME=root
MAIL=/var/spool/mail/dmtsai
LOGNAME=dmtsai
# 注意到了吗?如果使用 su 没有加上 - 的话,那么很多原本使用者的相关设定会继续存在,
# 这也会造成后来的 root 身份在执行时的困扰。最常见的就是 PATH 这个变量的问题!
[root@linux ~]# exit<==这样可以离开 su 的环境!
[dmtsai@linux ~]$ su -
Password: <==这里输入 root 的密码!
[root@linux ~]# env
USER=root
MAIL=/var/spool/mail/root
LOGNAME=root
# 了解差异了吧?!所以,下次在变换成为 root 时,记得最好使用 su - !
范例二:使用 root 的身份,执行 head -n 3 /etc/shadow
[dmtsai@linux ~]$ su - -c "head -n 3 /etc/shadow"
Password: <==这里输入 root 的密码!
root:$1$jaldj9843u29jlj9u839jljlcghjlE/:12959:0:99999:7:::
bin:*:12959:0:99999:7:::
daemon:*:12959:0:99999:7:::
范例三:原本是 dmtsai 这个使用者,想要变换身份成为 vbird 时?
[dmtsai@linux ~]$ su -l vbird
Password: <==这里输入 vbird 的密码喔!

sudo

sudo的工作:

  • 当使用者执行sudo时,系统会主动的去寻找/etc/sudoers档案,判断该使用者是否有执行sudo的权限
  • 若使用者具有可执行sudo的权限后,便让使用者【输入使用者自己的密码】来确认
  • 若密码输入成功,便开始进行sudo后续接的指令
  • 不过,root执行sudo时,不需要输入密码
  • 若欲切换的身份与执行者身份相同,那也不需要输入密码

要注意的是,使用者要【输入的是自己的密码,而不是欲切换成为他的那个身份的密码】。

[root@linux ~]# sudo [-u [username|#uid]] command
参数:
-u
:后面可以接使用者账号名称,或者是 UID。例如 UID 是 500 的身份,可以:
-u #500 来作为切换到 UID 为 500 的那位使用者。
范例:
范例一:一般身份使用者使用 sudo 在 /root 底下建立目录:
[dmtsai@linux ~]$ sudo mkdir /root/testing
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.Password: <==这里输入 dmtsai 自己的密码
dmtsai is not in the sudoers file.
This incident will be reported.
# 瞧!因为 dmtsai 不在 /etc/sudoers ,所以他就无法执行 sudo 喔!
范例二:假设 dmtsai 已经具有 sudo 的执行权限,如何在 /root 底下建立目录?
[dmtsai@linux ~]$ sudo mkdir /root/testing
Password: <==这里输入 dmtsai 自己的密码
范例三:如何将 sudo 与 su 搭配使用?
[dmtsai@linux ~]$ sudo su -
范例四:dmtsai 想要切换身份成为 vbird 来进行 touch 时?
[dmtsai@linux ~]$ sudo -u vbird touch /home/vbird/test

在预设情况下,没有设定/etc/sudoers是不能使用sudo的。而/etc/sudoers需要visudo去编辑,也就是要用root身份去执行visudo。

[root@linux ~]# 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
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
dmtsai ALL=(ALL) ALL
<==这里将 dmtsai 制作成完全可用!
# 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的结构可以使用man sudoers去查阅。关于【dmtsai ALL=(ALL) ALL】代表的意义是:

使用者账号 登入的主机=(可以变换的身份) 可以下达的指令

好了,今天终于扯完了- -||,我们下次见。

linux杂记(十二?) 关于账号和密码的二三事的更多相关文章

  1. linux保存住github的账号和密码

    我是用 shell 命令来执行 git 操作的,所以就决定在 --global 配置一下用户名和密码,不用每次手动输入了. 设置步骤 1. 首先需要 ftp 连接到你的 Linux 服务器,在根目录( ...

  2. Linux账号和密码文件 /etc/passwd和/etc/shadow

    Linux系统中,所有用户(包括系统管理员)的账号和密码都可以在/etc/passwd和/etc/shadow这两个文件中找到,(用户和密码就放在文件中,不怕被其他人看的或者修改吗?/etc/pass ...

  3. webug第十二关:我系统密码忘记了!

    第十二关:我系统密码忘记了! 文件上传 直接上传php一句话, 菜刀链接

  4. 数据库里账号的密码,需要怎样安全的存放?—— 密码哈希(Password Hash)

    最早在大学的时候,只知道用 MD5 来存用户的账号的密码,但其实这非常不安全,而所用到的哈希函数,深入挖掘,也发现并不简单-- 一.普通的 Hash 函数 哈希(散列)函数是什么就不赘述了. 1.不推 ...

  5. (转) mysql的连接,创建账号,修改密码

    原文:http://blog.chinaunix.net/uid-20749043-id-1878306.html  mysql的连接,创建账号,修改密码 2008-10-13 15:31:29 分类 ...

  6. Linux系统 Cetos 7 中重置root密码

    几个月前在自己电脑上面安装了一个Linux 的虚拟机环境,当时是为了测试某一个小功能,用完就扔那里了,长时间没有使用,发现Root密码忘记了,登陆不了,怎么办呢?(ps:如果实际情况中忘记密码的这个服 ...

  7. MongoDB 设置账号和密码

    一.安装MongoDB 1.环境配置: i.操作系统:CentOS release 6.8 (Final) [root@iZ2ze2pbbffhmn53ao4tuaZ bin]# cat /etc/r ...

  8. (转)mysql账号权限密码设置方法

    原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...

  9. 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)

    在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在clie ...

随机推荐

  1. 【Andord真】SlideMenu+ViewPagerIndictor双滑动边栏+滑动导航条

    采取SlideMenu达到的效果侧边栏: 间 setContentView是设置主背景的布局 setBehindContentView是设置左边菜单的布局 setSecondaryMenu是设置右边的 ...

  2. openstack之horizon源码分析之二

    一.概述: django基础入手: django新建project:#django-admin startproject mysite 生成如下目录: mysite ├── manage.py └── ...

  3. setter设置器 gutter访问器

    set方法书写规范: 1.必须以set开头,set后跟去掉下划线的实例变量并且首字母大写.ps: setAge:2.一定有参数3.不能有返回值4.一定是对象方法(-开头)5.形参一般是去掉下划线的实例 ...

  4. GCD 续集

    1.延迟执行 1.1.perform... // 3秒后自动回到当前线程调用 self 的 download: 方法,并且传递参数:@“http://xxx.jpg” [self performSel ...

  5. WindowsService服务程序开发

    Windows服务:Microsoft Windows 服务(即,以前的 NT服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可 ...

  6. SPRING 配置文件和类名

    今天写项目碰到一个很奇怪的问题,无论怎么改,还是一直包空指针 最终的问题出现在spring配置文件

  7. c++中的const参数,const变量,const指针,const对象,以及const成员函数

    const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whe ...

  8. getActionBar().setTitle(); Java.lang.NullPoint异常解决方案

    getActionBar().setTitle(); Java.lang.NullPoint异常解决方案,是由于低版本不支持直接获取的缘故,修改方案: try changing your theme ...

  9. uvalive 6888 Ricochet Robots bfs

    题目链接 给一个n*m的图, 图上有n个标号, n<=4, 然后有墙, 还有一个终点x. 每一步, 只能走某一个标号, 可以向四个方向走, 然后必须要碰到墙或者图的边界或者另一个标号才能停下来. ...

  10. 微信网页授权java实现

    功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等..)可用来实现微信登录.微信账号绑定.用户身份鉴权等功能.     开发前的准备: 1.需 ...