系统:Red Hat Linux系统下的RHEL7
一、用户与组的管理(user,group)
用户账户分类
超级用户:UID=0(GID的分类和GID规律与UID一致)
程序用户:RHEL5/6,UID=1-499;RHEL7,UID=1-999(1-200系统)
普通用户:RHEL5/6,UID=500-65535;RHEL7,UID=1000-60000
文件:
/etc/passwd ----用户的基本信息
/etc/shadow ----用户的密码信息
/etc/group -----用户的组信息
用户的信息在/etc/passwd和/etc/shadow中是一一对应的,所在的行数也是一致的。
基本指令:
groupadd 组名 ------创建组
可以指定组id 等属性 groupadd 组名 -g 组id
groupmod 修改已经创建组的属性比如组名,组id等
groupdel 删除组(只针对附加组,主组无法删除)
删除主组需要先删除用户或者将主组释放出来,替换掉。就可以进行删除。
useradd 用户名 -----创建用户
userdel 用户名 ----删除用户,但保留家目录,只是删除passwd和shadow下的信息。
userdel -r 用户名 ----删除用户的同时删除家目录,(日志信息一并删除/var/spool/mail)
usermod 对已存在的账户做属性的修改
-s 修改登录shell (/bin/bash允许登录,/sbin/nologin禁止登录)
-L 锁定用户
-U 解锁用户
psswd 密码修改
针对root:
1、不需要知道当前的密码
2、设置新密码不需要遵循密码规则
3、root用户切换到其他普通用户不需要输入密码,反之需要
针对普通用户:
1、需要知道当前用户的密码
2、设置新密码,必须遵循密码要求
-------------------------------
仅限于root用户下操作
passwd -l 用户名 进行密码锁定
passwd -u 用户名 进行密码解锁
-------------------------------
passwd锁定和usermod锁定用户有所区别,二者不同。
查看/etc/shadow即可。
相关策略:(仅限于root用户下操作)
passwd -S 用户名 -----查看用户的密码状态以及相关信息
passwd -s 登录shell 用户名 -----修改登录账户的登录shell
passwd -d 用户名 ------清除用户的密码
passwd -f 用户名 ------登录强制修改密码
----------------------------------------------------------------------------------
echo 新密码 | passwd --stdin 用户名
-------跳过修改密码的交换界面(不需要交换应答),可直接修改密码(有利有弊,密码以明文的形式保存所有人都知道。)
通过管道符来实现,前者的输出作为后者的输入。
----------------------------------------------------------------------------------
root切换用户无需输入密码,反正需要。
cut 主要针对“列”提前文本字符
f 设置需要查看的列数
d 设置间隔符号
指令格式:cut -d 间隔符 -f 需要查看的列数 文件/目录
与grep的区别在于:grep可筛选行,cut可筛选列。
-------------------------------------------------------------
用户创建时,默认的属性都通过/etc/login.defs文件控制,修改此文件的属性,会影响以后创建的所有用户。
-------------------------------------------------------------
如果需要对现存的用户进行属性的修改,可以使用chage这个指令进行操作。
chage --help 查看帮助
chage -l username 查看用户的密码策略
chage -M 天数 设置密码维持的天数(多少天以后密码过期---有效期)
chage -m 天数 设置密码多少天以内可以再次修改(可以修改密码的最小天数)
chage -W 天数 设置密码过期前的多少天进行提醒(密码过期的警告提醒)
->可以合并成一条命令:chage -M 天数 -m 天数 -W 天数
修改以后可以通过/etc/shadow文件来查看变化。
chage -d 将上次更改密码的日期设置为最后一天
chage -d 0 用户 ---设置用户登录时,强制修改密码
-----------------------------------------------------------------------
用户创建时也会根据/etc/skel这个魔板来进行创建,文件中有什么新建用户时,就会拷贝什么,默认都是隐藏文件,可以自定义往里面添加或者拷贝文件,再新建用户,家目录下就会出现新添加的文件。
-----------------------------------------------------------------------
二、目录和文件的权限管理
例:-rwxrw-rw- 不算第一位,其他每三位为一组。第一位表示目录或文件的类型
权限表示:
rwx
r:可读,表示可以列出目录中的文件,可以执行ls指令
w:可写,表示可以修改,删除,增加目录中的文件(touch,rm)
x:可执行,表示可以进入该目录,可执行cd指令,可以cd进去,同时查看目录中文件的详细信息。
-rwx------
第一位表示文件类型,常用:
-:表示普通文件
d:表示目录文件
l:表示软链接
b:表示块设备
c:表示字符设备
rwx对应的数字为421,(r对应4,w对应2,x对应1)所有文件的最大权限为r+w+x=7,即777
对文件权限进行更改使用chmod指令
u表示user,属主
g表示group,属组
o表示other,其他用户
a表示所有
chmod指令基本使用
chmod u/g/o+/- rwx 目录/文件
比如:chmod u+w dir/file 对目录/文件属主增加可写的权限 / chmod g-x dir/file 对目录/文件的属组去除可执行的权限。
也可以使用数字:
chmod 777 file 对目录/文件属主,属组,其他用户都开放所有权限(相当于-rwxrwxrwx)
chmod 640 file 对目录/文件属主可读可写,数组可读,其他用户没有任何权限。(-rw-r-----)
chown修改目录/文件属主的属性
---------------------------------------------------------
chown即可单独修改属主,也可单独修改属组,也能同时修改属主属组
---------------------------------------------------------
指令:
chown 目录/文件 用户名 --------修改目录 或者 文件的所属主
chgrp只能修改属组
chgrp 属组 file/directory -------修改目录或文件的所属组
------------------------------------------------------------------
同时修改:
chown 属主:属组 file/directory -----同时修改目录或文件的属主和属组
或chown 属主.属组 file/directory
------------------------------------------------------------------
扩展位:
suid、sgid、粘滞位o+t
--------------------------------------------
suid的作用:
用于可执行文件,使文件的拥有者的身份运行该文件
指令:
chmod u+s file(相当于运行时,借助管理员身份运行)
--------------------------------------------
--------------------------------------------
sgid的作用:
用于目录,在该目录建立的所有文件或目录,属组都继
承该目录的属组。
指令:
chmod g+s dir
--------------------------------------------
---------------------------------------------
粘滞位的作用:
用于目录,在该目录建立的文件或目录,只有建立者
可以删除其他用户无法删除。
所有的other用户在目录中都拥有对自己文件的完全控制权限。
指令:
chmod o+t dir
---------------------------------------------
扩展权限控制:
setfacl 设置某个文件或者目录的ACL属性
-m 设置acl,针对用户,关键词为‘u’,针对组,关键词为‘g’,设置时,权限不能为空
-x 删除设置的acl属性
-d 只针对目录设置默认的acl参数
-b 删除所有的acl属性
getfacl 获取某个文件或者目录的ACL属性
-a 显示文件acl属性
-d 显示默认的acl属性
-R 查询递归的acl属性
---------------------------------------------------------------------------------
基本指令:
setfacl -m u:tom:rw- /file
setfacl -m u:jerry:- /file
setfacl -m g:IT:rw- /file
setfacl -d -m u:tom:rwx dir 只针对目录得acl属性设定(-d参数表示--default)
getfacl dir/file 获取目录或者文件的acl信息
移除权限(-x移除acl,移除权限时,无需指定权限,针对用户或组即可)
指令:
setfacl -x u:jerry /file
SUID:针对特殊指令,做提权,不建议随意更改默认指令属性,执行者对该程序需有x可执行权限
----------------------------------------------------------------------------------
可以通过chmod来修改属性来进行控制:
------------------------------------------------
权限数字表示:
(suid借助此时得身份进行运行,如果当前是root就是借助root身份)
4775 ------ chmod 775 file + chmod u+s file
4755 ------ chmod 755 file + chmod u+s file
sgid针对同组成员,彼此不发送冲突。同组成员继承父目录的属组。主要针对目录。
2770 ------ chmod 770 file + chmod g+s dir
粘滞位:用于目录。在目录下只有创建者才可以删除自己的文件。其他用户无法删除。
1777 ------ chmod 777 file + chmod o+t dir
------------------------------------------------
umask值是在建立目录或文件的默认权限,可以修改。(默认情况下系统会分配一个默认值,根用户0022,其他用户0002)
umask -S 以字母(符号)的形式显示各个权限。
777(rwxrwxrwx)
root根用户下:
新建目录权限dir=777-022=755
新建文件权限file=777-022-111=644
users其他普通用户下:
新建的目录权限dir=777-002=775
新建的文件权限file=777-002-111=664
三、su,sudo提权
(su 切换身份,以超级用户的身份来执行)
(sudo 赋予某些指令,赋予提权,执行某些指令。不告诉root密码)
-->sudo是用自己的密码,通过赋予的权限,来执行我需要做的事情,没写的无法操作。----有条件的下放
su没有限制。给予超户密码。
(1)su - 切换用户
su - 用户名
在根用户下,切换用户不需要密码。反之需要。
普通用户下,su - 不加用户名是往根用户切换。需要输入密码。
(2)sudo 提权运行相关的指令。
可以设置黑白名单。放行或者不允许相关指令的执行。
visudo 来进行修改文件更改相关的权限。
或可以修改文件/etc/sudoers 来进行设置。二者一样。
sudo su - 只要知道当前用户的密码就可以切换到root用户。(风险指令)