linux 敏感标记 权限,闲话Linux系统安全(二)——强制访问控制(MAC)

安全秘笈第二式——不安全的特殊权限和强制访问控制(MAC)

在DAC的机制中,不管是所有权加权限的管理办法,还是文件系统访问控制列表(facl),都是非常强大的访问控制机制,均可以对文件资源进行比较有效的访问控制。但DAC的自主性太强,可以说文件资源的安全在很大的程度上取决于使用者个人的意志,因此这种安全似乎就被主观化了。尤其是对于root用户而言,不管是权限和所有权的限制,还是facl的管理控制,都仅仅能够限制root的误操作而已。

在CentOS或RHEL系统中,每一个服务都需要以守护进程的方式运行起来并在后台监听指定的套接字,比方说:实现DNS服务的bind软件需要一个名为named系统用户启动名为named的守护进程;MySQL服务的启动也需要一个名为mysql的系统用户来启动一个名为mysqld的守护进程,等等。如果类似这样的网络服务的TCP或UDP的会话被***者劫持,那么***者就可以冒用这些系统用户的身份。有人会说,没有什么大不了的嘛,这些连系统都无法登录的系统用户被劫持了也不会有什么危险啊。但是请记住,在CentOS或RHEL的文件系统中有三个特殊权限,即:SUID、SGID和Sticky,其中SGID如果设置在目录上,则在该目录中创建的所以新文件的属组都是从该目录上继承的该目录的属组;如果设置在文件上,则在该目录中如果包含了可执行文件的话,无论是谁发起的执行进程,改进程的属组都是该目录的属组。Sticky也被翻译为“粘滞位”,只能设置在目录上。凡是被设置了粘滞位的目录,即便用户对该目录有所以的rwx的权限,也只能管理属主是其自身的那些文件,禁止了对属主不为自己的所以文件的修改和删除等写操作。可以说这两个特殊权限还是有一定的方便管理和安全保证作用的。

但是,SUID可是一把非常锋利的双刃剑,用好了,方便管理所向披靡;用不好,那可就是为他人做嫁衣而置自己于死地了。

为什么这么说呢?我们一起来分析一下SUID这个特殊权限位。SUID只能设置在二进制文件上,也就是在CentOS或RHEL中的具有ELF可执行权限的二进制文件,我们所编写的shell脚本一般是无法设置这个权限的,这是一个很严格的限制。一旦在可执行的二进制文件上添加了SUID,则所有用户在执行这个程序以后,都是以这个文件的所有者的身份来进行。现在大家明白了么?在CentOS或RHEL中,根文件系统下的文件的属主绝大多数都是root,包括那些二进制文件,所以不管你是什么用户,一旦执行了设置了SUID的二进制文件,也就意味着能够以root用户的身份操纵这个二进制文件去访问所有属主为root的文件了。所以即便是无法登录到系统的系统用户,一旦因为这样的问题而获得root的身份之后,仍然可以为所欲为的。

比如说,CentOS或RHEL中的DNS服务在运行过程中,其进程会话被劫持,也就意味着***者已经获得了named用户的身份。此时,如果***者以named用户的身份,在/var/named/slaves目录中上传了一个带有SUID权限的二进制程序vim,这个vim跟系统中的vim是一模一样的,所需要的库也是一模一样的。于是,每次执行这个vim文件来查看系统中的其他文本文件的时候,都好像是root用户在执行这样的操作,那么接下来修改将文件修改成什么样子其实就看***者的心情了。

说了这么多,其实主要是想说明这样一个问题:传统的DAC固然能够有效的控制文件的访问,但是无法解决因为SUID等因素导致的root身份盗用带来的问题。

鉴于此,在防止root用户对资源误操作和权限滥用的问题上,就迫切需要行之有效的管理办法或解决方案,以增强系统的安全性和资源访问的安全性。

人们首先在文件系统上打起了主意。文件系统中被引入了一个新的挂载选项——nosuid,该选项不允许非root用户向文件系统中复制带有SUID的权限的文件,从而在一定程度上保证了root身份盗用的问题。但是这仍然是治标不治本的方法,最最核心的问题是root权限太大的问题。

于是,人们提出了强制访问控制(Mandatory Access Control——MAC,以下简称MAC)这一安全概念。MAC最早主要用于军方的应用中,通常与DAC结合使用。

首先让我们来了解两个至关重要的术语:

主体:

通常指用户,或由用户发起运行的进程或用户正在使用的设备。主体主动发起对资源的访问,它是系统中信息流的启动者。

客体:

通常是指信息的载体或从其他主体或客体接收信息的实体。主体有时也会成为访问或受控的对象,如一个主体可以向另一个主体授权,一个进程可能控制几个子进程等等,这时受控的主体或子进程也通常被认为是一种客体。

MAC是利用策略将访问控制规则“强加”给访问主体的,即系统强制主体服从访问控制策略。MAC的主要作用对象是所有主体及其所操作的客体(如:进程、文件等)。MAC为这些主体及其所操作的客体提供安全标记,这些标记是实施强制访问控制的依据。

系统通过比较主体和客体的安全标记来判断一个主体是否能够访问其要操作的客体。用户发起的进程无法改变其自身及其它客体的安全标记,利用这样的机制,系统可以比较有效地防止特洛伊******以及root身份冒用或盗用等安全威胁。

MAC一般与DAC共同使用,两种访问控制机制的过滤结果将累积,以此来达到更佳的访问控制效果。也就是说,一个主体只有通过了DAC限制检查与MAC限制检查的双重过滤装置之后,才能真正访问某个客体。一方面,用户可以利用DAC来防范其它用户对那些所有权归属于自己的客体的***;另一方面,由于用户不能直接改变MAC属性,所以MAC提供了一个不可逾越的、更强的安全保护层以防止其它用户偶然或故意地滥用DAC。

MAC的强制访问策略为每个用户、进程及文件赋于一个安全访问级别,即:

最高秘密级(Top Secret,一般标记为T);

秘密级(Secret,一般标记为S);

机密级(Confidential,一般标记为C);

无级别级(Unclassified,一般标记为U);

其级别为从高到低依次为:T>S>C>U,系统根据主体和客体的敏感标记来决定访问模式。通常情况下,访问模式包括:

下读(read down):用户级别大于文件级别的读操作;

上写(Write up):用户级别小于文件级别的写操作;

下写(Write down):用户级别大于文件级别的写操作;

上读(read up):用户级别小于文件级别的读操作;

依据Bell-Lapadula安全模型所制定的原则是:利用不上读/不下写来保证数据的保密性。即不允许低访问级别的用户读高访问级别的信息,也不允许高访问级别的信息写入低访问级别区域,禁止信息从高访问级别流向低访问级别。MAC通过这种梯度安全标签实现信息的单向流通。

依据Biba安全模型所制定的原则是:利用不下读/不上写来保证数据的完整性。在实际应用中,完整性保护主要是为了避免应用程序修改某些重要的系统程序或系统数据库。

可能大家觉得我这里说的是天花乱坠,真的有这么神奇么?答案是肯定的。在MAC理论出现后不久,很多人和团体本着这个目的开始研究用于实现强制访问控制的安全模块。美国国家安全局(NSA,The National Security Agency)和(SCC,Secure Computing Corporation)在Linux社区的帮助下开发了这样一个强制访问控制的安全模块,在2000年时,以GNU GPL发布,Linux内核2.6版本后集成在内核中。这个安全模块通常被人们称为SELinux,即(Secure Enhanced Linux,安全增强的Linux)。

SELinux有三种工作模式:

Enforcing——强制模式

表示SELinux正在运行,已经开始执行策略中的规则,并且开始正确的限制domain/type了

Permissive——警告模式(运用排错中)

表示SELinux正在运行,不过仅会有警告信息并不会实际限制domain/type的存取。这种模式作为SELinux的debug之用

Disabled——禁用模式

表示SELinux已经关闭,SELinux并没有实际运行。

注意:从强制模式切换到禁用模式,或者禁用模式切换到强制模式,都必须等到计算机下次启动的时候才会生效。但是强制模式和警告模式在切换时,立刻生效。

SELinux有四种可选的策略结果集:

strict:这种策略结果集主要应用于RHEL5和Centos5,系统中的每个进程都受到SELinux的控制。

targeted: 这种策略结果集主要用来保护常见的网络服务,SELinux仅对有限进程进行控制,也只监控容易被***的进程,RHEL4中只保护13个服务,RHEL5保护88个服务。

minimum:这种策略结果集主要应用于Centos7,这是修改过的targeted,只对选择的网络服务进行限制和保护。

mls: 这种策略结果集主要提供MLS(多级安全)机制的安全性保证。

在/etc/selinux/config文件中定义了该操作系统中SELinux的工作模式以及SELinux所支持使用的策略结果集:

CentOS5.11系统:# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#    enforcing - SELinux security policy is enforced.

#    permissive - SELinux prints warnings instead of enforcing.

#    disabled - SELinux is fully disabled.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

#    targeted - Only targeted network daemons are protected.

#    strict - Full SELinux protection.

SELINUXTYPE=targeted

CentOS6.8系统中:# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

CentOS7.2系统中:# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= can take one of three two values:

#     targeted - Targeted processes are protected,

#     minimum - Modification of targeted policy. Only selected processes are protected.

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

通过对比,我们可以发现,在不同的CentOS的发行版本中,如果我们按照默认的配置安装系统,那么SELinux在系统中就是工作在强制模式(enforcing)下;另外,虽然各个发行版CentOS所支持的SELinux的策略结果集的种类和数量不尽相同,但是默认的策略结果集都是targeted。因为strict策略结果集过于严格而显得不灵活,minimum策略结果集和mls策略结果集稳定性不足,所以均未加以应用。

只要SELinux的工作模式是Enforcing,根据SELinux所选择的策略结果集,给所有文件和进程都打上安全标签,即:安全上下文(security context)。这一行为是在将SELinux的模式由disabled模式更改为enforcing模式后的第一次启动时完成的。

安全上下文由五个元素组成:user:role:type:sensitivity:category。

user:指示登录系统的用户类型,如:root,user_u,system_u,多数本地进程都属于自由(unconfined)进程;

role:定义文件、进程和用户的用途,如:文件:object_r,进程和用户:system_r;

type:指定主体和客体的类型,规则中定义何种进程域访问何种文件类型,targeted策略结果集基于type实现,如:admin_home_t,public_content_t(多服务共用);

sensitivity:限制访问的需要,由组织定义的分层安全级别,如:unclassified,confidential ,secret,top secret, 一个对象有且只有一个sensitivity,分0-15级,s0最低,targeted策略结果集默认使用s0;

category:对于特定组织划分不分层的分类,如:FBI Secret,NSA secret,一个对象可以有多个categroy,c0-c1023共1024个分类,targeted 策略结果集不使用category。

实际上下文:存放在文件系统中,但在CentOS5系列发行版本中,只是标识了前三个元素,在后续的CentOS6和CentOS7系列发行版本中也只是标识了前四个元素。而标识归标识,真正起作用的也只有第三个字段,该字段对于文件来说称为“类型”,对于进程来说称为“域”。可以使用ls -Z命令来查看文件的安全上下文;可以使用ps -Z命令来查看进程的安全上下文:

在CentOS5.11中的查看/root目录的结果:[root@CentOS511A ~]# ls -Z

-rw-------  root root system_u:object_r:user_home_t    anaconda-ks.cfg

-rw-r--r--  root root root:object_r:user_home_t        install.log

-rw-r--r--  root root root:object_r:user_home_t        install.log.syslog

在CentOS6.8中的查看/root目录的结果:[root@Centos68A ~]# ls -Z

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog

在CentOS7.2中的查看/root目录的结果:[root@Centos72A ~]# ls -Z

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

我们可以发现,即便是CentOS5、6、7三个系列的发行版本中SELinux全都默认使用了targeted策略结果集,但是他们所应用的策略结果集其实是不同的。[root@CentOS511A ~]# ls /etc/selinux/targeted/policy/

policy.21[root@Centos68A ~]# ls /etc/selinux/targeted/policy/

policy.24[root@Centos72A ~]# ls /etc/selinux/targeted/policy/

policy.29

期望(默认)上下文:存放在二进制的SELinux策略结果集(映射目录和期望安全上下文)中。

下面是在CentOS5.11、6.8、7.2上查看的默认上下文设置,只列举了根的一级子目录的相关内容,因内容太多,其余的均已省略。[root@CentOS511A ~]# semanage fcontext -l

SELinux fcontext              type            Context

/.*                     all files    system_u:object_r:default_t:s0

/xen(/.*)?                   all files    system_u:object_r:xen_p_w_picpath_t:s0

/nsr(/.*)?                   all files    system_u:object_r:var_t:s0

/mnt(/[^/]*)                  symbolic link  system_u:object_r:mnt_t:s0

/mnt(/[^/]*)?                 directory     system_u:object_r:mnt_t:s0

/lib(64)?/dbus-1/dbus-daemon-launch-helper   regular file    system_u:object_r:bin_t:s0

/lib/.*                    all files    system_u:object_r:lib_t:s0

/bin/.*                    all files     system_u:object_r:bin_t:s0

/usr/.*                    all files    system_u:object_r:usr_t:s0

/var/.*                    all files    system_u:object_r:var_t:s0

/dev/.*                   all files    system_u:object_r:device_t:s0

/etc/.*                    all files     system_u:object_r:etc_t:s0

/opt/.*                    all files    system_u:object_r:usr_t:s0

/srv/.*                    all files    system_u:object_r:var_t:s0

/tmp/.*                    all files    <>

/sys/.*                   all files    <>

(……后续内容省略)[root@Centos68A ~]# semanage fcontext -l

SELinux fcontext               type       Context

/.*                      all files    system_u:object_r:default_t:s0

/[^/]+                     regular file    system_u:object_r:etc_runtime_t:s0

/a?quota\.(user|group)             regular file    system_u:object_r:quota_db_t:s0

/nsr(/.*)?                   all files    system_u:object_r:var_t:s0

/sys(/.*)?                   all files    system_u:object_r:sysfs_t:s0

/xen(/.*)?                   all files    system_u:object_r:xen_p_w_picpath_t:s0

/mnt(/[^/]*)                  symbolic link  system_u:object_r:mnt_t:s0

/mnt(/[^/]*)?                 directory      system_u:object_r:mnt_t:s0

/bin/.*                    all files    system_u:object_r:bin_t:s0

/dev/.*                    all files    system_u:object_r:device_t:s0

/lib/.*                    all files    system_u:object_r:lib_t:s0

/srv/.*                    all files    system_u:object_r:var_t:s0

/var/.*                    all files    system_u:object_r:var_t:s0

/tmp/.*                    all files    <>

/usr/.*                    all files    system_u:object_r:usr_t:s0

/opt/.*                    all files    system_u:object_r:usr_t:s0

/etc/.*                    all files    system_u:object_r:etc_t:s0

/root(/.*)?                  all files    system_u:object_r:admin_home_t:s0

(……后续内容省略)[root@Centos72A ~]# semanage fcontext -l

SELinux fcontext               type       Context

/.*                      all files    system_u:object_r:default_t:s0

/[^/]+                     regular file    system_u:object_r:etc_runtime_t:s0

/a?quota\.(user|group)             regular file    system_u:object_r:quota_db_t:s0

/nsr(/.*)?                   all files    system_u:object_r:var_t:s0

/sys(/.*)?                   all files    system_u:object_r:sysfs_t:s0

/xen(/.*)?                   all files    system_u:object_r:xen_p_w_picpath_t:s0

/mnt(/[^/]*)?                 symbolic link  system_u:object_r:mnt_t:s0

/mnt(/[^/]*)?                 directory      system_u:object_r:mnt_t:s0

/bin/.*                    all files    system_u:object_r:bin_t:s0

/dev/.*                    all files    system_u:object_r:device_t:s0

/opt/.*                    all files    system_u:object_r:usr_t:s0

/var/.*                    all files    system_u:object_r:var_t:s0

/srv/.*                    all files    system_u:object_r:var_t:s0

/usr/.*                    all files    system_u:object_r:usr_t:s0

/tmp/.*                    all files    <>

/run/.*                    all files    system_u:object_r:var_run_t:s0

/etc/.*                    all files    system_u:object_r:etc_t:s0

/lib/.*                    all files    system_u:object_r:lib_t:s0

/root(/.*)?                  all files    system_u:object_r:admin_home_t:s0

(……后续内容省略)

经过上述在三个不同发行版本的CentOS系统中SELinux默认上下文的对比,我们发现:在CentOS5中,上下文的定义比较少而且不够精细,而CentOS6和CentOS7相比较来说差别不大,而且类型更多,上下文的定义更明确了。

SELinux的策略结果集及策略结果集应用规则:

主体(subject):进程称为主体

客体(object):所有可以读取的对象,包括文件、目录和进程,端口等。

安全策略:定义主体读取对象的规则数据库,规则中记录了哪个类型的主体使用哪个方法读取哪一个客体是允许还是拒绝的,并且定义了哪种行为是允许的或是拒绝的。

在Linux(如CentOS系列发行版Linux)系统中SELinux赋予所有的文件一个type的文件类型标签,赋予所有的进程一个domain的标签。domain标签能够执行的操作在安全策略中定义。当一个主体试图访问一个客体时,内核中的策略执行服务器将检查AVC (Access Vector Cache,访问矢量缓存)。在AVC中,主体和客体的权限被缓存(cached),查找“应用+文件”的安全环境。然后根据查询结果进行允许访问或拒绝访问的判断。

与SELinux相关命令:

获取selinux当前状态:[root@Centos68A ~]# getenforce

Enforcing

查看selinux状态:[root@Centos68A ~]# sestatus

SELinux status:                 enabled

SELinuxfs mount:                /selinux

Current mode:                   enforcing

Mode from config file:          enforcing

Policy version:                 24

Policy from config file:        targeted

设置SELinux的模式(强制模式和警告模式)[root@Centos68A ~]# setenforce {0|1}

注意:0:设置为permissive

1:设置为enforcing

给文件重新打安全标签:[root@Centos68A ~]# chcon [OPTION]... [-R] [-u USER] [-r ROLE] [-t TYPE] FILE...

[root@Centos68A ~]# chcon [OPTION]... [-R] --reference=RFILE FILE...

[root@Centos68A ~]# mkdir /test

[root@Centos68A ~]# touch /test/test.txt

[root@Centos68A ~]# ls -Z /test

-rw-r--r--. root root unconfined_u:object_r:default_t:s0 test.txt

[root@Centos68A ~]# ls -Z anaconda-ks.cfg

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

[root@Centos68A ~]# chcon -t admin_home_t /test/test.txt

[root@Centos68A ~]# ls -Z /test

-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test.txt

恢复目录或文件默认的安全上下文:[root@Centos68A ~]# restorecon [-R] /path/to/somewhere

查看默认的安全上下文:[root@Centos68A ~]# semanage fcontext -l

添加默认安全上下文到策略结果集:[root@Centos68A ~]# semanage fcontext -a -t httpd_sys_content_t '/testdir(/.*)?'

[root@Centos68A ~]# restorecon -Rv /testdir

[root@Centos68A ~]# restorecon -R /test

[root@Centos68A ~]# ls -Z /test

-rw-r--r--. root root unconfined_u:object_r:default_t:s0 test.txt

从策略结果集中删除默认安全上下文:[root@Centos68A ~]# semanage fcontext -d -t httpd_sys_content_t '/testdir(/.*)?'

查看端口标签:[root@Centos68A ~]# semanage port -l

添加端口:[root@Centos68A ~]# semanage port -a -t http_port_t -p tcp 8090

删除端口:[root@Centos68A ~]# semanage port -d -t http_port_t -p tcp 8090

修改端口:[root@Centos68A ~]# semanage port -m -t http_port_t -p tcp 8090

查看布尔型规则命令:[root@Centos68A ~]# getsebool [-a] [boolean]

[root@Centos68A ~]# semanage boolean -l

查看修改过的布尔值:[root@Centos68A ~]# semanage boolean -l -C

设置布尔型规则的布尔值的命令:[root@Centos68A ~]# setsebool [-P] boolean value(On或Off)

[root@Centos68A ~]# setsebool [-P] boolean=value(0或1)

为了将SELinux违规操作的错误的信息写入/var/log/message,要安装下面的包:[root@Centos68A ~]# yum install setroublesshoot*

安装完成以后,需要重新启动才能开启setroublessshoot的功能。人为的制造几次SELinux违规操作,之后可以使用下面的命令来查看结果:[root@Centos68A ~]# grep "setroubleshoot"/var/log/messages

根据日志中的内容执行下列命令即可:[root@Centos68A ~]# sealert -l “UUID”

(待续……)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

angular项目打包_vue项目部署的最佳实践

作者&#xff1a;沉末_https://juejin.im/post/5eb2243e51882555d8457833前 言 使用vue、react、angular等技术开发过程中&#xff0c;我们都会遇到以下问题&#xff1a;首屏加载慢&#xff1b;每一次更新都需要清除浏览器缓存才能看到效果(经常被测试吐槽)。这两个问题可以从很…

run as date怎么用_熟词僻义 | date是一种什么水果?

今天小站来和各位聊聊date这个熟词。说起date&#xff0c;这可是工作生活中一个极其常用的单词。无论是为下次工作会议定个日期&#xff0c;还是为即将举行的婚礼定个日子&#xff0c;都可以用“fix/set a date for sth”来表示。在沃尔玛等超市购物&#xff0c;经常可以看到食…

linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题

#include#includepthread_t thread;void *fun(void *arg){printf("hell0n");pthread_exit((void * 1));}int main(void){pthread_create(&thread,NULL,fun,NULL);sleep(1);return 127;}在UNIX环境高级编程中说 进程的最后一个线程在启动例程中 执行返回语句&…

Macbook Pro 201 装Win10 声卡_苹果电脑真那么耐用吗?我拿五年前的Mac试了试-苹果,MacBook ——快科技(驱动之家旗下媒体)-...

平时对电脑关注比较多的小伙伴们应该知道&#xff0c;一直以来&#xff0c;同样硬件配置下的苹果电脑通常会比其它品牌的笔记本电脑要贵上不少。别问( 为什么 )&#xff0c;问就是它做工优秀、经久耐用。话虽然是这么说没错&#xff0c;但托尼仔细想想网上这个说法好像又有点问…

linux一个vlan配置多个端口映射,Linux 设置 多ip,多vlan

引:在Linux下有时候需要给一个网卡绑定多个IP&#xff0c;本文介绍在Redhat系列(redhat,Fedora Core,Centos)中的实现方法和一种在Gentoo等其他Linux中普遍适用的方法。在Linux下有时候需要给一个网卡绑定多个IP&#xff0c;本文介绍在Redhat系列(redhat,Fedora Core,Centos)中…

teamviewer一直验证账户_苹果手机下载软件一直需要验证

用过苹果手机的朋友可能都会遇到一种情况&#xff0c;那就是在App Store下载应用的时候&#xff0c;偶尔会弹出需要验证手机的窗口&#xff0c;但是我们按照系统要求给绑定的手机号发送了短信以后却没有任何反应了&#xff0c;遇到这种情况应该如何解决呢&#xff1f;接下来我就…

200 switching to ascii mode_【图片】15005377957 三轮车载式液压打井机XYC-200A 型深水井钻机游走乡【地勘吧】...

巨匠集团长期坚持以客户为基本&#xff0c;不断采纳客户所提出的意见和建议&#xff0c;不断更新自己的产品&#xff0c;让您用到质量过硬&#xff0c;操作简单的产品。巨匠集团&#xff0c;坚持做您身边的钻机帮手。一、XYC-200A三轮车载水井钻机适应范围地质普查勘探&#xf…

linux ps 显示不了中文,enscript转txt为ps文件时中文变成乱码

英文正常&#xff0c;看了下enscipit的help&#xff0c;没看见关于gbk编码的选项-X name, --encodingnameUse the input encoding name. Currently enscript supports the following encodings:88591, latin1ISO-8859-1 (ISO Latin1) (enscripts default encoding).88592, lat…

c++用一级运算比较大小_16.初中数学:怎么比较a、b、c、d的大小?幂的运算,基础常见考题...

欢迎您来到方老师数学课堂&#xff0c;请点击上方蓝色字体&#xff0c;关注方老师数学课堂。所有的视频内容&#xff0c;全部免费&#xff0c;请大家放心关注&#xff0c;放心订阅。初中数学&#xff1a;怎么比较a、b、c、d的大小&#xff1f;幂的运算&#xff0c;基础常见考题…

suse linux 11 HBA信息,HP BL660 GEN8 SUSE 11 查询HBA信息 驱动版本 固件版本 设备名称

测试环境为HP BL660 GEN8SUSE 11 SP4rootlocalhost:/root#lspci |grep -i fibrerootlocalhost:/root#lspci -v -s 06:00.0rootlocalhost:/root#modinfo lpfcrootlocalhost:/root#cat /sys/class/fc_host/host0/symbolic_name //查询HBA卡的型号、固件、驱动rootloc…

php 谷歌翻译api_武汉武昌区地质勘测翻译公司-译嘉合翻译

Angie就结合自己的经验来给大家谈谈如何构建自己的翻译领域吧&#xff0c;相信不管是刚入门急于寻找翻译赛道的新手&#xff0c;还是希望在原有基础上拓宽翻译领域、获得更多合作机会的译员都能带来帮助。地质勘测翻译公司" />鉴于你非英语或翻译专业&#xff0c;要直接…

建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器

主机升级到Fedora 14&#xff0c;下载了crosstool-ng-1.10.0&#xff0c;编译目标为 arm-cortex_a8编译步骤&#xff1a;1、直接拷贝 crosstool-ng-1.10.0/samples/arm-cortex_a8-linux-gnueabi/crosstool.config 到目标目录中的 .config2、执行 ct-ng menuconfig 查看和校验编…

python开发上位机软件-UR机器人通信--上位机通信(python)

一、通信socket socket()函数 Python 中&#xff0c;我们用 socket&#xff08;&#xff09;函数来创建套接字&#xff0c;语法格式如下&#xff1a; socket.socket([family[, type[, proto]]]) 参数 family: 套接字家族可以使AF_UNIX或者AF_INET type: 套接字类型可以根据是面…

linux批量部署war工具,Linux 批量一键部署工具 Expect

Linux 批量一键部署工具 Expect既然没有遇到过&#xff0c;做好准备总是好的。这是自己送给自己的话&#xff0c;现在运维做自动话越来越多&#xff0c;自己就学以下&#xff0c;记录笔记。目前主流的有puppet、Expect、pssh等等&#xff0c;今天就用Expect做自动部署和日常管理…

arm b bl 地址无关码_32位和64位下的arm_pwn初探

32位和64位下的arm_pwn初探前言&#xff1a;pwn的学习之路一直在进行&#xff0c;今天看了arm_pwn&#xff0c;搞环境就搞了半天&#xff0c;琢磨工具使用到做题&#xff0c;这里总结下&#xff0c;希望能帮助到大家&#xff0c;少走一点弯路&#xff0c;后期有机会继续更新。一…

如何用unit test测试controller_如何用电缆故障测试仪冲闪测试确定故障点?

原标题&#xff1a;如何用电缆故障测试仪冲闪测试确定故障点&#xff1f;当我们中试控股在使用电缆故障测试仪检测电缆故障时&#xff0c;遇到故障点二次击穿放电时&#xff0c;其波形要如何分析&#xff1f;首先我们要知道仪器在遇到故障点二次击穿时的表现是怎样的。显示故障…

linux下qt环境的运行,在Linux下使用QT环境来安装和运行WebKit

Installing and Running WebKit in Linux Using QtI’mcoming to appreciate more and more all of the hard work softwaredevelopers perform. I wouldn’t consider myself an open source elitist,but there’s something special about the associated ideologies. When a…

button 样式_缩减 SCSS 50%样式代码的 14 条实战经验

原标题&#xff1a;缩减 SCSS 50%样式代码的 14 条实战经验作者&#xff1a;feishi123前言Sass是CSS3语言的扩展&#xff0c;它能帮你更省事地写出更好的样式表&#xff0c;使你摆脱重复劳动&#xff0c;使工作更有创造性。因为你能更快地拥抱变化&#xff0c;你也将敢于在设计…

神舟电脑装linux双系统,个人windows10和Ubuntu18.04游戏笔记本uefi双磁盘双系统安装过程...

此文章为记录自己的Ubuntu的安装和使用过程本人电脑是128G固态500G机械。固态中装的是windows10&#xff0c;这次决定在机械中安装Ubuntu。虽然网上教程很多&#xff0c;但是我仍然是在参考了多个教程后才动手安装&#xff0c;于是记录自己的安装过程。该机器是神舟Z6-sl7d1,系…

请解释自动装配模式的区别?_如何从齿条优化方面有效节约机床装配时间

齿条&#xff1a;螺纹连接的设计和计算是否正确&#xff1f;如果我们真的想要节约装配成本和时间的话&#xff0c;那么我们首先就需要去选择设计正确的齿条螺钉。那么这时候就紧接着产生了第二个问题&#xff1a;我们应该如何评估并优化这种设计。当我们去观察比较齿轮和齿条这…