本篇Linux专业知识主要讲系统用户及组管理,文件的权限管理。
第一部分:系统用户及组管理 一、用户类型 超级用户: root ,它的UID为0 。 普通用户:管理员创建,权力受限(UID从1000开始,Redhat7以前的版本是从500开始)。 系统用户:一般不登陆系统,用于维持某个服务程序正常运行(UID:1 ~ 999,Redhat7以前的版本是UID:1 ~ 499)。 什么是UID呢? UID就像人的身份证号一样,通过这个号,标识用户、程序。
二、系统用户信息配置文件 1.用户信息文件: 账户信息文件: /etc/passwd 。 密码信息文件: /etc/shadow 。 我们可以打开 /etc/passwd 这个文件,账户信息存储格式如下:
我们打开 /etc/shadow 这个文件,密码信息存储格式如下:
2.用户组文件: 用户组信息文件: /etc/group 。 组密码信息文件: /etc/gshadow 。 我们可以打开 /etc/group 这个文件,用户组文件信息存储格式如下:
三、系统中添加用户 往系统中新增一个用户,命令:useradd 用户名。比如添加一个名为wwy的用户: useradd wwy。useradd 命令的相关参数: 参数和说明 -u:指定一个UID -d:指定一个宿主目录 -g:给它指定一个主group,只能有一个 -G:指定一些附加group,可以有多个 -s:指定登录用使用的shell
创建用户时指定UID
创建用户时指定宿主目录
创建用户时给它指定主组
四、修改用户信息 删除一个用户: userdel wwy (这就删除一个名为 wwy 的用户)。连用户的宿主目录一起删除: userdel -r wwy 。 设置用户密码: passwd wwy (给wwy这个用户设置密码)。设置密码也可以这样: echo weiwenying | passwd --stdin wwy (把wwy用户的密码设为weiwenying)。 修改用户UID : usermod -u 2016 wwy (给用户wwy的UID设置为2016)。 修改用户默认使用的shell解释器 : usermod -s /bin/bash wwy(给用户wwy的shell设置为/bin/bash) 。 切换用户,使用其他用户登陆系统: su wwy (保持原来的环境变量)。su - wwy (切换到 wwy 这个用户的环境变量)。
五、查看用户信息 查看 用户所在组和用户ID ,显示当前有效用户的UID和GID : id wwy 。 查看 已经登录系统的所有用户,who 。如果还要显示正在执行的指令与程序,则使用 w 。 看一下你是哪个用户(当前用户): whoami 或者 who am i (如果使用who am i, 而且你是从wwy用户切换到root,那么此时显示当前用户是wwy)。
六、系统中用户组操作 添加一个组: groupadd GroupName 。添加组时,可以给组指定一个GID号:groupadd -g 2018 GroupName。
七、Centos6 恢复root密码 1.关闭SElinux: # 查看一下SElinux状态 # Enforcing : 代表记录警告且阻止可疑行为。 # Permissive: 代表仅记录安全警告但不阻止 可疑行为。 # Disabled : 代表 SELinux 被禁用。 getenforce # 改变SElinux状态:setenforce [ Enforcing | Permissive | 1 | 0 ] # 临时关闭: setenforce 0 # 注意当从 Disabled 切换到 Permissive 或者 Enforcing # 模式后需要重启计算机并为整个文件系统 # 重新创建安全标签(touch /.autorelabel && reboot)。 # 这里我们要永久关闭: 2.永久关闭SElinux,打开 /etc/selinux/config 这个配置文件,设为 SELINUX=disabled :
保存退出,reboot 操作系统,发现启动速度会很慢。 3.重启系统,在启动界面倒计时的时候,按下回车键。然后按下 e 进入编辑:
在编辑模式中选择kernel选项,然后按 e 进行编辑:
进入之后,输入 空格 + 1,回车进入 单用户模式:
然后按下 b ,启动单用户模式,然后就可以用正常改密码命令,进行修改密码:
八、错误处理 切换用户以后,出现 [-bash-4.1$],而不是正常的 [test@localhost ~] : 这是因为删除了用户家目录下的bash相关配置文件导致的。如下图:
可以通过复制系统中的bash文件到宿主目录下: cp /etc/skel/.bash* /home/test。
第二部分:文件的权限管理 一、权限的作用 通过设置权限,可以达到以下三种控制效果: 只允许自己访问。 预先指定一个用户组,允许组中的用户访问。 系统中任何用户都可以访问。 权限参数说明: 通过 ls -l,列出当前文件夹文件相关参数,比如: drwxr-xr-x. 2 root root 4096 May 23 16:54 Desktop
文件类型: 参数和说明 p:表示命名管道文件 d:表示目录文件 l:表示符号连接文件 -:表示普通文件 s:表示socket文件 c:表示字符设备文件 b:表示块设备文件 权限类型:
二、权限查看与修改 查看权限:ls -l (加上 -l 参数)。 查看权限: ll -d a.txt (查看a.txt文件)。 查看文件具体详细信息: stat a.txt (查看a.txt文件)。 1.修改文件权限 用英文字母方法修改(中间的+、-表示添加还是删除该用户的对应权限):
权限参数对应的数值:
权限参数组合的值:
使用数值方法修改权限: 比如,我们要把文件 a.txt 的权限修改为 rw-rw-r--,则使用命令为 chmod 664 a.txt。 2.修改文件所有者: 只修改所有者:chown [用户名] [文件名] 。 修改所有者和主组: chown [用户名]:[主组名] [文件名] 。 只修改主组: chown :[主组名] [文件名] 。 3.修改创建文件时的默认权限 创建文件时,系统都会给文件一个默认权限: 创建文件:默认权限 最大值为6,因为Linux系统不允许文件一创建就有执行权限。如果你想文件执行,就用chmod 命令手动修改。 创建目录:默认权限 最大值为7,因为目录的执行权限,就是进入目录,Linux是允许的。 通过设置umask值,可以修改默认权限。 umask计算方法: 文件默认权限=666 - umask值, 比如:666-022=644 。 目录默认权限=777 - umask值, 比如:777-022=755 。 默认权限设置默认位置:一般在 /etc/profile、$ [HOME]/.bash_profile 或 $[HOME]/.profile 中设置umask值。 4.文件的特殊权限 1].设置SUID权限 设置SUID位 : chmod u+s filename 或者 chmod 7644 filename(这里假设原来权限为644) 。 去掉SUID设置: chmod u-s filename 或者 chmod 644 filename(这里假设原来权限为644) 。 什么是SUID权限: 一般用在可执行文件上。 当用户执行该文件时,会临时拥有该执行文件的所有者权限。 所有者权限的第三位是一个小写的”s” ,就表明该执行文件拥有SUID属性:
为什么passwd需要这个SUID权限呢? 我们先看 /etc/shadow 这个文件:
你会发现 /etc/shadow 这个文件没有任何权限,所有用户在使用 sudo passwd 修改自己密码时,要将密码写到这里面来。然而普通用户对这个文件是不能读写的啊!怎么办呢?这时我们想,能不能通过一个程序,让这个程序帮我们写进去呢?这个程序就是执行权限为 s 的文件程序。根本原因是:即使文件显示没有任何权限,但拥有者是可以有文件的所有权限的。 这个过程就像这样: 出门前,你爸爸和你说,把家看好。财产是你爸爸的(所有者),但你爸爸出门后你可以支配家里的任何东西(赋予 s 权限,这时你就是你家的所有者,你爸爸的财产都是你的!)。 出门前,你爸爸还告诉你,别人送钱来就要,其它东西不要。另外不要动家里的任何东西。(规定了程序可以执行的内容)。 王叔叔想把iPhone7s和钱放进你家,但它进不去(没有权限)。 王叔叔把你表弟叫过来,想把东西放进去,但也放不进去(没有 s 权限)。 王叔叔把你叫出来,要送你iPhone7s和钱,你只收了钱(其它用户调用具有 s 权限的文件)。 注意:这个权限很大,一般不要使用。具有很高的安全风险。 注意:如果文件一开始就没有可执行权限(x权限),直接设置 s权限 是无效的,会显示的是大写的 S。 2].设置SGID 设置SGID位: chmod g+s filename 。 去掉SGID设置 :chmod g-s filename 。 对文件夹设置了 s 权限以后, 创建文件时主组不一样:
比如上面的:root用户执行 chmod g+s tencent,那么,在tencent这个文件夹中创建文件,默认主组由原来的 wwy 变成了 root 。 5.设置粘滞位 创建一个文件夹 mkdir 777 tencent/ (最好在 /tmp目录 下创建这个文件,因为所有用户都能进入这个文件夹)。在 777 这个权限下,所有用户都可以对 tencet文件夹内 的文件进行 删除操作。如果一个用户参加了一个文件,又不想其它用户删除这个文件,那么这个文件夹就要粘滞位 : 设置粘滞位: chmod 1777 tencent 。 设置有 粘滞位 的文件夹,权限后面原来的 执行参数x 变成有一个 参数t:
这样,凡是你放进 tencent 这个文件夹的文件,其它用户是删除不掉的,只能由你删除。
三、ACL 访问控制列表 ACL(Access Control List) 访问控制列表: 增加权限给其它组别或者用户,而不只是局限于 owner 、group、other。 允许 指定用户(用户A、用户B、用户C等)拥有写权限,而不再是它们整个组拥有写权限。 下面我们使用ACL工具包管理文件权限: 查看有没有ACL工具包: ```rpm -qf `which getfacl```` 。 使用 getfacl 命令查看文件权限,比如查看文件a.txt : getfacl a.txt 。 使用setfacl设置权限:
setfacl设置文件权限
setfacl设置目录权限
setfacl设置过的文件权限
相关主题 |