您的位置:首页 > 运维架构 > Linux

linux用户\用户组操作及权限介绍

2017-09-23 00:35 423 查看
1、用户、组分类
用户和用户组是用来认证身份的,你是谁;权限是用来识别授权的,能做什么;审核是用来确保你做此事是否合规。此及3A认证.
3A认证:
认证:authentication

授权:authorization

审计:audition

用户分类:

管理员

普通用户(又分:系统用户和登陆用户)

系统用户:为了能够让后台进程或服务类型以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登陆系统。

用户身份的识别:
通过用户标识(uid:userid),一般用16bits二进制数子表示(范围:0-65535),
其中管理员标识UID:0,
普通用户UID:1-65535【centos6中:系统用户UID:1-499;登陆用户UID:500-60000;centos7中:系统用户UID:1-999;登陆用户UID:1000-60000】

用户名称解析:
当用户登录系统输入用户名后,通过用户名称解析库(/etc/passwd)来将用户的名称转换成用户ID。

用户认证信息:
通过比对事先存储的(/etc/shadow)与登陆时提供的信息是否一致,来认证用户是否合法。

组定义:用户组是一组用户的集合,便于用户权限的管理。
组分类1:
管理员组:
普通用户组(系统组、登陆组)

组分类2:

用户基本组(主组):显示用户的主要身份的组 用户附加组:不是主要身份的那些组组类别3:
用户的私有组:组名同用户名,且只包含一个用户
用户的公共组:组内包含了多个用户。

用户组身份的识别:
通过用户组标识(gid:userid),一般用16bits二进制数子表示(范围:0-65535),其中管理员组标识GID:0,普通用户GID:1-65535【centos6中:系统用户组GID:1-499;登陆用户组GID:500-60000;centos7中:系统用户组GID:1-999;登陆用户组GID:1000-60000】
用户组名称解析: 当用户登录系统输入用户名后,通过组名称解析库(/etc/group)来确定用户属于哪个组的成员。

用户组认证信息: 通过比对事先存储的(/etc/gshadow)与登陆时提供的信息是否一致,来认证用户是否合法组用户。
2、加密算法由于存储在/etc/passwd下的用户信息可以被所有用户看到,因此将密码加密后保存到/etc/shadow文件中。并配合salt,即使用户的密码一样,加密后也是不同的。
加密算法分类: 对称加密:使用相同的密钥(加密、解密一样的密钥)
非对称加密:加密密钥和解密密钥是一对,密钥不一样。

单向加密:只能加密,不能解密,一般用来提取数据特征码;具有定长输出、雪崩效应特性。

常见的加密算法:
md5,sha,sha224,sha256,sha384,sha512

3、linux上的用户、用户组相关信息库:
3.1、用户信息库:/etc/passwd
信息库格式:(#man 5 passwd)
name:password:UID:GID:GECOS:directory:shell
name:用户登录的名字,不应该包含大写字母
passwd:用户的密码,一般是*或X占位,真正的密码存放在/etc/shadow中。
uid:用户id
gid:用户所属的主组id(也叫基本组id)
gecos:注释信息
directory:用户的家目录
shell:用户登陆时默认的shell

如:
[root@localhost ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost ~]#

3.2、用户的密码库:/etc/shadow
密码库格式:
name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
name:登录名
encrypted passwd:加密后的密码
date of last password change:上次密码更改的日期,从1970年1月1日算起的天数
minimum password age:更改密码必须等待的天数
maximum password age:多少天后必须更改密码
password warning period:密码警告期,在必须更改密码前的一段时间。
password inactivity period:密码过期后,多少天内仍被接受,登陆并提示更改密码。
account expiration date:账户过期时间,表示自1970年1月1日算起的天数
reserved field:保留字段。

如:
[root@localhost ~]# tail -1 /etc/shadow
user:$6$jXJD9KtO$fjltjWDmYBPdKSEE2tvUaoAL5SEh535CiDY797bTFFuUlynRWVMPvPsDFgduunZbi9P3stE6fAfQuKraXFbpc.:17431:0:99999:7:::
[root@localhost ~]#

3.3、用户组信息库: /etc/group
组信息库格式:
group_name:password:GID:user_list
group_name:组名
password:组密码,x为加密的占位符,如果为空,则不需要密码
gid:组ID
user_list:组成员,以逗号分隔;此组仅保留了用户所属附加组的用户列表。

3.4、用户组密码信息库:/etc/gshadow
格式:

group name: encrypted password: administrators:members
administrators:以逗号分隔的管理员用户

4、用户、用户组相关命令
4.1、groupadd命令:创建新组
格式:
groupadd [options] groupname
options:
-f:如果新建的组已经存在,不提示信息,并成功退出,默认提示组已存在

-g:指定新建组的GID,默认为上一个GID+1

-r:新建一个系统组

-o:添加具有非唯一ID的组

进程以其发起者的身份运行:
进程对文件的访问权限,取决于发起此进程用户的权限。

如:

[root@localhost ~]# groupadd -r -g 999 mariadb
groupadd: GID '999' already exists

4.2、groupmod命令:修改组信息,通过修改组数据中/etc/group的适当条目实现。
格式:
groupmod [options] GROUPNAME
[options]:
-g:修改组id

-n:修改组名

如:
[root@localhost ~]# tail -1 /etc/group
test1:x:1002:
[root@localhost ~]# groupmod -g 1003 -n safe test1
[root@localhost ~]# tail -1 /etc/group
safe:x:1003:
[root@localhost ~]#

4.3、groupdel:删除组

groupdel [options] GROUPNAME

4.4、useradd命令:创建新用户或更新默认新用户信息

格式:
useradd [options] LOGIN //新建用户
useradd -D //显示创建用户的默认配置
useradd -D [options] //修改用户的默认配置
useradd [options] LOGIN
[options] :
-u:指定新用户的uid

-g:指定基本组GID,此组得事先存在

-G:指定用户所属的附加组,多个组之间用逗号分隔,

-d:指定创建用户的家目录,通过复制/etc/skel目录并重命名实现用户环境初始化,如果指定的用户家目录事先存在,则不会复制/etc/skel目录下的文件来进行初始化环境。
-s:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中。

-r:创建系统账号

-M:表示不为用户创建家目录。覆盖/etc/login.defs配置文件中的此项参数设置。

-f:密码过期后,账户被彻底禁用之前的天数

-D:显示创建用户的默认设置

useradd -D [options] :修改用户的默认配置,修改的结果保存于/etc/default/useradd文件中,也可以通过修改此文件实现。

[options]
-e:禁用用户的时间

-f:账户被彻底禁用之前的天数。

4.5、usermod命令:修改用户账户
格式:
usermod [options] LOGINNAME
[options]
-u:修改用户uid

-l:修改用户名,用户的家目录没有改变,

-g:修改用户基本组,组需要事先存在。
-G:修改用户所属附加组,原来的附加组会被覆盖

-a:追加用户至附加组中,仅和“- G”一起使用有效
-c:修改注释信息
-d:修改用户家目录,用户原有的文件不会被转移至新位置,原来的文件会丢失,除了skel文件。
-m:只能和-d一起使用,用于将原来的家目录移动为新的家目录,原来的文件会存在。

-s:修改用户的shell

-L:锁定用户的密码,禁止用户登录。在原来的密码字符串之前添加“!”

-U:解锁用户的密码。

4.6、userdel命令:删除用户账号和相关文件
格式:
userdel [options] LOGINNAME
[options]
-r:删除用户时,一并删除用户家目录,不加选项默认不删除。

4.7、passwd命令:更新、更改用户密码;更新文件/etc/shadow
格式:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays]
[-i inactivedays] [-S] [--stdin] [username]

passwd :不带选项,修改自己的密码(当前登录用户自己的密码)
passwd USERNAME:修改指定用户的密码,仅root有权限修改他人密码 -l:锁定用户,
-u:解锁用户
-d:删除用户密码(清楚密码)
-e:用户密码过期时间(此处是日期)
--stdin:标准输入传递参数
如: [root@localhost user]# echo "pAssw0rd" | passwd --stdin user Changing password for user user.
passwd: all authentication tokens updated successfully.

4.8、gpasswd:管理/etc/group文件和/etc/gshadow文件格式: gpasswd [option] groupname[option] -a:向组中添加用户,以此组为附加组。
-d:从组中移除用户。

4.9、newgrp命令:临时切换指定组为基本组。格式: newgrp [-] [group]
-:会模拟用户重新登陆以实现重新初始化其工作环境。

4.10、chage命令:更改用户密码过期信息格式: chage [options] LOGINNAME

4.11、id命令:显示用户实际和有效的ID身份格式: id [OPTION]... [USER][OPTION]
-u:仅显示用户有效的UID

-g:仅显示用户的基本组ID

-G:显示用户所属的所有组的ID

-n:显示名称而非ID。

4.12、su命令:切换用户
切换用户分类:
完全切换(登陆式切换)#su - 用户 或者 # su -l 用户
半完全切换(非登陆式切换)#su 用户名
大多数时使用登陆式切换。

注意:管理员可无密码切换至其他任何用户,而其他用户切换则需要密码。

#su 用户 -c 命令 :切换用户执行命令后退出
[root@localhost user]# su user -c "who am i"
root pts/0 2017-09-22 14:59 (:0)
[root@localhost user]#

5、权限管理
5.1、进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同,如果相同,则应用属主权限;

否则,则检查进程的属主是否属于文件的属组,如果是,则应用属组权限;

否则,只能应用其他权限。

权限位;
r:读,readable

w:写,writeable

x:执行,executable

文件中各权限位的含意:
r:可获取文件的数据内容

w:可修改文件的数据内容

x:可将此文件运行为进程

目录中各权限位的含意:
r:可获取(用ls命令)其下的所有文件列表,但不能是详细信息;

w:可修改此目录下的文件列表,即创建或删除文件

x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息。

mode:rwx (左三位)rwx (中三位)rwx (右三位)
owership(用户)user (属主:u)group (属组:g)
other (其他:o)
用户:u、g、o、a(代表所有)

5.2、权限管理命令:chmod
chmod命令:更改文件权限位

格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
OPTION
-R:递归更改文件和目录。

chmod [OPTION]... MODE[,MODE]... FILE...

MODE表示方法:
①赋权表示法:表示同时改变某一类用户的三个权限位;u=[r][w][x],g=[r][w][x],o=[r][w][x],a=[r][w][x],ug=[r][w][x],uo=[r][w][x],


[root@localhost tmp]# ll -d x
dr-x------. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]# chmod u=rwx,g=r,o=r x
[root@localhost tmp]# ll -d x
drwxr--r--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]#

[root@localhost tmp]# chmod u= x //如果不给出具体权限,则为空
[root@localhost tmp]# ll -d x
d---r--r--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]#

MODE表示方法: ②授权表示法:直接操作一类用户的一个权限位(rwx中的一个);u+[r][w][x],u-[r][w][x],g+[r][w][x],g-[r][w][x],o+[r][w][x],o-[r][w][x],a+[r][w][x],a-[r][w][x],ug+[r][w][x]....如:

[root@localhost tmp]# ll -d x
d---r--r--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]# chmod u+rwx,g+x x
[root@localhost tmp]# !ll
ll -d x
drwxr-xr--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]#

赋权表示法和授权表示法的比较
[root@localhost tmp]# !ll
ll -d x
drwxr-xr--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]# chmod u-w x //改变一个权限位,授权表示法
[root@localhost tmp]# ll -d x
dr-xr-xr--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]# chmod u=w x //同时改变三个权限位,赋权表示法
[root@localhost tmp]# ll -d x
d-w-r-xr--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]#

八进制表示法:需要写全权限位;
chmod [OPTION]... OCTAL-MODE FILE...
如:
[root@localhost tmp]# ll -d x
d-w-r-xr--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]# chmod 444 x
[root@localhost tmp]# ll -d x
dr--r--r--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]#

引用其他文件的权限表示法:
chmod [OPTION]... --reference=RFILE FILE...
如:
[root@localhost tmp]# chmod --reference=/etc/fstab x //引用/etc/fstab的文件权限,
[root@localhost tmp]# ll -d /etc/fstab x
-rw-r--r--. 1 root root 465 Aug 29 20:00 /etc/fstab
drw-r--r--. 3 user user 15 Sep 17 19:22 x
[root@localhost tmp]#

5.3、属主、属组更改命令:chown、chgrp
chown命令:改变文件的属主或属组。
格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
[OPTION]
-R:递归修改文件或目录

如:
[root@localhost tmp]# ls -ld /tmp/x
drw-r--r--. 3 user user 15 Sep 17 19:22 /tmp/x
[root@localhost tmp]# chown root:abc x
[root@localhost tmp]# ls -ld /tmp/x
drw-r--r--. 3 root abc 15 Sep 17 19:22 /tmp/x
[root@localhost tmp]#

chgrp命令:改变组的所有权
格式:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
[OPTION] -R:递归修改文件或目录
问题:用户对目录有写权限,但对目录下的文件没有写权限,能否修改此文件内容?能否删除此文件?答案:不可以修改文件内容,可以删除此文件。原因:文件中各权限位的含意:
r:可获取文件的数据内容
w:可修改文件的数据内容
x:可将此文件运行为进程
目录中各权限位的含意:
r:可获取(用ls命令)其下的所有文件列表,但不能是详细信息;
w:可修改此目录下的文件列表,即创建或删除文件
x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息。

5.4、umask:文件权限反向掩码(遮罩码)
文件默认权限:
666-umask

目录默认权限:
777-umask

注意:子所以文件用666去减,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限,则需要将其加“1”,目录无需此操作

查看当前umask值:
[root@localhost tmp]# umask
0022

设置umask值:
[root@localhost tmp]# umask 0002
[root@localhost tmp]# umask
0002
[root@localhost tmp]#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息