Linux学习笔记6

Linux学习笔记6

  • Linux学习笔记6
      • Linux下passwd和shadow文件内容详解
      • 查看用户的uidgid扩展组
      • 用户和用户组管理
      • 执行历史命令最近的那条相似命令
      • 切换账号
      • 命令sudo
      • 不允许root远程登录Linux
      • 随机生成一个密码
      • 使用密码记录工具keepass来保存密码

Linux下passwd和shadow文件内容详解

http://blog.chinaunix.net/uid-22117760-id-264606.html

PS:shell字段,默认是/bin/bash,可以把该字段改为/sbin/nologin来阻止该账号登录,但是该账号能够使用FTP。

查看用户的uid、gid、扩展组

id

例:查看用户的id信息

[root@localhost ~]# id switch1
uid=2222(switch1) gid=1003(switch1) 组=1003(switch1)
[root@localhost ~]#

用户和用户组管理

useradd

例:增加一个用户

[root@localhost ~]# useradd switch1
[root@localhost ~]# tail -n1 /etc/passwd
switch1:x:1002:1003::/home/switch1:/bin/bash
[root@localhost ~]#

语法 : useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]

‘-u’ 自定义UID

‘-g’ 使其属于已经存在的某个组,后面可以跟组id, 也可以跟组名

‘-d’ 自定义用户的家目录

‘-M’ 不建立家目录

‘-s’ 自定义shell

userdel

例:删除用户

[root@localhost ~]# userdel switch1
[root@localhost ~]# ls -la /home/switch1/
总用量 12
drwx------ 3 1002 1003 74 3月 30 13:57 .
drwxr-xr-x. 5 root root 45 3月 30 13:57 ..
-rw-r--r-- 1 1002 1003 18 11月 20 13:02 .bash_logout
-rw-r--r-- 1 1002 1003 193 11月 20 13:02 .bash_profile
-rw-r--r-- 1 1002 1003 231 11月 20 13:02 .bashrc
drwxr-xr-x 4 1002 1003 37 3月 25 15:57 .mozilla
[root@localhost ~]#

PS:可以”-r”选项,在删除用户的时候删除家目录。

groupadd

例:新建一个组

[root@localhost ~]# groupadd group1
[root@localhost ~]# tail -n2 /etc/group
user2:x:1002:
group1:x:1003:
[root@localhost ~]#

PS:”-g”选项指定组。

groupdel

例:删除一个组

[root@localhost ~]# tail -n2 /etc/group
user2:x:1002:
group1:x:1003:
[root@localhost ~]# groupdel group1
[root@localhost ~]# tail -n2 /etc/group
user1:x:1001:
user2:x:1002:
[root@localhost ~]#

PS:组内有用户不能删除,只有删除了所有用户,才能删除组。

usermod

例:修改用户UID

[root@localhost ~]# useradd -u 100000 switch1
[root@localhost ~]# tail -n2 /etc/passwd
user2:x:1001:1002::/home/user2:/bin/bash
switch1:x:100000:1003::/home/switch1:/bin/bash
[root@localhost ~]# usermod -u 2222 switch1
usermod:警告:/var/spool/mail/switch1 不属于 switch1
[root@localhost ~]# tail -n2 /etc/passwd
user2:x:1001:1002::/home/user2:/bin/bash
switch1:x:2222:1003::/home/switch1:/bin/bash
[root@localhost ~]#

例:修改用户的扩展组

[root@localhost ~]# groupadd group1
[root@localhost ~]# tail -n4 /etc/group
user1:x:1001:
user2:x:1002:
switch1:x:1003:
group1:x:1004:
[root@localhost ~]# id switch1
uid=2222(switch1) gid=1003(switch1) 组=1003(switch1)
[root@localhost ~]# usermod -G group1 switch1
[root@localhost ~]# id switch1
uid=2222(switch1) gid=1003(switch1) 组=1003(switch1),1004(group1)
[root@localhost ~]#

例:锁定用户

[root@localhost ~]# passwd switch1
更改用户 switch1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# grep switch1 /etc/shadow
switch1:$6$kSrpEs8f$//Yp7g7k8cbVhiXBY5L2Xv2inFQRi5cL9JvlG6pjSnZM8.vZeZ1bbuzuTGMB4TW3rBD6V2S4nkmUyzmRORyj1.:16890:0:99999:7:::
[root@localhost ~]# usermod -L switch1
[root@localhost ~]# !grep
grep switch1 /etc/shadow
switch1:!$6$kSrpEs8f$//Yp7g7k8cbVhiXBY5L2Xv2inFQRi5cL9JvlG6pjSnZM8.vZeZ1bbuzuTGMB4TW3rBD6V2S4nkmUyzmRORyj1.:16890:0:99999:7:::
[root@localhost ~]#

PS:shadow中密码之前有感叹号表示被锁住了。解锁可以用”-U”选项解锁。

chfn

例:设置用户信息(finger)

[root@localhost ~]# grep switch1 /etc/passwd
switch1:x:2222:1003::/home/switch1:/bin/bash
[root@localhost ~]# chfn switch1
Changing finger information for switch1.
名称 []: switch1
办公 []: 123456
办公电话 []: 123456
住宅电话 []: 654321
Finger information changed.
[root@localhost ~]# !grep
grep switch1 /etc/passwd
switch1:x:2222:1003:switch1,123456,123456,654321:/home/switch1:/bin/bash
[root@localhost ~]#

执行历史命令最近的那条相似命令

!

例:执行最近的以tail开头的命令

[root@localhost ~]# !tail
tail -n2 /etc/group
user1:x:1001:
user2:x:1002:
[root@localhost ~]#

切换账号

su

例:从普通用户切换到root

[switch@localhost ~]$ id
uid=1000(switch) gid=1000(switch) 组=1000(switch),10(wheel)
[switch@localhost ~]$ su
密码:
[root@localhost switch]# id
uid=0(root) gid=0(root) 组=0(root)

PS:从普通用户到root用户可以不加username,但是要输入密码,从root到普通用户要加username,不需要输入密码。

PS:加上“-“选项会初始化呢环境变量,也就是说使用该选项会直接到切换用户的家目录下,不加则还是当前目录。

命令sudo

用su是可以切换用户身份,如果每个普通用户都能切换到root身份,如果某个用户不小心泄漏了root的密码,那岂不是系统非常的不安全?没有错,为了改进这个问题,产生了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即,使用 visudo 命令去编辑相关的配置文件/etc/sudoers. 如果没有visudo这个命令,请使用 yum install -y sudo 安装。

默认root能够sudo是因为这个文件中有一行 “root ALL=(ALL) ALL” 在该行下面加入 “test ALL=(ALL) ALL” 就可以让test用户拥有了sudo的权利。使用 “visudo” 命令编辑/etc/sudoers配置文件,其实它的操作方法和前面介绍的 “vi” 命令使用方法是一样的,按 ‘i’ 进入编辑模式,编辑完成后,按 “Esc” ,再输入 ”:wq” 完成保存。

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
test ALL=(ALL) ALL

此时可以验证一下test账户的权限了。
[root@localhost ~]# su test
[test@localhost root]$ ls
ls: 无法打开目录.: 权限不够
[test@localhost root]$ sudo ls
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.
[sudo] password for test:
123 456 789 anaconda-ks.cfg dirb install.log install.log.syslog test test1 test2 test3

由于切换到test账户后的当前目录依旧是在/root 下,test账户没有任何权限,所以 ‘ls’ 的时候提示说权限不够,然而使用 sudo ls 输入test账户自身的密码后就有权限了。初次使用sudo 时会有上面的一大段提示,而后再次使用sudo 命令则不再提示。

如果每增加一用户就设置一行,这样太麻烦了。所以可以这样设置。把 “# %wheel ALL=(ALL) ALL” 前面的 ‘# ‘ 去掉,让这一行生效。它的意思是,wheel这个组的所有用户都拥有了sudo的权利。接下来就需要把想让有sudo权利的所有用户加入到wheel这个组中即可。
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

配置文件/etc/sudoers包含了诸多配置项,可以使用命令 man sudoers 来获得帮助信息。

例:只允许使用普通账户登陆,而普通账户登录后,可以不输入密码就能sudo切换到root账户。下面是配置:

[root@localhost ~]# visudo

然后在文件的最后面加入三行:
User_Alias USER_SU = test, test1, aming
Cmnd_Alias SU = /bin/su
USER_SU ALL=(ALL) NOPASSWD: SU

PS:这里其实只是给前两行取了别名,这三行等同于如下一行:
test,test1,aming ALL=(ALL) NOPASSWD: /bin/su

PS:那么上述用户也能够替换成组。

保存配置文件后,使用test, test1, aming 三个账户登陆Linux后,执行命令 sudo su - 切换到root账户,获取root账户的所有权利。
[root@localhost ~]# su - test
[test@localhost ~]$ sudo su -
[root@localhost ~]# whoami
root

不允许root远程登录Linux

1.进入sshd服务配置文件

vim /etc/ssh/sshd_config

2.查找#PermitRootLogin yes,并改为PermitRootLogin no

3.重启sshd服务

/bin/systemctl restart sshd.service

PS:该方法只适用于用过ssh远程登录Linux的情况。

随机生成一个密码

mkpasswd

这个命令用来生成密码。Linux默认是没有这个命令的,需要安装一个包 “expect”,使用命令 yum install -y expect 即可完成安装。安装好后,输入命令:

[root@localhost ~]# mkpasswd
HXut8oy*8

PS:生成的随机字符串就可以作为一个密码,这个密码不容易记忆,但是可以使用密码管理工具管理密码。

使用密码记录工具keepass来保存密码

Keepass官网地址是: http://www.keepass.info 在官网keepass是这样被形容的: The free, open source, light-weight and easy-to-use password manager. 没错,这款软件是免费的、开源的、容易使用轻量级的密码管理工具。

PS:注意该软件是windows系统下的。

安装好后,运行keepass,首先创建一个新的密码库文件。

点菜单栏 “file” 然后选择 “new” , 为密码库文件找一个安全的地方存放。接下来,为密码文件创建一个 “master password” , 这个密码以后每次查看密码的时候都需要输入,输入正确后才可以查看,这样的设计也是为了安全。设置好密码后连续点两个 “ok” 完成创建密码库文件。

增加一个group

鼠标选中左侧的 “NewDatebase”(刚刚创建的数据库), 点右键选择 “Add Group”, 单击后创建新组,然后更改组名,比说叫做 “test”. 当然组下面还可以创建组,方法一样的。

创建一个Entry

鼠标左键先点一下刚才创建的组 “test” , 然后在右侧空白处右键单击,选择 “Add Entry”. 弹出一个会话窗口,Title 自定义,方便我们以后查找; User name 用来记录密码的用户是谁; Password 这个默认就存在了,也可以更改,点一下后面的 ”…” 图标可以查看密码的内容,再点一下变为不可见状态; URL 用来记录网址,方便跳转,比如这个密码为某个网站的某个会员的密码,那如果在这里填写了该网址地址,则可以直接跳转到那个网站,可以留空;Notes 用来写一些与这个密码相关的信息,方便记忆,可以留空。

修改Entry信息

在右侧窗口,选中要修改的Entry那行,鼠标移动到Title区域,双击则会跳出一个会话窗口,可以更改Entry的各项信息。

获取Entry密码

同样是在右侧窗口,选中要获取的密码那行,鼠标移动到Password区域,直接双击,就把密码复制到剪切板了,密码会在剪切板中保存12s,过期会失效,所以应该在12s内把密码粘贴。

参考《跟阿铭学Linux》

你可能感兴趣的:(linux,centos,学习笔记,密码,用户管理)