用户管理

来源:互联网 发布:平安银行淘宝卡怎么样 编辑:程序博客网 时间:2024/05/16 10:19

用户管理

用户管理

groupadd,groupdel,useradd,usermod,userdel,passwd,chage

一、用户/组基本概念
Users and groups:
. Every process (running program) on the system runs as a particular user.
. Every file is owned by a particular user.
. Access to files and directories are restricted by user.
. The user associated with a running process determines the files and directories accessible to that process.
. 系统中每一个运行的进程都需要一个特别的用户
. 每一个文件都有一个特别的拥有者
. 设置文件的访问权限需要针对于用户来设置
. 进程所关联的用户将决定它对文件的访问权限

1、产看当前登录的用户信息
[root@Server ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

2、查看文件的owner:
[root@Server ~]# ll /home/
drwx------. 4 alice alice 4096 2月  11 05:35 alice
drwx------. 4 tom   tom   4096 2月  11 05:34 tom

3、查看运行进程的用户
[root@Server ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19364  1260 ?        Ss   Feb10   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Feb10   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Feb10   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    Feb10   0:00 [ksoftirqd/0]

4、和用户组相关的一些文件
[root@localhost ~]# man 5 passwd
[root@localhost ~]# man 5 shadow
[root@localhost ~]# man 5 group
[root@localhost ~]# man 3 crypt


/etc/passwd root:x:0:0:root:/root:/bin/bash
第一段:用户名
第二段:密码占位符
第三段:uid
第四段:gid
第五段:描述
第六段:家目录
第七段:用户shell类型

/etc/shadow root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:17025:0:99999:7:::
第一列:用户名
第二列:密码位 (有密码 无密码 !帐号锁定 !!密码锁定 *该用户永久不能登录系统)
$id$salt$encrypted
加密算法$id:
$1: MD5
$5: SHA-256
$6: SHA-512
注释:加密算法就是用明文的密码和一个叫做salt的东西通过函数crypt()完成加密的,salt由a-z A-Z 0-9 . / 组成,用来决定使用4096种不同内建表格的哪一种

第三列:最后一次修改密码时间
# echo $(($(date --date="2017/02/12" +%s)/86400+1))
--date="2017/02/12" 表示2017年2月12号这一天
%s 表示自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
86400 表示一天的所有的秒数
+1 表示1970年1月1号那一天
echo $(()) echo $[] linux系统中进行运算的语法结构

第四列:密码最短有效天数(即密码至少使用的天数,0无限制) -n
第五列:密码最长有效天数(99999 永久生效) -x
第六列:密码过期前警告时间(默认是7天,在这期间可使用就旧密码) -w
第七列:密码过期后的宽限时间(密码过期后预留给账户修改密码的时间) -i
第八列:帐号失效期
第九列:保留列


/etc/group root:x:0:
第一列:组名
第二列:组密码占位符
第三列:gid
第四列:[用户列表]

系统约定: RHEL6
uid: 0 特权用户
uid: 1~499 系统用户
uid: 500~60000 普通用户

二、用户/组管理
用户组:
[root@localhost ~]# groupadd hr
[root@localhost ~]# groupadd sale
[root@localhost ~]# groupadd it
[root@localhost ~]# groupadd fd
[root@localhost ~]# groupadd net01 -g 2000 //添加组net01,并指定gid 2000
[root@localhost ~]# grep 'net01' /etc/group //查看/etc/group中组net01信息
[root@localhost ~]# groupdel net01 //删除组net01

用户:
useradd creates users
创建用户 未指定选项
[root@localhost ~]# useradd user01
. 未指定该用户的主组
. 未指定该用户的附加组
. 未指定用户的HOME
. 未指定用户的SHELL
. 未指定用户的UID...
[root@localhost ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group
/etc/passwd:user01:x:507:512::/home/user01:/bin/bash
/etc/shadow:user01:!!:16589:0:99999:7:::
/etc/group:user01:x:512:

[root@localhost ~]# id user01
uid=507(user01) gid=512(user01) groups=512(user01)

小结:
如果创建一个用户时,未指定任何选项,系统在/home生成和用户同名的文件夹作为用户的家目录,没有指定shell的时候,默认是登陆shell,没有指定uid的时候默认分配一个uid,且分配的uid值时passwd文件中最大的一个普通用户占用的uid值的下一个数字,会自动生成和用户名相同的组作为用户的Primary Group,且一般情况下gid的值和uid的值相同,除非相同的这个gid值被其他的组占用了,他会自动的向下查找,直到找到一个没有被占用的gid作为当前主组的gid

删除用户
userdel deletes users
[root@localhost ~]# userdel user10 //删除用户user10,但不删除用户家目录和mail spool
[root@localhost ~]# ll -d /home/user10/
drwx------ 3 506 510 4096 05-01 21:14 /home/user10/
[root@localhost ~]# ll /var/spool/mail/user10
-rw-rw---- 1 506 mail 0 05-01 21:14 /var/spool/mail/user10

[root@localhost ~]# userdel -r user2 //删除用户user2,同时删除用户家目录和mail spool

创建用户 指定选项
[root@localhost ~]# useradd user02 -u 503 //创建用户usr02,指定uid
[root@localhost ~]# useradd user03 -d /aaa //创建用户user03 指定家目录
[root@localhost ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell
[root@localhost ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组
[root@localhost ~]# useradd user10 -u 4000 -s /sbin/nologin
[root@localhost ~]# useradd user04 -M //创建用户user04,不创建家目录

创建用户时-g选项的相关注意事项

[root@localhost ~]# useradd user01
[root@localhost ~]# grep user01 /etc/passwd /etc/group /etc/shadow
/etc/passwd:user01:x:500:500::/home/user01:/bin/bash
/etc/group:user01:x:500:
/etc/shadow:user01:!!:17003:0:99999:7:::
[root@localhost ~]# id user01
uid=500(user01) gid=500(user01) 组=500(user01)
[root@localhost ~]# useradd user02 -g 500
[root@localhost ~]# id user02
uid=501(user02) gid=500(user01) 组=500(user01)
[root@localhost ~]# grep user02 --color /etc/passwd /etc/group
/etc/passwd:user02:x:501:500::/home/user02:/bin/bash
[root@localhost ~]# userdel -r user01
userdel: group user01 is the primary group of another user and is not removed.
[root@localhost ~]# userdel -r user02
[root@localhost ~]# grep user01 /etc/group
user01:x:500:
[root@localhost ~]# groupdel user01
[root@localhost ~]# grep user01 /etc/group

创建用户时-G选项相关的注意事项

[root@localhost ~]# useradd user01
[root@localhost ~]# grep user01 /etc/passwd /etc/group
/etc/passwd:user01:x:500:500::/home/user01:/bin/bash
/etc/group:user01:x:500:
[root@localhost ~]# useradd user02 -G user01
[root@localhost ~]# grep user02 /etc/passwd /etc/group
/etc/passwd:user02:x:501:501::/home/user02:/bin/bash
/etc/group:user01:x:500:user02
/etc/group:user02:x:501:
[root@localhost ~]# id user02
uid=501(user02) gid=501(user02) 组=501(user02),500(user01)
[root@localhost ~]# userdel -r user01
[root@localhost ~]# grep user01 /etc/passwd /etc/group
/etc/group:user01:x:500:user02
[root@localhost ~]# grep user02 /etc/passwd /etc/group
/etc/passwd:user02:x:501:501::/home/user02:/bin/bash
/etc/group:user01:x:500:user02
/etc/group:user02:x:501:
[root@localhost ~]# userdel -r user02
[root@localhost ~]# grep user02 /etc/passwd /etc/group
[root@localhost ~]#
[root@localhost ~]# grep user01 /etc/passwd /etc/group
/etc/group:user01:x:500:
[root@localhost ~]# groupdel user01

=====================================================================================================

创建相同uid的帐号

[root@localhost ~]# useradd -o -u 0 admin

组成员管理
注意:gpasswd将用户添加到组或从组中删除,只针对已存在的用户
[root@localhost ~]# gpasswd -a user07 it //将某个用户加入到某个组
[root@localhost ~]# gpasswd -M user01,user02 it //将某些成员添加到某个组
[root@localhost ~]# gpasswd -d user07 it //删除用户usr07从it组


用户密码
[root@localhost ~]# passwd alice
[alice@localhost ~]$ passwd
更改用户 alice 的密码 。
为 alice 更改 STRESS 密码。
(当前)UNIX 密码: //输入的是alice刚刚设置过的密码
新的 密码: //输入的是alice新的密码,不可以是简单的数字,也不可以是基于字典的单词
passwd: 所有的身份验证令牌已经成功更新。

修改密码信息

passwd -l jim 锁定密码
passwd -u jim 解锁密码
passwd -S robin 查看密码状态
passwd -d user01 删除已命名帐号的密码(只有根用户才能进行此操作)

chage -d 0 alice 强制用户在下一次登录时修改密码
chage -l alice 查看用户密码信息


修改用户的信息 usermod
usermod modifies existing users
==修改UID,SHELL==
[root@localhost ~]# usermod --help
[root@localhost ~]# useradd user10
[root@localhost ~]# grep 'user10' /etc/passwd
user10:x:509:509::/home/user10:/bin/bash
[root@localhost ~]# usermod -u 2000 user10 //修改用户uid
[root@localhost ~]# usermod -s /sbin/nologin user10 //修改用户shell
[root@localhost ~]# usermod -G hr,it,fd user10 //直接覆盖附加组
[root@localhost ~]# usermod -a -G yw,kf user10 //在原有基础上添加附加组

帐号锁定,解锁

[root@localhost ~]# useradd user1000
[root@localhost ~]# passwd user1000
[root@localhost ~]# grep 'user1000' /etc/shadow
user1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::
[root@localhost ~]# usermod -L user1000
[root@localhost ~]# grep 'user1000' /etc/shadow
user1000:!$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::
登录测试,帐号锁定之后,普通用户登录不上

[root@localhost ~]# usermod -U user1000
[root@localhost ~]# grep 'user1000' /etc/shadow
user1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::
登录测试

设置账号过期

[root@localhost ~]# date 
2017年 02月 12日 星期日 1:22:20 CST
[root@localhost ~]# usermod -e 2017-02-12 user1000
[root@localhost ~]# grep 'user1000' /etc/shadow
user1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:17025:0:99999:7::16415:
登录测试
[root@localhost ~]$ su - user1000
Password:
Your account has expired; please contact your system administrator
su: incorrect password

修改用户名

[root@localhost ~]# usermod -l tomm tom
[root@localhost ~]# id tom
id: tom:无此用户
[root@localhost ~]# id tomm
uid=502(tomm) gid=503(tom) 组=503(tom)

三、批量导入用户

[root@localhost tmp]# cat user.txt (用户名,uid,家目录不可以重复)
abc1:x:1000:1000::/home/abc1:/bin/bash
abc2:x:1001:1001::/home/abc2:/bin/bash

[root@localhost tmp]# newusers < user.txt

[root@localhost tmp]# cat passwd.txt
abc1:123
abc2:123

[root@localhost tmp]# chpasswd < passwd.txt

[root@localhost ~]# su - aaa1
-bash-4.1$

导入用户的家目录中的.bash环境

[root@localhost ~]# su - aaa1
-bash-4.1$ ls -a
. ..
-bash-4.1$ cp /etc/skel/.bash* .
-bash-4.1$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc
-bash-4.1$ logout
[root@localhost ~]# su - aaa1
[aaa1@localhost ~]$

useradd 命令参考的文件

1. /etc/login.defs
2. /etc/default/useradd //可以使用命令 useradd -D查看
3. /etc/skel/* //用户的初始配置文件 .bashrc .bash_profile.bash_logout


环境变量配置文件
.bash_history 保存用户执行的历史命令,当用户退出时写入该文件.
.bash_logout 保存当用户退出时,执行的命令
.bashrc 保存用户定义的别名和函数
.bash_profile 保存用户搜索命令的路径

.bashrc shell级别环境配置文件
.bash_profile 登录级别环境配置文件
/etc/bashrc 全局shell级别环境配置文件
/etc/profile 全局登录级别环境配置文件

加载顺序
[root@localhost robin]# su - robin
/etc/profile
.bash_profile
.bashrc
/etc/bashrc

su - robin 和 su robin
su - robin 登录级别切换用户
su robin shell级别切换用户


四、给普通用户提权
以下两种方式都可以将普通用户提升为root

1. Switching users with su

[alice@localhost ~]$ useradd u1
-bash: /usr/sbin/useradd: 权限不够
[alice@localhost ~]$ su - root
password:
[root@localhost  ~]#

2. Running commands as root with sudo

以root身份授权普通用户

[root@localhost ~]# vim /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL

[root@localhost ~]# visudo //可以验证sudoers文件是否有语法错误

[root@localhost ~]# useradd lusu -G wheel
[root@localhost ~]# id lusu 
uid=504(lusu ) gid=504(lusu ) 组=504(lusu ),10(wheel)

[lusu @localhost ~]$ useradd gougou10
-bash: /usr/sbin/useradd: 权限不够
[lusu @localhost ~]$ sudo useradd gougou10
[lusu @localhost ~]$ id gougou10
uid=505(gougou10) gid=505(gougou10) 组=505(gougou10)



0 0