Linux入门——用户组和权限管理

用户:

  • 任何用户被分配一个独特的用户id号(UID)
  • UID 0标识root用户
  • 用户帐号通常从UID 1000开始
  • 用户名和UID信息通常存储在/etc/passwd文件中
  • 当用户登录时它被分配一个主目录并且运行一个程序(通常是一个shell程序)
  • 没有权限许可用户不能读取、写或者执行其它用户的文件
  • 用户有个东西叫用户名是字符串如:root user1
  • 用户名通常是身份指明你是谁
  • 用户名不区分大小写
  • 密码是证明你是谁
  • 系统通过uid识别用户
  • 当两个uid相同则两个用户是一样的

用户账号文件-/etc/passwd:

/etc/passwd用于保存用户的帐户基本信息: 在这里插入图片描述

  1. 字段1:用户名称
  2. 字段2:密码占位符“x”(指登陆该用户时需要密码,密码在/etc/shadow里)
  3. 字段3:用户帐号的UID号
  4. 字段4:用户的私有组
  5. 字段5:用户描述信息
  6. 字段6:用户的主(家)目录(每次切用户会默认切到用户的家目录)
  7. 字段7:登录Shell信息

当一个用户没设置密码则无法登陆
如果在/etc/passwd里创建用户是创不好的,虽然可以查到该用户,但没有创建用户的家目录和用户组,能切换用户是因为分配了shell

组:

  • 用户必须属于一个组
  • 每一个组被分配一个独特的组ID(gid)
  • gid信息保存在/etc/group中
  • 每一个用户都有自己的私有组
  • 可以将用户添加到别的组,该组称为用户的附加组
  • 同一个组中的所有用户能共享属于这个组的文件

人本身就是用户 家庭类似于组
原生家庭是私有组 干爸干妈是附加组
用户是用户,组是组,所有组默认是普通组
用户和组通过gid关联即passwd中的gid跟group的gid匹配

组信息文件-/etc/group:

/etc/group用于保存组的基本信息:
在这里插入图片描述
字段1:组的名称(默认情况下跟用户名一样)
字段2:密码占位符“x”
字段3:组的ID号(默认情况下跟uid一致)
字段4:该组是user1,user2和user3的附加组

useradd创建新用户:

  • 其语法如下:
    useradd [选项] 用户名
  • 选项说明:
    -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
    -g 用户组 指定用户所属的用户组。
    -c comment 指定一段注释性描述。
    -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
    -G 用户组,用户组 指定用户所属的附加组。
    -s Shell文件 指定用户的登录Shell。
> useradd -c “hello” –d /home/user1 –s /sbin/nologin user111 //-c指定描述信息–d指定家目录-s指定登陆shell  指定家目录不需要手动创建,手动创建权限会报错,直接指定就会创建且无问题
  • 举例:
> useradd -u 2000 -g it  user1    //指定用户user的uid为2000组为it    
> useradd -s /sbin/nologin  -G root  Mary	 //指定用户Mary的登陆shell,组为root
>  useradd –p redhat user10 *此方法不是创建用户一起创建密码创了也登陆不进去
  • 其他相关命令:
  1. usermod修改用户信息,用法与useradd类似
-aG 追加一个附加组
-L 锁定用户
-o 修改用户id变成非唯一的值
-U 解锁用户
-m 移动家目录,与-d一起使用
–g 指私有组
  1. userdel删除用户
-r 删除家目录和邮箱
  1. groupadd 添加新的用户
-g 指定gid
  1. groupmod 修改组的信息
-n 指定新的组名
  1. groupdel 删除组
  2. groupmems 管理组内成员
-g 指定组
-a 添加用户
-d 删除用户
-l 列出组内的用户
-p 清空用户

> usermod –u 2022 user111 //给用户user111修改uid为2022 usermod –G it1 user1   
> //给用户设置附加组it1(-g是修改私有组 –G设置附加组) usermod –aG it1 user1  
> //-G设置新附加值但之前附加组都要去掉;-aG追加附加组,之前的会保留如果不加a则之前的附加组要被删掉 usermod –L
> user1//锁定用户登陆不进去 userdel user1 //删除用户但未删除用户家目录和邮箱 userdel-r
> user2//删除user2家目录和邮箱  邮箱在cd /var/spool/mail
> gpasswd group1 //给group1设置密码
> newgrp group1 //临时登陆group1组。组是有权限的,但别人不想让你一直在组里就让你临时待在组里

删除组删不掉私有组但可以删附加组 uid是在最大的uid上+1 默认最大的uid和gid都是60000
因为如果把前面的用户删了,有可能没删干净遗留一些文件,再创新用户用之前的uid则文件又属于新用户了. groupadd group1
//创建group1组 groupadd –g 1006 group2 //指定group2组的gid为1006
创用户手动指定组一定要事先创建组

密码文件-/etc/shadow:

用于保存用户的密码信息:
在这里插入图片描述
 字段1:用户帐号的名称
 字段2:加密的密码字串信息
 字段3:最近一次修改密码的时间,表示从1970.01.01至今的天数
 字段4:密码的最短使用天数,默认值为0,没有要求
 字段5:密码的最长有效天数,默认值为99999
 字段6:密码即将到期警告天数,默认值为7
 字段7:在密码过期之后账号保持活动的天数,指定天数后账号被锁定,成为无效
 字段8:帐号失效时间,默认值为空,以1970.01.01的天数表示
 字段9:保留字段(未使用)

配置密码的期限:

下图显示了相关的密码期限参数,可以通过chage命令对其进行密码期限的调整
Linux入门——用户组和权限管理_第1张图片
语法:
chage [选项] 用户
#chage -m 0 -M 90 -W7 -I 14 user3 分别修改用户密码的最短期限,最长期限,警告周期和失效期限
#chage -d 0 user3 强制要求用户在下一次登录时更新密码
#chage -l user3 显示用户密码的的信息
#chage -E 2020-10-10 user3 用户将于2020-10-10到期(YYYY-MM-DD格式)

ps aux |grep vim 进程拥有人一般取决于谁来运行进程
ps |aux 查看进程

Linux文件安全:

 每一个文件都有一个uid和gid
 任何进程运行时都带一个uid和一个或多个gid标识符
 通常决定于哪个用户执行这个进程
 三种访问类别:
 运行的进程跟文件有着同样的uid(user)
 运行的进程跟文件有着同样的gid(group)
 其它进程(other)

进程uid继承用户uid
进程除了有uid信息还有gid信息,gid是看用户gid是多少
多个gid信息:一个用户可有多个附加组
最终都是通过进程来访问文件

权限优先级:

 如果UID匹配,用户权限适用
 否则,如果GID匹配,组权限适用
 如果都不匹配,其它权限适用

先匹配拥有人,拥有人不同在匹配拥有组,如果都不匹配就是其他人访问
如何匹配身份:1.你当前是谁2.你访问什么3.你访问的拥有人是谁
为什么匹配权限:不同身份权限不同

Linux文件系统权限:

查看文件和目录的权限
ls -l 文件名
ls -ld 目录名
-rw-r–r--. 1 root root 2484 Mar 18 00:04 /etc/passwd
文件类型 访问权限 连接数 所属人 所属组 大小 修改时间 文件名
访问权限:九个栏位是权限,三个三个是一组分别是拥有人拥有组其他人

权限分配 	 文件所属人     文件所属组用户	 其他用户
字符表示    	r	w	x	   r	w	x	     r	w	x
权限项	    读 写  执行	  读    写	执行	读	写	执行
数字表示    	4	2	1	   4	2	1	    4	2	1

文件类型:

:代表普通文件 d:目录
l:链接文件 b和c分别代表块设备和字符设备,还有其他特殊的文件p和s

权限对文件和目录的影响
权限 对文件的影响 对目录的影响
r (读) 可以读取文件的内容 可以列出目录的内容(文件名)看不见权限详细信息
w(写) 可以更改文件的内容 可以创建或删除目录中的任一文件
x(执行) 可以作为命令执行文件 可以进入目录(还需要r权限才能读目录内容)
rx 进入目录看权限详细信息,目录一般来说有rx权限才有意义
修改权限要会修改拥有人拥有组和对应身份权限

更改文件和目录的权限:

 符号方式修改文件权限
chmod命令用于更改文件对于某类用户的操作权限
chmod [-R] whowhatwhich FILE…

-R:递归,将目录里文件文件一并修改

 数字方式修改文件权限
 使用三个数字(nnn)模式
chmod nnn FILE…
 通过把数值相加来计算权限
 第一个数字代表所属主(u)的权限
 第二个数字代表属组(g)的权限
 第三个数字代表其它人(o)的权限
 举例如下:

增加文件属主的执行权限(x)
#chmod u+x test
去除文件属主与属组的写权限(w)
#chmod u-w,g-w test
设置其他用户的文件权限为可执 行
#chmod o=x test
设置属主完全控制,属组和其他人读权限
#chmod 744 test
所有用户家目录权限默认700
chmod 66 passwd 少写一位系统会在前面补0,系统认为权限是066

设置文件属主和属组:

 chown命令用于设置文件的属主和属组
命令格式:chown [-R] OWNER[:GROUP] FILE…
 chgrp命令用于设置文件属组
命令格式:chgrp [-R] GROUP FILE…
 只有root可以修改文件的拥有人,root和文件的拥有人可以修改文件的拥有组,前提是用户需要在组里面。
 例子:

#chown –R :user4 data/ 把data/目录下所有文件拥有组改为user4,data目录也一起修改
#chown user1 test  设置文件test的属主为用户user1
#chown :it2 test  设置文件test的属组为用户组it2
#chgrp it2 test 效果同上
#chown user3:it3 test  设置文件test的属主为user3,并设置文件的属组为it3
#chown user4 passwd  修改文件拥有人
#chgrp user5 passwd  修改文件拥有组
#chown user1:user4 passwd修改拥有人拥有组
#chown :user4 passwd  修改拥有组

你可能感兴趣的:(Linux,rhel)