Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140492
  • 博文数量: 70
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 770
  • 用 户 组: 普通用户
  • 注册时间: 2017-11-04 11:19
文章分类

全部博文(70)

文章存档

2018年(69)

2016年(1)

我的朋友

分类: LINUX

2018-06-10 23:14:10

3.4  usermod
usermod:修改用户属性
[root@localhost ~]# tail -1 /etc/passwd            //首先确定原本属性
test1:x:1009:1010::/home/test1:/bin/bash
[root@localhost ~]# usermod -u 1100 test1        //修改uid为1100
[root@localhost ~]# usermod -g 1101 test1        //修改gid为1101,但是报错:因为没有用户组的id是1101
usermod: group '1101' does not exist
[root@localhost ~]# tail -3 /etc/group
user5:x:1008:
grp3:x:1009:
test1:x:1010:
[root@localhost ~]# usermod -g 1009 test1
[root@localhost ~]# tail -1 /etc/passwd                //修改完成之后进行查看。
test1:x:1100:1009::/home/test1:/bin/bash

[root@localhost ~]# id test1
uid=1100(test1) gid=1009(grp3) groups=1009(grp3)
[root@localhost ~]# usermod -G test1 test1            //添加附属组/扩展组
[root@localhost ~]# id test1
uid=1100(test1) gid=1009(grp3) groups=1009(grp3),1010(test1)

[root@localhost ~]# usermod -G xiao test1            //查看结果,属于更改了扩展组。
[root@localhost ~]# id test1
uid=1100(test1) gid=1009(grp3) groups=1009(grp3),1000(xiao)

[root@localhost ~]# usermod -G xiao,test1 test1        //添加多个扩展组
[root@localhost ~]# id test1
uid=1100(test1) gid=1009(grp3) groups=1009(grp3),1000(xiao),1010(test1)
注意:只有附加组/扩展组可以添加多个,“-g”选项添加的是私有组,只能有一个
[root@localhost ~]# usermod -g xiao,test1 test1
usermod: group 'xiao,test1' does not exist            //当作一整个参数使用了。


3.5 用户密码管理 passwd
[root@localhost ~]# passwd                                //默认修改当前登陆用户密码
Changing password for user root.
New password:
[root@localhost ~]# passwd test1                        //修改其他用户密码,后面接该用户名即可
Changing password for user test1.
New password:

/etc/shadow文件
bin:*:17110:0:99999:7:::
haha:!!:17692:0:99999:7:::
在密码字段出现“*”,意味着,该用户的密码是被锁定,是不能登陆的。
在密码字段出现“!!”,意味着,该用户没有密码,无法登陆。

[root@localhost ~]# tail -1 /etc/shadow
test1:!!:17692:0:99999:7:::
[root@localhost ~]# passwd test1
Changing password for user test1.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# tail -1 /etc/shadow                            //设置密码前后的变化
test1:$6$Ya6RTZwI$6U5gve/yYYGnaJuO3wqEpEUYcWY5Htmc5nlACHyafu4yMtx5sKKVIB0pWblzoYyizFeBac2VffuEh4yeNHFU51:17692:0:99999:7:::

锁定用户: lock
方法一:
[root@localhost ~]# passwd -l test1            //使用passwd命令的“-l”(小写L),用来锁定用户
Locking password for user test1.
passwd: Success
[root@localhost ~]# tail -1 /etc/shadow
test1:!!$6$Ya6RTZwI$6U5gve/yYYGnaJuO3wqEpEUYcWY5Htmc5nlACHyafu4yMtx5sKKVIB0pWblzoYyizFeBac2VffuEh4yeNHFU51:17692:0:99999:7:::

方法二:
[root@localhost ~]# usermod -L test1                //不过文件中出现的是一个“!”。但是不管一个两个,都证明这个用户被锁定了
[root@localhost ~]# tail -1 /etc/shadow
test1:!$6$Ya6RTZwI$6U5gve/yYYGnaJuO3wqEpEUYcWY5Htmc5nlACHyafu4yMtx5sKKVIB0pWblzoYyizFeBac2VffuEh4yeNHFU51:17692:0:99999:7:::


解锁:  unlock
方法一的解锁方式:
[root@localhost ~]# passwd -u test1            //使用选项“-u”进行解锁。
Unlocking password for user test1.
passwd: Success
[root@localhost ~]# tail -1 /etc/shadow
test1:$6$Ya6RTZwI$6U5gve/yYYGnaJuO3wqEpEUYcWY5Htmc5nlACHyafu4yMtx5sKKVIB0pWblzoYyizFeBac2VffuEh4yeNHFU51:17692:0:99999:7:::
方法二的解锁方式:
[root@localhost ~]# usermod -U test1
[root@localhost ~]# tail -1 /etc/shadow
test1:$6$Ya6RTZwI$6U5gve/yYYGnaJuO3wqEpEUYcWY5Htmc5nlACHyafu4yMtx5sKKVIB0pWblzoYyizFeBac2VffuEh4yeNHFU51:17692:0:99999:7:::

设置用户密码的另外一种方式:
[root@localhost ~]# passwd --stdin test1
Changing password for user test1.
123456                             //特点:只需要输入一次密码、密码明文显示。
passwd: all authentication tokens updated successfully.
在书写shell脚本时,该用法非常方便:
[root@localhost ~]# echo '123456' | passwd --stdin test1   
//“ | ”管道符,将前面命令的输出,当作后面命令的输入。
Changing password for user test1.
passwd: all authentication tokens updated successfully.
不需要任何交互的进行密码的设置。


[root@localhost ~]# echo "123\nsss"
123\nsss
[root@localhost ~]# echo -e "123\nsss"         //实现换行,其中“\n”起到很大作用,但是如果没有“-e”也无法实现。
123
sss
[root@localhost ~]# echo -e "123\tsss"             //“\t” 这个是tab
123 sss

上面讲的关于echo的选项,可以在不借助“--stdin”的情况下,用来修改用户密码
[root@localhost ~]# echo -e "123456\n123456" | passwd test1
更改用户 test1 的密码 。
新的 密码:无效的密码: 密码少于 8 个字符              //是一句警告。此时密码更改是生效的。
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
这里测试时使用的是很简单的密码,在真实使用时,最好在8-10位,有大小写特殊字符等。不要使用生日,电话号码等作为密码。以保证账号安全。

3.6 命令mkpasswd
mkpasswd:用来生成密码的工具,默认不存在,需要安装
[root@localhost ~]# yum -y install expect
[root@localhost ~]# mkpasswd        //默认生成9位数的,包括大小写字母,数字特殊字符的密码
Gv29?Wxuo
[root@localhost ~]# mkpasswd -l 12               //指定生成密码的长度。“-l”小写字母L
a;3WoflqK5ti
[root@localhost ~]# mkpasswd -l 12 -s 3            //指定特殊字符个数
s5pU6o+;K#fb
[root@localhost ~]# mkpasswd -l 12 -s 0              //0个代表不需要特殊字符。
whkpyLybE13y

在shell脚本中,应用比较广泛:比如批量创建100个用户(用户名有规律,比如user01-user99),并且设置其密码。


3.7  su命令
用于:切换用户
[root@localhost ~]# su - test1             //“-”是用来彻底的切换用户,包括配置,环境变量所在目录
[test1@localhost ~]$ id
uid=1100(test1) gid=1009(grp3) 组=1009(grp3),1000(xiao),1010(test1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[test1@localhost ~]$ pwd
/home/test1

[root@localhost ~]# pwd
/root
[root@localhost ~]# su test1              //如果没有“-”,那么当前环境都不会到登陆用户家目录
[test1@localhost root]$ pwd
/root

[root@localhost ~]# su - -c "touch /tmp/test1.111" test1        
//“-”彻底切换用户,包括环境。“-c”指定用这个用户的身份,执行后面的命令。
[root@localhost ~]# ls -l /tmp/
总用量 12
-rw-r--r--. 2 root  root 11505 6月   6 23:36 1.txt.bak
-rw-r--r--. 1 test1 grp3     0 6月  10 22:56 test1.111
drwxr-xr-x. 3 root  root    32 6月   2 21:56 two

切换用户有个权限问题:test1用户是设置过密码的,但是从操作可以看出,使用root用户切换过去时,并没有使用密码:因为root用户切换到其他普通用户不需要密码。但是普通用户切换到普通用户则需要密码才能够切换。普通用户也可以切换到root用户,有密码就可以。

解决问题:一个创建是没有生成家目录的用户,如果后期创建家目录
[root@localhost ~]# useradd -M zhangsan
[root@localhost ~]# tail -1 /etc/passwd
zhangsan:x:1101:1101::/home/zhangsan:/bin/bash
[root@localhost ~]# ls /home/
test  test1  user2  user3  user4  xiao  zhangsan1
[root@localhost ~]# su - zhangsan
su: 警告:无法更改到 /home/zhangsan 目录: 没有那个文件或目录
-bash-4.2$
首先情况环境如上:
首先手动创建passwd中的指定目录:并且修改属主属组。
[root@localhost ~]# mkdir /home/zhangsan
[root@localhost ~]# chown zhangsan.zhangsan /home/zhangsan
[root@localhost ~]# ll -d /home/zhangsan
drwxr-xr-x. 2 zhangsan zhangsan 6 6月  10 23:05 /home/zhangsan
[root@localhost ~]# su - zhangsan
上一次登录:日 6月 10 23:03:51 CST 2018pts/0 上
-bash-4.2$

还是不行,那是因为用户环境所需文件都没有:
[root@localhost ~]# ls /home/
test  test1  user2  user3  user4  xiao  zhangsan  zhangsan1
[root@localhost ~]# ls -a /home/xiao/
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[root@localhost ~]# ls -a /home/zhangsan                   //对比发现还少很多文件。
.  ..  .bash_history                  
//这里的history是因为记录历史执行命令的,因为我在登陆zhangsan时使用过命令,所以自己生成了。

系统有一个模板目录:
[root@localhost ~]# ls -la /etc/skel/
总用量 24
drwxr-xr-x.  2 root root   62 5月  30 07:01 .
drwxr-xr-x. 74 root root 8192 6月  10 23:02 ..
-rw-r--r--.  1 root root   18 8月   3 2017 .bash_logout
-rw-r--r--.  1 root root  193 8月   3 2017 .bash_profile
-rw-r--r--.  1 root root  231 8月   3 2017 .bashrc

直接拷贝使用:
[root@localhost ~]# cp /etc/skel/.bash* /home/zhangsan/
[root@localhost ~]# chown -R zhangsan.zhangsan /home/zhangsan
[root@localhost ~]# su - zhangsan
上一次登录:日 6月 10 23:05:31 CST 2018pts/0 上
[zhangsan@localhost ~]$[zhangsan@localhost ~]$ pwd
/home/zhangsan

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