学习Linux用户和组管理权限对其的一些认知
第一次写博客因培训老师建议写博客增强自己的学习能力,我也觉得有些道理,及开通博客,尝试写一下。
也希望大牛看到不要喷哈哈哈哈哈,欢迎指导,谢谢。
1、用户
每个用户即为每个使用者,对应的一组用户标识码、密码 从而识别为一个用户。
而组即为用户的一个容器,让用户装在里面。
用户类别分为两种:管理员与普通用户。
普通用户有:
系统用户
登录用户
用户标识:userID,UID:
因为机器需要识别用户 但是机器只认数字所以有了UID
UID由16位二进制数字组成表示0-65535 共65536个
其中管理员为0
普通用户为1-65535
其中普通用户中的系统用户在centos6中为1-499,centos7中为1-999
登录用户在centos6中为500-60000,centos7中为1000-60000
但是这个不利于人的记忆,人容易记住的是字符串,但是机器识别不了所以有了名称解析用来转换username与uid,所以linux有个解析库就用来查找username与uid之间的转换,/etc/passwd
2、组
同样的组也分两类:管理员组和普通用户组
普通用户组也分:
系统组
登陆组
组标识:groupID,GID
与用户标识相同
同样的也有名称解析,解析库为/etc/group
第二种组类别分法,即用户的基本组和附加组,一个用户可以在多个组里面,但有个最主要的组就叫基本组,在的其他组就是附加组。就如同你本身在这个1部门工作,临时去2部门帮忙1就是你的基本组2就是你的附加组
第三种组类别分法,私有组和公共组,私有组表示与用户同名且组内只有这一个用户即为私有组,公共组则表示有多个用户存在,但这个分法没有实际意义。
3、安全上下文
进程会以发起者的身份运行;
进程对文件的访问权限,取决与发起此进程的用户权限,即这个进程能做什么取决于用户权限有什么;
系统用户:
讲到安全上下文就要说到我们一开机即会启动一大堆的进程,那这些进程都是以什么身份启动,这就是系统用户的作用,为了让后台进程或服务类进程以非管理员的身份运行,且通常一个用户只干一件事,所以通常需要为此创建多个系统用户;但是这类用户从不用登录系统;
3、用户与组的常用命令
groupadd:添加组;
用法:group [选项] group_name
选项:
-g:指定GID;没有指定即默认为上一个添加的组的GID+1;
-r:创建系统组;
groupmod:修改组属性 groupmod [选项] GROUP -g:修改GID; -n:修改组名;groupdel命令:删除组 groupdel [选项] GROUPuseradd [选项] 登录名 -u, --uid UID:指定UID; -g, --gid GROUP:指定基本组ID,此组得事先存在; -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔; -c, --comment COMMENT:指明注释信息; -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件; -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中; -r, --system:创建系统用户;注意:直接useradd默认属性创建的用户诸多默认设定配置文件为/etc/login.defs useradd -D:显示创建用户的默认配置; useradd -D [选项]: 修改默认选项的值;修改的结果保存于/etc/default/useradd文件中;usermod命令:修改用户属性 usermod [选项] 登录 -u, --uid UID:修改用户的ID为此处指定的新UID; -g, --gid GROUP:修改用户所属的基本组; -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖; -a, --append:与-G一同使用,用于为用户追加新的附加组; -c, --comment COMMENT:修改注释信息; -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置; -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录; -l, --login NEW_LOGIN:修改用户名; -s, --shell SHELL:修改用户的默认shell; -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!"; -U, --unlock:解锁用户的密码;userdel命令:删除用户 userdel [选项] 登录 -r:删除用户时一并删除其家目录;
passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username] (1) passwd:修改用户自己的密码; (2) passwd USERNAME:修改指定用户的密码,但仅root有此权限; -l, -u:锁定和解锁用户; -d:清除用户密码串; -e DATE: 过期期限,日期; -i DAYS:非活动期限; -n DAYS:密码的最短使用期限; -x DAYS:密码的最长使用期限; -w DAYS:警告期限; --stdin:以标准输出修改密码 echo "PASSWORD" | passwd --stdin USERNAME
gpasswd命令:
组密码文件:/etc/gshadow gpasswd [选项] group -a USERNAME:向组中添加用户 -d USERNAME:从组中移除用户newgrp命令:临时切换指定的组为基本组; newgrp [-] [group] -: 会模拟用户重新登录以实现重新初始化其工作环境;chage命令:更改用户密码过期信息 chage [选项] 登录名 -d -E -W -m -Mid命令:显示用户的真和有效ID; id [OPTION]... [USER] -u: 仅显示有效的UID; -g: 仅显示用户的基本组ID; -G:仅显示用户所属的所有组的ID; -n: 显示名字而非ID;su命令:switch user 登录式切换:会通过读取目标用户的配置文件来重新初始化 su - USERNAME su -l USERNAME 非登录式切换:不会读取目标用户的配置文件进行初始化 su USERNAME 注意:管理员可无密码切换至其它任何用户; -c 'COMMAND':仅以指定用户的身份运行此处指定的命令;
权限管理:
文件权限分为三类:
属主:即一个用户,这个用户对这个文件的权限
属组:即一个组,在这个组之下的用户对这个文件的权限
其他:即除了属主与属组以外的用户对这个文件的权限
前面有讲到安全上下文是一个进程对文件的权限取决于发起这个用户的权限,那他对文件访问权限的应用模型是什么呢:
进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限;
权限:
我们随便ls -l一个文件-rwxrw-r--. 1 root root 第一个-表示文件类型 后面9位表示拥有的权限,
-则代表没有这个权限,rwx分代表一个权限,第一个root表示他的属主,第二代表他的属组
左三位:定义user(owner)的权限
中三位:定义group的权限;
右三位:定义other的权限
文件权限:
r:readable, 读
w:writable, 写
x:excutable,执行
注意:文件默认没有执行权限,如果文件不是可执行文件任何用户不能拥有执行权限,否则可能会报错!
目录权限:
r:可使用ls命令获取其下的所有文件列表;
w: 可修改此目录下的文件列表;即创建或删除文件;
x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
这些位数固定,显示字母则代表有这个权限,显示-则代表没有,譬如rw-r--r--则代表属主拥有写和读的权限属组和其他则只有读权限
每三位代表一类用户的权限rwx 因为这个有就是有没有就是-所以我们也可以以二进制0代表没有,1代表有组成一个三位二进制数,所以可以用这三位二进制把权限表示为7种情况 权限组合机制: --- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7结合我们的三种用户类型一起譬如rw-rw-r--则可以表示为660权限管理命令: chmod命令: chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE... 三类用户: u:属主 g:属组 o:其它 a: 所有 (1) chmod [OPTION]... MODE[,MODE]... FILE... MODE表示法: 赋权表示法:直接操作一类用户的所有权限位rwx; u= g= o= a= 授权表示法:直接操作一类用户的一个权限位r,w,x; u+, u- g+, g- o+, o- a+, a- (2) chmod [OPTION]... OCTAL-MODE FILE... (3) chmod [OPTION]... --reference=RFILE FILE... 选项: -R, --recursive:递归修改 注意:用户仅能修改属主为自己的那些文件的权限; 从属关系管理命令:chown, chgrp chown命令: chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE... 选项: -R:递归修改 chgrp命令: chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... 注意:仅管理员可修改文件的属主和属组;到了这里我们会发现那我们会想说那直接创建一个文件或目录它会直接有一个权限,那这个权限是怎么来的呢linux自带有一个umask:文件权限的反向掩码;创建文件会使用这个掩码来得出文件的权限文件: 666-umask目录: 777-umask之所以文件是用666去减是因为,前面说了文件默人不能拥有执行权限;那如果说比如666-023是等于643?因为默认没有执行权限所以如果结果中有执行权限就将结果加1,所以前面的为644; umask命令: umask:查看当前umask umask MASK: 设置umask 注意:此类设定仅对当前shell进程有效;
以上就是我对Linux用户与组管理权限的了解,刚刚学习,写的不好请指导;