Linux03__管理

一、软件包管理

1.1 Linux分为源码包和二进制包(rpm包)

  源码包:开源、可选择安装功能、需编译安装 更稳定、卸载方便,但安装步骤多,编译时间长,报错不易解决;

/usr/local/软件名/ 源码包 默认安装路径(卸载的话直接将/usr/local/<包名>删除即可)
源码包安装:将包解压 ./configure [--prefix=/usr/local/<>]

定义需要的功能选项;

检测系统环境是否符合要求;

将前两项结果写入makefile文件;

make 编译(make clear清空编译)
make install 编译安装

     rpm包:安装快、简单,但看不到源码、依赖性更大。

rpm默认安装路径
/etc/ 配置文件 /usr/bin/ 可执行的命令
/usr/share/doc 软件使用手册 /usr/share/man/ 帮助文件

1.2 rpm命令管理

  rpm安装最大问题:依赖性

  (1)依赖分为树形依赖,环形依赖(同时安装所有包),模块依赖

#模块依赖

mount /dev/sr0 /mnt/cdrom/  #挂载系统镜像
cd /mnt/cdrom/Packages
#选择安装mysql为例
rpm -ivh mysql-connector-odbc*
#提示缺少依赖libobdcinst.so.2,so.2格式为安装库,只需找到对应的安装包即可安装,可通过http://www.rpmfind.net/这个网站查询对应的安装包

  (2) -i 安装, -v 显示详细信息, -h显示进度, -U升级, --nodeps 不检测依赖性, -e 卸载

      -q 查询,  -a 所有, -i 查询软件信息, -p 查询未安装包的信息

rpm -ivh make-3.82-23.el7.x86_64.rpm
rpm -Uvh make-3.85-20.el7.x86_64.rpm
rpm -e make
rpm -qa | grep make
rpm -qi make
rpm -qip zip-3.0-11.el7.x86_64.rpm
rpm -qf <系统文件>   #查询系统文件属于哪个安装包
rpm -qRp <包名>  #查询未安装包依赖

1.3 yum在线管理

  (1)IP地址配置和yum源网络配置

# 修改网络配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
service network restart
''''''
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=50ac09de-bd8f-42f4-99a0-bf6d5d244b9d
DEVICE=ens33
ONBOOT=yes
HWADDR=00:0C:  :  :
''''''
#配置网络YUM源
vi /etc/yum.repos.d/CentOS-Base.repo
'''''''
[base]  容器名称
mirrorlist  镜像站点
baseurl  yum源服务器地址
enabled  此容器是否生效
gpgcheck  RPM的数字证书是否生效
gpgkey  数字证书的公钥文件保存位置
'''''''

  (2)yum命令

yum list 
yum search <包名>
yum -y install <包名>
rpm -q gcc  #查询安装结果
yum -y update <包名>
yum -y remove <包名>  #尽量不用yum卸载,会将依赖一起卸载,可能引入其他包的依赖问题

yum grouplist
yum groupinstall <软件组名>

  (3)光盘yum源搭建

# 1 挂载光盘
mount /dev/sr0 /mnt/cdrom/
# 2 修改配置文件,本地YUM源配置文件为CentOS-Media.repo,让这个文件生效,其他.repo文件失效(可将其他全备份改名)。
cd /etc/yum.repos.d/
vim CentOS-Media.repo
#改enabled=1,baseurl=file:///mnt/cdrom/

二、用户管理

2.1 用户信息文件 /etc/passwd

man 5 passwd  #用man打开配置文件

vi /etc/passwd  # 每一行代表一个用户
#  root:x:0:0:root:/root:/bin/bash
#  用户名:密码标识:UID:GID:用户说明:家目录:登录之后的shell
UID: 0---超级用户,1-499---系统用户,500-65535---普通用户

2.2 影子文件 /etc/shadow

vi /etc/shadow  
# zf:$6$P8QkrNzO$0dbklAZRWTqNgmneADWWlKoT70gRuZu.hu3A2jwExuxkOV.RZ4nGCAVkoyDHYrJk75RStR0ffZS0Y3UlzKXBp0:18299:0:99999:7:::

#  用户名:加密密码:修改时间戳:密码修改时间间隔:有效期:警告天数

2.3  组信息文件 /etc/group

  组密码文件 /etc/gshadow

vim /etc/gshadow
''''''
root:::
zf:!::
组名:组密码:组管理员用户名:组中附加用户
''''''

vim /etc/group
''''''
root:x:0:
zf:x:1000:
组名:组密码标志:GID:组中附加用户
''''''

2.4 用户家目录

  普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700;

  超级用户:/root/,所有者和所属组都是root,权限是550

# 将普通用户改为超级用户
vi /etc/passwd
''''''UID(第3列)改为0 zf:x:0:1000::/home/zoufan:/bin/bash 
''''''

2.5 用户管理命令

#1 用户添加 useradd 
useradd test
# 选项 -u UID,-c 用户说明,-G组名
useradd -u 666 -G root,zf -c "test user" -d /zzff zzff
#2 修改密码 passwd
passwd test
#选项 -S查询用户密码的状态 -l暂时锁定用户 -u解锁用户
#3 修改用户信息 usermod / chage
usermod -c "test user" -G root zzff
chage -l zzff  # 修改用户密码状态
#4 删除用户 userdel
userdel -r zzff # -r删除用户的同时删除家目录
#5 用户切换 su
su - root  # -连带环境变量一起切换   
su - root -c "useradd testuser" # -c仅执行一次命令,不切换用户身份

2.6 用户组管理命令

# 1添加用户组
groupadd testg
# 2修改用户组
groupmod -n tg testg 
# 3删除
groupdel tg

三、权限管理

3.1 ACL权限(Access Control List)

  (1)定义:一个针对文件/目录的访问控制列表

  在普通权限中,用户对文件只有三种身份,就是属主、属组和其他人;每种用户拥有读、写、执行3种权限;ACL用于设定用户针对文件的权限。

  

   (2)应用场景:如图,/project为班级文件夹,属主为老师Teacher,属组为班级名Python,班级同学有Stu1、Stu2。project的权限为770,即老师和两位同学对project的权限为rwx,其他人为---。现有一位旁听人st,需设定他对project的权限为r-x,则此时需要设定ACL权限

#1 查看分区ACL权限是否开启
df -h  #找根分区对应的盘符,假设是/dev/sda3
dumpe2fs -h /dev/sda3  #dumpe2fs查询指定分区文件系统信息

#2 设置ACL权限命令 setfacl
# 选项:-m设定ACL权限, -x删除指定的ACL权限, -b删除所有ACL权限,-d设定默认ACL权限, -k删除默认ACL权限, -R递归设定ACL权限
mkdir /project
chown root:Python /project/
chmod 770 /project/

useradd Stu1
useradd Stu2
groupadd Python
gpasswd -a Stu1 Python  #将用户加入指定组中
gpasswd -a Stu2 Python
useradd st
setfacl -m u:st:rx /project/  #用户st ACL权限
setfacl -m g:gt:rx /project/  #组gt ACL权限
getfacl /project

  (3)最大有效权限和删除ACL权限

  • 最大有效权限mask:mask值和设定值求“相与”值
setfacl -m m:rx /project
  • 删除ACL权限
setfacl -x u:st /project  #删除用户ACL
setfacl -x g:gt /project  #删除用户组ACL
setfacl -b /project  #删除所有ACL

  (4)默认ACL权限和递归ACL权限

#1 递归
setfacl -m u:st:rx -R /project/

#2 设定默认ACL
setfacl -m d:u:st:rx -R /project/

3.2 文件特殊权限

  (1)SetUID

# SetUID功能:对可执行的二进制程序,命令暂时可获得该文件属主身份
# 设置SetUID:chmod 4755 <文件名>

whereis vim 
chmod 4755 /usr/bin/vim
ll /usr/bin/vim
#修改vim可执行程序的SetUID权限,使用普通用户即可用vim对任意w权限文件修改

# SetUID危险性
1、关键目录严格控制写权限,如“/”、“/usr”;
2、定时检查除系统默认的SetUID权限

  (2)SetGID:和SetUID类似,获得的是属组身份,对象包括可执行文件和目录

  (3)Sticky BIT:和SetUID类似,获得的是其他人身份,对象为目录

3.3 文件系统属性chattr权限

  chattr权限可限制root用户,但是主要是用来防止root误操作

# chattr选项:
 i  对文件,相当于给文件加锁,不能改,不能删除;
    对目录,不能新建和删除文件,只能修改目录下的文件的数据
 a 对文件,只能在文件中追加数据,不能改,不能删除;
    对目录,不能删除文件,只能在目录中新建和修改文件

chattr +i test.txt
lsattr -a test.txt #查看chattr属性,-a显示所有文件和目录,-d列出目录属性
chattr -i test.txt
chattr +a test.txt

3.4 系统命令sudo权限

  用途:将只能root用户拥有权限的命令赋予普通用户

#1 需要root用户将命令权限赋予普通用户,操作对象是系统命令

visudo   #实际是修改/etc/sudoers文件
''''''
用户名  被管理主机IP=授权命令(绝对路径)
root  ALL=ALL
zf 10.10.10.1=/sbin/vim
zf ALL=/sbin/shutdown -r now 
''''''
su - zf  #切换zf用户
sudo -l  #查看可用的sudo命令
sudo /sbin/shutdown -r now  #使用绝对路径执行

  

原文地址:https://www.cnblogs.com/koafan-zou/p/12275897.html