Linux用户管理
Linux系统中的用户分类:
1. 超级用户(Superuser):root 拥有最高权限 uid=0
2. 系统用户:不需要登录系统,服务于应用程序的用户,主要用于维护系统的正常运行 bin nobody uid=1~499之间
3. 普通用户:一般是可以登录系统的,是由管理员添加的,uid>=500
uid:user identifier 用户标识
gid: group identfier 组标识
系统是通过uid来识别用户角色的
对用户的操作:
1. 查看用户
id user_name //默认查看当前用户信息
whoami //查看当前用户是谁
2. 添加用户 useradd user_name
-c 注释性的描述信息
-d 指定用户的家目录,默认情况下:root的家目录是/root,普通用户的家目录是/home
-g 指定用户的主要组,前提:组是必须存在的
-G 指定用户的附加组(附属组),前提:组是必须存在的
-s 指定用户的登录shell
-u 指定用户的uid
-M 不建立家目录
-e 指定用户过期时间, 日期
-f 指定用户过期时间, 天数
执行完useradd user_name命令,则会有以下操作:
1. 会在/etc/passwd添加一行
2. 会在/etc/group添加一行
3. 会在/etc/shadow添加一行
4. 会在/etc/gshadow添加一行
5. 会在/home目录下建立一个与用户同名的目录作为家目录,同时会从/etc/skel目录中复制出所有的隐藏文件到该目录
6、修改权限
只有root能操作该命令,添加用户时,如果不指定用户的组,那么默认会创建一个与用户名同名的组作为用户的主要组
3. 删除用户 userdel user_name user delete
-r: 可以干净的删除一个用户 //邮箱所在位置:/var/spool/mail/
4. 修改用户 usermod user_name user modify
-G 修改用户的附属组,不管用户原来的附属组如何,直接覆盖
-g 修改用户的主要组
-a 一般和-G联合使用,追加附属组
-u 修改用户的uid
-d 修改用户的家目录
-s 修改用户的shell
-a 一般和-G联合使用,追加附属组
-L 锁定用户
-U 解除锁定
-l 改名
5. 为用户设置密码 passwd user_name
超级用户:既可以修改自己的密码,又可以修改别人的密码,并且不需要提供当前密码
普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码
普通用户修改自己的密码,需要当前密码,而且长度最少6位,而且不能是字典单词
/etc/shadow:存放用户密码信息的文件
# head -1 /etc/shadow
root:$6$9AOmQbxm$3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::
用户名:加密后的密码:....
$6$:加密算法是sha512
$1$:加密算法是md5
finger user_name 查看用户的相关信息
chfn user_name 修改用户相关信息
userinfo user_name X window下修改用户相关信息
对组的操作
1. 添加组 groupadd group_name
-g:添加组时,指定gid是多少
2. 修改组: groupmod group_name
3. 删除组: groupdel group_name
注意:不能够删除用户的主要组,能够删除用户的附属组
4. 组管理: gpasswd
管理/etc/group和/etc/gshadow文件的,每一个组可以有管理员,成员和密码,给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。
1)指定组的管理员
gpasswd -A user_name group_name
2)向组中添加成员
gpasswd -a user_name group_name
3)给组设置密码
gpasswd group_name
4)切换组
newgrp group_name //临时切换组
5)将用户从组中删除
gpasswd -d user_name
用户和组的关系:组中可以没有用户、也可以有一个或者多个用户。用户只有一个主要组,可以同时属于多个组,但是除了主组以外的其他组称为附属组。
组的分类:
从用户的角度分为:
主要组:primary group、initial group、first group,用户的默认组,也就是gid所标识的组
附属组:secondary group、supplementary group
与用户相关的文件:
/etc/passwd: 保存用户信息的文件
/etc/shadow: 保存用户密码相关信息的文件
/etc/group: 保存组信息的文件
/etc/gshadow: 保存组密码相关信息的文件
1. /etc/passwd
man 5 passwd
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码:UID:GID:描述信息:家目录:登录shell
2. /etc/shadow
useradd zhangsan
用户有无密码两种情况:
tail -1 /etc/shadow
zhangsan:!!:16276:0:99999:7:::
passwd zhangsan
tail -1 /etc/shadow
zhangsan:$6$/23ax9CR$IDSfqNF3gZqDq4L0.Bdqd19SLbzBa6CuSpuOn.9YrFmSWYy09xPGa47SVEsQXfQJDybUDOzsu4vG.FV
KMt91l/:16276:0:99999:7:::
man 5 shadow
zhangsan:!!:16276:0:99999:7:::
1)用户名
2)加密后的密码
3)上一次密码修改时间(单位是天,是距离1970年1月1日多少天)
4)密码最小生存周期 单位:天 0表示随时可以修改密码;2表示两天内不能修改
5)密码最大生存周期 单位:天,密码使用的最长时间
6)密码到期前几天开始警告
7)密码过期之后到账户失效之前的时间限制 密码过期之后还可以用几天
8)账户过期时间
9)保留列
查看用户的密码相关的时间
chage -l root
Last password change : Jul 25, 2014
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
3. /etc/group
head -1 /etc/group
root:x:0:
组名:密码:GID:用户列表
4. /etc/gshadow
head -1 /etc/gshadow
root:::
组名: 加密后的密码:组管理员:组成员
用户提权Sudo
sudo:某个用户能够以另外一个用户的身份通过某主机执行某命令
sudo的配置文件 /etc/sudoers
visudo
每一行就定义了一个sudo的条目:
who which——hosts=(runas) TAG: command
别名机制:类似定义了一个组
4类:
用户别名: User_Alias
主机别名: Hosts_Alias
参照用户: Runas_Alias
命令别名: Cmnd_Alias
别名的名字只能使用大写的英文字母组合
别名:可使用!取反
User_Alias USERADMIN = 系统用户名 或 %组名 或用户别名
Hosts_Alias 主机名 IP 网络地址 其它主机名 可以嵌套
Runas_Alias 用户名 #UID 别名
Cmnd_Alias 命令绝对路径 目录(下面所有命令) 其它定义的命令别名
例子:定义hadoop用户可以以root用户的身份执行useradd
命令:
visudo
hadoop ALL=(root) /usr/sbin/useradd ,/usr/sbin/usermod
执行命令:
sudo /usr/sbin/useradd username
在第一次输入后,密码会被记录,5分钟内是有效的
sudo -k 取消密码记忆,必须再重新进行验证
sudo -l 列出当前用户所有可以使用的sudo类的命令
例子:
hadoop ALL=(root) NOPASSWD: /usr/sbin/useradd
, PASSWD: /usr/sbin/usermod
例子:
User_Alias USERADMIN = hadoop , %hadoop
Cdm_Alias USERADMINCMD = /usr/sbin/useradd,
/user/sbin/usermod,/usr/sbin/userdel,
/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
和用户登录相关的文件或目录
/etc/profile
/etc/bashrc
~username/.bashrc
~username/.bash_profile
/etc/profile.d/*
su - :完全登录shell,切换后用户拥有自己的一套环境变量
su:不完全登录shell,切换后用户使用的是其他用户的环境变量
Linux系统中的用户分类:
1. 超级用户(Superuser):root 拥有最高权限 uid=0
2. 系统用户:不需要登录系统,服务于应用程序的用户,主要用于维护系统的正常运行 bin nobody uid=1~499之间
3. 普通用户:一般是可以登录系统的,是由管理员添加的,uid>=500
uid:user identifier 用户标识
gid: group identfier 组标识
系统是通过uid来识别用户角色的
对用户的操作:
1. 查看用户
id user_name //默认查看当前用户信息
whoami //查看当前用户是谁
2. 添加用户 useradd user_name
-c 注释性的描述信息
-d 指定用户的家目录,默认情况下:root的家目录是/root,普通用户的家目录是/home
-g 指定用户的主要组,前提:组是必须存在的
-G 指定用户的附加组(附属组),前提:组是必须存在的
-s 指定用户的登录shell
-u 指定用户的uid
-M 不建立家目录
-e 指定用户过期时间, 日期
-f 指定用户过期时间, 天数
执行完useradd user_name命令,则会有以下操作:
1. 会在/etc/passwd添加一行
2. 会在/etc/group添加一行
3. 会在/etc/shadow添加一行
4. 会在/etc/gshadow添加一行
5. 会在/home目录下建立一个与用户同名的目录作为家目录,同时会从/etc/skel目录中复制出所有的隐藏文件到该目录
6、修改权限
只有root能操作该命令,添加用户时,如果不指定用户的组,那么默认会创建一个与用户名同名的组作为用户的主要组
3. 删除用户 userdel user_name user delete
-r: 可以干净的删除一个用户 //邮箱所在位置:/var/spool/mail/
4. 修改用户 usermod user_name user modify
-G 修改用户的附属组,不管用户原来的附属组如何,直接覆盖
-g 修改用户的主要组
-a 一般和-G联合使用,追加附属组
-u 修改用户的uid
-d 修改用户的家目录
-s 修改用户的shell
-a 一般和-G联合使用,追加附属组
-L 锁定用户
-U 解除锁定
-l 改名
5. 为用户设置密码 passwd user_name
超级用户:既可以修改自己的密码,又可以修改别人的密码,并且不需要提供当前密码
普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码
普通用户修改自己的密码,需要当前密码,而且长度最少6位,而且不能是字典单词
/etc/shadow:存放用户密码信息的文件
# head -1 /etc/shadow
root:$6$9AOmQbxm$3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::
用户名:加密后的密码:....
$6$:加密算法是sha512
$1$:加密算法是md5
finger user_name 查看用户的相关信息
chfn user_name 修改用户相关信息
userinfo user_name X window下修改用户相关信息
对组的操作
1. 添加组 groupadd group_name
-g:添加组时,指定gid是多少
2. 修改组: groupmod group_name
3. 删除组: groupdel group_name
注意:不能够删除用户的主要组,能够删除用户的附属组
4. 组管理: gpasswd
管理/etc/group和/etc/gshadow文件的,每一个组可以有管理员,成员和密码,给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。
1)指定组的管理员
gpasswd -A user_name group_name
2)向组中添加成员
gpasswd -a user_name group_name
3)给组设置密码
gpasswd group_name
4)切换组
newgrp group_name //临时切换组
5)将用户从组中删除
gpasswd -d user_name
用户和组的关系:组中可以没有用户、也可以有一个或者多个用户。用户只有一个主要组,可以同时属于多个组,但是除了主组以外的其他组称为附属组。
组的分类:
从用户的角度分为:
主要组:primary group、initial group、first group,用户的默认组,也就是gid所标识的组
附属组:secondary group、supplementary group
与用户相关的文件:
/etc/passwd: 保存用户信息的文件
/etc/shadow: 保存用户密码相关信息的文件
/etc/group: 保存组信息的文件
/etc/gshadow: 保存组密码相关信息的文件
1. /etc/passwd
man 5 passwd
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码:UID:GID:描述信息:家目录:登录shell
2. /etc/shadow
useradd zhangsan
用户有无密码两种情况:
tail -1 /etc/shadow
zhangsan:!!:16276:0:99999:7:::
passwd zhangsan
tail -1 /etc/shadow
zhangsan:$6$/23ax9CR$IDSfqNF3gZqDq4L0.Bdqd19SLbzBa6CuSpuOn.9YrFmSWYy09xPGa47SVEsQXfQJDybUDOzsu4vG.FV
KMt91l/:16276:0:99999:7:::
man 5 shadow
zhangsan:!!:16276:0:99999:7:::
1)用户名
2)加密后的密码
3)上一次密码修改时间(单位是天,是距离1970年1月1日多少天)
4)密码最小生存周期 单位:天 0表示随时可以修改密码;2表示两天内不能修改
5)密码最大生存周期 单位:天,密码使用的最长时间
6)密码到期前几天开始警告
7)密码过期之后到账户失效之前的时间限制 密码过期之后还可以用几天
8)账户过期时间
9)保留列
查看用户的密码相关的时间
chage -l root
Last password change : Jul 25, 2014
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
3. /etc/group
head -1 /etc/group
root:x:0:
组名:密码:GID:用户列表
4. /etc/gshadow
head -1 /etc/gshadow
root:::
组名: 加密后的密码:组管理员:组成员
用户提权Sudo
sudo:某个用户能够以另外一个用户的身份通过某主机执行某命令
sudo的配置文件 /etc/sudoers
visudo
每一行就定义了一个sudo的条目:
who which——hosts=(runas) TAG: command
别名机制:类似定义了一个组
4类:
用户别名: User_Alias
主机别名: Hosts_Alias
参照用户: Runas_Alias
命令别名: Cmnd_Alias
别名的名字只能使用大写的英文字母组合
别名:可使用!取反
User_Alias USERADMIN = 系统用户名 或 %组名 或用户别名
Hosts_Alias 主机名 IP 网络地址 其它主机名 可以嵌套
Runas_Alias 用户名 #UID 别名
Cmnd_Alias 命令绝对路径 目录(下面所有命令) 其它定义的命令别名
例子:定义hadoop用户可以以root用户的身份执行useradd
命令:
visudo
hadoop ALL=(root) /usr/sbin/useradd ,/usr/sbin/usermod
执行命令:
sudo /usr/sbin/useradd username
在第一次输入后,密码会被记录,5分钟内是有效的
sudo -k 取消密码记忆,必须再重新进行验证
sudo -l 列出当前用户所有可以使用的sudo类的命令
例子:
hadoop ALL=(root) NOPASSWD: /usr/sbin/useradd
, PASSWD: /usr/sbin/usermod
例子:
User_Alias USERADMIN = hadoop , %hadoop
Cdm_Alias USERADMINCMD = /usr/sbin/useradd,
/user/sbin/usermod,/usr/sbin/userdel,
/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
和用户登录相关的文件或目录
/etc/profile
/etc/bashrc
~username/.bashrc
~username/.bash_profile
/etc/profile.d/*
su - :完全登录shell,切换后用户拥有自己的一套环境变量
su:不完全登录shell,切换后用户使用的是其他用户的环境变量