Chinaunix首页 | 论坛 | 博客
  • 博客访问: 791750
  • 博文数量: 179
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1536
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-27 11:05
个人简介

MySQL工程师 QQ:1815357042

文章分类

全部博文(179)

文章存档

2015年(179)

分类: LINUX

2015-02-06 13:57:53

快速命令行 – 快捷方式
ctrl+d 在空命令行的情况下可以退出终端。

vim
末行模式下
:ser nu 然后  直接输入行号

编辑模式下
其中i是将其后输出的字符插入到当前光标位置之前。命令I是将其后输入的字符插入到当前光标所在行的行首
其中命令a是将其后输入的字符插入到当前光标位置之后,而命令A则是将其后输入的字符追加到当前光标所在行的行尾

命令模式下
I 在行首进入编辑模式
i 在光标前进入编辑模式
p 在光标下一行进行粘贴 
P 在光标当前行进行粘贴 
yy 复制一行
u 撤销上一次操作
o 在光标所在行的下一行行首并进入编辑模式 

在命令模式下     按住shift +两次z 保存并退出


相关命令

who命令
who命令用于显示谁登录了系统(show who is logged on),who am i与之相同。另外一个叫whoami的命令,只输出用户账号。而who或者who am i不仅显示账号,还显示终端文件名、时间、来源IP等。 
常用方式
格式:who
格式:who am i
简单显示当前登录系统用户的信息,可以轻松的获取当前登录系统的用户列表,包含使用终端登录。 
格式:who -a
格式:who -aH
显示所有用户的所有信息(The -a argument of the who command lists all available output for each user on your system.)

  1. lyhabclinux@lyhabclinux:~$ who -aH
  2. NAME LINE TIME IDLE PID COMMENT EXIT
  3.            system boot 2014-11-27 10:34
  4.            run-level 2 2014-11-27 10:34
  5. LOGIN tty4 2014-11-27 10:34 1162 id=4
  6. LOGIN tty5 2014-11-27 10:34 1172 id=5
  7. LOGIN tty2 2014-11-27 10:34 1189 id=2
  8. LOGIN tty3 2014-11-27 10:34 1190 id=3
  9. LOGIN tty6 2014-11-27 10:34 1192 id=6
  10. LOGIN tty1 2014-11-27 10:34 1227 id=1
  11. lyhabclinux + pts/0 2015-02-06 10:12 . 23920 (183.63.158.150)
  12.            pts/1 2014-12-04 11:18 15008 id=ts/1 term=0 exit=0

su命令
su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s或--shell=:指定要执行的shell;
--help:显示帮助; --version;显示版本信息。


useradd命令和adduser命令
Linux系统如何添加用户这个问题到网上问一下或者搜一下,很多人可能会说useradd,实际这是不对的。useradd只会添加一个用户,没有创建它的主目录,除了添加一个新用户之外什么都没有。这个用户甚至不能登录,因为没有密码。正确的做法是man page里说的,adduser,这个命令实际是一个perl脚本,是useradd等类似底层命令的更友好的前端,它会用交互性的方式建立新用户,使用它可以指定新用户的家目录,登录密码,是否加密主目录等等,它会:
1.建立一个新目录作为家目录
2.建立同名新用户组
3.把用户的主要组设为该组(除非命令选项覆盖以上默认动作,比如–disall-homdirecry之类)
4.从/etc/SKEL目录下拷贝文件到家目录,完成初始化
5.建立新用户的密码
6.如果其存在的话,还会执行一个脚本。

useradd命令adduser命令
在root权限下,useradd只是创建了一个用户名,如 (useradd  +用户名 ),它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的
为了避免这样的情况出现,可以用 (useradd -m +用户名)的方式创建,它会在/home目录下创建同名文件夹,然后利用( passwd + 用户名)为指定的用户名设置密码。
2. 可以直接利用adduser创建新用户(adduser +用户名)这样在/home目录下会自动创建同名文件夹
3.  删除用户,只需使用一个简单的命令“userdel 用户名”即可。不过最好将它留在系统上的文件也删除掉,你可以使用“userdel -r 用户名”来实现这一目的。 

userdel命令和deluser命令

userdel 是一个底层用于删除用户的工具。在 Debian 上,我们通常会使用 deluser 命令。userdel 会查询系统账户文件,例如 /etc/password 和 /etc/group。
那么它会删除所有和用户名相关的条目。在我们删除它之前,用户名必须存在。
由于 userdel 会修改系统账户文件,那么我们需要root特权来运行它。不然我们会遇到一个报错信息“只有root权限才能执行这项操作”或者类似的信息
userdel 是一个 Linux 系统内部删除用户的工具。userdel同样是deluser命令的后端,这是一个用perl编写的删除用户的脚本。如往常一样,你可以输入man userdel来查看关于userdel命令的更多细节

前端(最好还是执行前端命令):deluser,adduser
后端(perl脚本中的其中一个命令已而):userdel,useradd

groups命令
groups命令在标准输入输出上输出指定用户所在组的组成员,每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组。

grep命令
文件过滤分割与合并 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

sudo命令
系统安全 sudo命令用来以其他身份来执行命令,预设的身份为root。
在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。
用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码


usermod命令
用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user ID,必须确认这名user没在电脑上执行任何程序
你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。

实例
将newuser2添加到组staff中: 
  1. usermod -G staff newuser2

修改newuser的用户名为newuser1: 
  1. usermod -l newuser1 newuser

锁定账号newuser1: 
  1. usermod -L newuser1

解除对newuser1的锁定:
  1. usermod -U newuser1



输入who am i
  1. lyhabclinux@lyhabclinux:~$ who am i
输出
  1. lyhabclinux pts/0 2015-02-06 10:12 (183.63.x.x)

在linux的世界里,上帝必然就是root账户了,它拥有整个系统至高无上的权利,比如分分钟创造个“人”(新建/添加用户)出来。


root权限,系统权限的一种,与SYSTEM权限可以理解成一个概念,但高于Administrator权限,root是Linux和unix系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力。
所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到root权限,用windows的方法理解也就是将自己的非法帐户添加到Administrators用户组。
更比如安卓操作系统中(基于linux内核)获得root权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。


我们一般登录系统时都是以普通账户的身份登录的,也就是说我就是个普通人,那么我怎么添加用户呢,一般人又没有那能力。
嘿嘿,都说了是扮上帝的嘛,这里就要用到sudo这个命令了。
不过使用这个命令有两个大前提,
一是你要知道当前登录用户的密码
二是当前用户必须在sudo用户组。
lyhabclinux用户,它同时也属于sudo用户组(稍后会介绍如何查看和添加用户组),那就开始动手吧

新建一个叫li123的用户:
  1. lyhabclinux@lyhabclinux:~$ sudo useradd li123
  2. lyhabclinux@lyhabclinux:~$ sudo passwd li123
最好不要用adduser,因为要输入很多个人资料
然后添加密码,默认在创建完用户之后是没有密码的
  1. lyhabclinux@lyhabclinux:~$ sudo passwd li123
  2. Enter new UNIX password:
  3. Retype new UNIX password:
  4. passwd: password updated successfully
安装finger
  1. lyhabclinux@lyhabclinux:~$ sudo apt-get install finger
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. The following NEW packages will be installed:
  6.   finger
  7. 0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded.
  8. Need to get 19.6 kB of archives.
  9. After this operation, 81.9 kB of additional disk space will be used.
  10. Get:1 http://azure.archive.ubuntu.com/ubuntu/ precise/main finger amd64 0.17-14 [19.6 kB]
  11. Fetched 19.6 kB in 0s (28.1 kB/s)
  12. Selecting previously unselected package finger.
  13. (Reading database ... 51501 files and directories currently installed.)
  14. Unpacking finger (from .../finger_0.17-14_amd64.deb) ...
  15. Processing triggers for man-db ...
  16. Setting up finger (0.17-14) ...
用finger查看用户权限,属主目录,所用的shell
  1. lyhabclinux@lyhabclinux:~$ finger li123
  2. Login: li123 Name:
  3. Directory: /home/li123 Shell: /bin/bash
  4. Never logged in.
  5. No mail.
  6. No Plan.

这个命令不但可以添加用户到系统,同时也会默认为新用户创建home目录
  1. lyhabclinux@lyhabclinux:~$ ls /home
  2. lilei lyhabclinux ubuntu


现在你已经创建好一个用户,并且你可以使用你创建的用户登录了,使用如下命令切换登录用户
  1. lyhabclinux@lyhabclinux:~$ su -l li123
是否切换成功
  1. li123@lyhabclinux:/$ whoami
  2. li123
检查所在目录
  1. lilei@lyhabclinux:~$ pwd
  2. /home/lilei
  3. lilei@lyhabclinux:~$

退出当前用户跟退出终端一样可以使用exit命令或者使用快捷键Ctrl+d

层层logout之后,你不停的切换用户,不停su 那么就会进入不停的用户,如果要回到最初那个用户,要么执行多次exit,要么su 到那个最初用户
  1. lilei@lyhabclinux:~$ exit
  2. logout
  3. li123@lyhabclinux:/$ exit
  4. logout
  5. lyhabclinux@lyhabclinux:~$

在linux里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多,你的兄弟姐妹(不同的用户)输入同一个家(用户组),
你们可以共同拥有这个家(共享资源),你爸妈对待你们都一样(共享权限),你偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。
当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。

在linux里面如何知道自己属于哪些用户组呢
方法一:使用groups命令
  1. lyhabclinux@lyhabclinux:~$ groups li123
  2. li123 : li123
其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到li123用户属于li123用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组
(差不多就相当于家长的意思,或者说是老总),这里你要特别注意sudo用户组,如果你没在这个sudo用户组那么你是不能使用sudo命令的,即你是无法临时获得管理员权限,
后面会讲如何将已有用户加入到sudo用户组

方法二:查看/etc/group文件
  1. lyhabclinux@lyhabclinux:~$ cat /etc/group | sort
  2. admin:x:111:ubuntu,lyhabclinux
  3. adm:x:4:ubuntu,lyhabclinux
  4. audio:x:29:ubuntu
  5. backup:x:34:
  6. bin:x:2:
  7. cdrom:x:24:ubuntu,lyhabclinux
  8. crontab:x:102:
  9. daemon:x:1:
  10. dialout:x:20:ubuntu
  11. dip:x:30:ubuntu
  12. disk:x:6:
  13. fax:x:21:
  14. floppy:x:25:ubuntu
  15. fuse:x:104:
  16. games:x:60:
  17. gnats:x:41:
  18. irc:x:39:
  19. kmem:x:15:
  20. landscape:x:109:
  21. li123:x:1003:
  22. libuuid:x:101:
  23. lilei:x:1002:
  24. list:x:38:
  25. lp:x:7:
  26. lyhabclinux:x:1001:
  27. mail:x:8:
  28. man:x:12:
  29. messagebus:x:105:
  30. mlocate:x:107:
  31. mysql:x:112:
  32. netdev:x:110:ubuntu
  33. news:x:9:
  34. nogroup:x:65534:
  35. operator:x:37:
  36. plugdev:x:46:ubuntu
  37. proxy:x:13:
  38. root:x:0:
  39. sasl:x:45:
  40. shadow:x:42:
  41. src:x:40:
  42. ssh:x:108:
  43. staff:x:50:
  44. sudo:x:27:
  45. syslog:x:103:
  46. sys:x:3:
  47. tape:x:26:
  48. tty:x:5:
  49. ubuntu:x:1000:
  50. users:x:100:
  51. utmp:x:43:
  52. uucp:x:10:
  53. video:x:44:ubuntu
  54. voice:x:22:
  55. whoopsie:x:106:
  56. www-data:x:33:
这里cat命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用.| sort表示将读取的文本进行一个字典排序再输出,然后你将看到如下一堆输出,你可以在最下面看到的用户组信息


我们可以过滤一下结果
  1. lyhabclinux@lyhabclinux:~$ cat /etc/group | grep -E "li123|sudo"
  2. sudo:x:27:
  3. li123:x:1003:
etc/group文件格式说明
/etc/group的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
你看到上面的password字段为一个'x'并不是说密码就是它,只是表示密码不可见而已


将其它用户加入sudo用户组
默认情况下新创建的用户是不具有root权限的,也不在sudo用户组,也就无法通过sudo命令临时获取root权限


切换到li123账户
  1. lyhabclinux@lyhabclinux:~$ su -l li123
  2. Password:
  3. No directory, logging in with HOME=/
  4. li123@lyhabclinux:/$

随便执行一个ls的命令,用sudo权限来执行,如果没有sudo权限就会报错
  1. li123@lyhabclinux:/$ sudo ls
  2. [sudo] password for li123:
  3. li123 is not in the sudoers file. This incident will be reported.
会提示li123不在sudoers文件中,意思就是li123不在sudo用户组中,至于sudoers文件(/etc/sudoers)你现在最好不要动它,操作不慎会导致比较麻烦的后果。


使用usermod命令可以为用户添加用户组,同样使用该命令你必需有root权限,你可以直接使用root用户为其它用户添加用户组,或者用其它已经在sudo用户组的用户使用sudo命令获取权限来执行该命令


这里我用lyhabclinux用户执行sudo命令将li123添加到sudo用户组,让它也可以使用sudo命令获得root权限
  1. li123@lyhabclinux:/$ su -l lyhabclinux
  2. Password:
  3. lyhabclinux@lyhabclinux:~$ su lyhabclinux
  4. Password:
  5. lyhabclinux@lyhabclinux:~$ groups li123
  6. li123 : li123
  7. lyhabclinux@lyhabclinux:~$ sudo usermod -G sudo li123
  8. lyhabclinux@lyhabclinux:~$ groups li123
  9. li123 : li123 sudo
  10. lyhabclinux@lyhabclinux:~$
然后再切换会lilei用户,现在就可以使用sudo获取root权限了。


上帝说我要抹杀掉你?
上帝怒了,要从他世界里抹掉某个人的存在,那对他来说也是相当简单啊
  1. lyhabclinux@lyhabclinux:~$ sudo deluser lilei --remove-home
  2. Looking for files to backup/remove ...
  3. Removing files ...
  4. Removing user `lilei' ...
  5. Warning: group `lilei' has no more members.
  6. Done.

或者
userdel 提供了 -f 选项来强制删除用户。甚至当用户已经登入 Linux 系统时此选项仍旧生效

使用ps ax|grep 用户名 来查看是否有进程使用要删除的用户

  1. lyhabclinux@lyhabclinux:~$ ps ax|grep li123
  2. 24604 pts/0 S  0:00 su -l li123
  3. 25176 pts/0 S+ 0:00 grep --color=auto li123
上面显示用户 li123已经登录了系统。它被标记的进程25176是 grep进程
  1. lyhabclinux@lyhabclinux:~$ sudo userdel -f -r li123
我们验证一下
  1. lyhabclinux@lyhabclinux:~$ cat /etc/passwd |grep li123
  2. lyhabclinux@lyhabclinux:~$

  1. lyhabclinux@lyhabclinux:~$ ll /home
  2. total 16
  3. drwxr-xr-x 4 root root 4096 Feb 6 13:54 ./
  4. drwxr-xr-x 23 root root 4096 Nov 27 10:33 ../
  5. drwxr-xr-x 4 lyhabclinux lyhabclinux 4096 Feb 6 14:03 lyhabclinux/
  6. drwxr-xr-x 2 ubuntu ubuntu 4096 Sep 26 02:07 ubuntu/

当我们用“userdel -f -r  li123”只会显示已经登录的要被删除的用户信息。命令本身已经成功


有一件事我们必须了解,带 -f 选项的 userdel 不会断开 该用户已有的 SSH 链接
因此,即使用户已经不存在,但实际上仍是登录状态,并且是活跃用户。但是当用户登出后不可再登录,因为用户已经被删除。


因此所以这个选项使用起来有些危险,因为它会使你的系统进入不一致的状态。


阅读(2176) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~