首页 > 系统相关 >OPENLDAP部署完整版(Linux)附一键式脚本

OPENLDAP部署完整版(Linux)附一键式脚本

时间:2024-09-25 09:51:29浏览次数:1  
标签:dn httpd cn ldap dc OPENLDAP conf Linux 完整版

(一)环境信息
1,系统环境
2,域信息(本章节使用)
(二)应用部署
1,ladp部署
1、 yum方式安装OpenLDAP服务
2、拷贝数据库配置配置文件,并启动服务
3、slappasswd生成OpenLDAP管理员密码
4、导入基本的模式
5、在OpenLDAP DB上配置域信息
2,安装phpLDAPadmin实现通过Web管理LDAP服务
1,部署httpd
2,部署php应用
3,部署phpldapadmin(LDAP的web管理平台)
4,测试访问http://ip:port/ldapadmin
5,使用dn账户登录(dn=admin,dc=test,dc=cn)
6,对象信息说明
7,创建组和用户模板
8,导出域中全部信息
(三)附上脚本,仅适合初始搭建使用!!!!
1,脚本内容
2,搭建ldap自助修改密码系统Self Service Password
3,注意事项
(四)docker-compose启动Ldap+web管理+自助密码修改
END:参考文章
(一)环境信息
1,系统环境
项目 Value
OS centos
CPU,MEM 1核1G
DISK 40G
2,域信息(本章节使用)
注意:以下内容均自定义。

项目 Value
DN cn=admin,dc=test,dc=cn
CN admin
DC test
DC cn
(二)应用部署
1,ladp部署
1、 yum方式安装OpenLDAP服务
yum -y install openldap-servers openldap-clients
1
2、拷贝数据库配置配置文件,并启动服务
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl enable slapd

3、slappasswd生成OpenLDAP管理员密码
注意:OpenLDAP管理员密码,记录下来(后边有个管理员密码,两者的区别个人并没有没有去了解)

slappasswd


vim chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}+YIJ4gVMNx+8OlYYYbjFtCvTZTfzisjO

ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif


4、导入基本的模式
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
5、在OpenLDAP DB上配置域信息
注意:版本不同会遇到数据文件名的数字不是2的

使用slappasswd 生成管理员的密码(上文提到的管理员密码,大概是域的账户密码,个人理解)

slappasswd


vim chdomain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=admin,dc=test,dc=cn" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=test,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=test,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}IMDL0ohcloXXLulIlGDhub62cvtwwzWw

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess

ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
1

注意:创建初始目录结构(个人理解),这个需要命令行创建

vim basedomain.ldif
1
dn: dc=test,dc=cn
objectClass: top
objectClass: dcObject
objectclass: organization
o: Test Cloud
dc: test

dn: cn=admin,dc=test,dc=cn
objectClass: organizationalRole
cn: admin
description: Directory Manager

dn: ou=People,dc=test,dc=cn
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=test,dc=cn
objectClass: organizationalUnit
ou: Group


ldapadd -x -D cn=admin,dc=test,dc=cn -W -f basedomain.ldif
1
注意:输入Manager的密码(上文提到的第二个)

 

2,安装phpLDAPadmin实现通过Web管理LDAP服务
1,部署httpd
yum install -y httpd
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_bak
vim /etc/httpd/conf/httpd.conf
#95行下面加一行(95gg),指定地址(域名/ip)及端口
95 #ServerName www.example.com:80
96 ServerName www.walkingcloud.cn
#在151行处改为
AllowOverride All
#164行处改为
DirectoryIndex index.html index.php index.cgi
#在最下面添加如下两行
ServerTokens Prod
KeepAlive On


systemctl start httpd
systemctl enable httpd.service

2,部署php应用
yum install php php-mbstring php-pear
systemctl restart httpd

3,部署phpldapadmin(LDAP的web管理平台)
yum --enablerepo=epel -y install phpldapadmin
vim /etc/phpldapadmin/config.php
注意:397行取消注释,398行注释掉

397 $servers->setValue('login','attr','dn');
398 //$servers->setValue('login','attr','uid');

vim /etc/httpd/conf.d/phpldapadmin.conf
#
# Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
<IfModule mod_authz_core.c>
# Apache 2.4
#Require local
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
#Deny from all
Allow from all
#Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>


注意:遇到以下报错
You don’t have permission to access /ldapadmin on this server
可以通过修改httpd配置文件 httpd.conf。

vim /etc/httpd/conf/httpd.conf
1
修改前

<Directory />
AllowOverride none
Require all denied
</Directory>

修改后:

<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>

4,测试访问http://ip:port/ldapadmin


5,使用dn账户登录(dn=admin,dc=test,dc=cn)


6,对象信息说明
更多请参考ldap objectclass - Fuzengjie - 博客园

objectClass: 描述了实体所表现的对象类型。objectClass存在于任意实体中,并且至少包含两个属性值,其中的一个值必须是 top
aliasedObjectName: 如果包含这个属性的实体是 alias 的话,那么目录服务就使用 aliasedObjectName
cn: X.500 的 commonName 属性。包含一个对象的名字,如果对象是 person 的时候, cn 经常代表用户的全名
sn: 是 X.500 的 surname 属性,保存了 person 的 family name 。
serialNumber: 保存了 一个设备的序列号
c: 保存了 一个两位数字的 ISO 国家代码 (countryName)
l: 保存了 地域名称,例如城市,乡镇或者其他的地理区域 (localityName)
st: 保存了 州或者省的全名 (stateOrProvinceName)
street: 保存了 实体对应的对象的物理地址,例如包裹的邮寄地址。 (streetAddress)
o: 保存了 组织的名字。 (organizationName)
ou: 保存了 组织单元的名称 (organizationalUnitName)
description: 保存了 对象的一个易于理解的 描述。

7,创建组和用户模板
ldapadd -x -D 'cn=admin,dc=test,dc=cn' -f READAFA.ldif -H ldap://localhost -w <password>
1
# yunwei, GROUP, test.cn
dn: cn=yunwei,ou=GROUP,dc=test,dc=cn
cn: yunwei
gidNumber: 500
objectClass: posixGroup
objectClass: top

# yangyang, yunwei, GROUP, test.cn
dn: cn=yangyang,cn=yunwei,ou=GROUP,dc=test,dc=cn
givenName: yang
sn: yang
uid: yangyang
homeDirectory: /home/users/yangyang
loginShell: /usr/sbin/nologin
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
uidNumber: 1001
gidNumber: 500
cn: yangyang
userPassword:: MTIzNDU2

8,导出域中全部信息
ldapsearch -D 用于验证的binddb -w '对应密码' -H ldap://localhost (-p ldap服务器端口 -h ldap服务器地址) -b 'dc=test,dc=cn' "ou=*或者ou=Group(可添加过滤条件精确匹配)"
1
(三)附上脚本,仅适合初始搭建使用!!!!
1,脚本内容
注意:初始目录可能创建失败,可在命令行手动执行

#!/bin/bash
HALPPSFE="ldappass.txt"
HALPANPSFE="ldapadminpass.txt"
yum -y install openldap-servers openldap-clients expect >/dev/null
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl enable slapd
read -p $'\n请输入LDAP密码并记录:\n' -e LDAPPASS
expect <<-EOF >$HALPPSFE
set timeout 10
spawn -noecho slappasswd
expect {
"*assword:*" {send "$LDAPPASS\n";exp_continue}
"*assword:*" {send "$LDAPPASS\n";exp_continue}
}
EOF
HALDAPPASS=`tail -n 1 ${HALPPSFE}`
echo $HALDAPPASS
cat >chrootpw.ldif<<-EOF
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: $HALDAPPASS
EOF
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
read -p $'\n请输入LDAPADMIN密码并记录:\n' -e LDAPADMINPASS
expect <<-EOF >$HALPANPSFE
set timeout 10
spawn -noecho slappasswd
expect {
"New password:" {send "$LDAPADMINPASS\n";exp_continue}
"Re-enter new password:" {send "$LDAPADMINPASS\n";exp_continue}
}
EOF
HALDAPADMINPASS=`tail -n 1 ${HALPANPSFE}`
echo $HALDAPADMINPASS
read -p $'\n请输入你的CN,例如:cn=【admin】,dc=test,dc=cn,括号内的内容为你需要输入的自定义CN:\n' -e CN
while [ -z $CN ]
do
read -p $'你输入了一个空的CN,请重新输入\n' -e CN
done
read -p $'\n请输入你的DC,例如:cn=admin,dc=【test】,dc=cn括号内的内容为你需要输入的自定义DC:\n' -e DC
while [ -z $DC ]
do
read -p $'你输入了一个空的DC,请重新输入\n' -e DC
done
read -p $'\n请输入你的DC,例如:cn=admin,dc=test,dc=【cn】括号内的内容为你需要输入的自定义DC:\n' -e Dc
while [ -z $Dc ]
do
read -p $'你输入了一个空的DC,请重新输入\n' -e Dc
done
echo -e "\n你的LDAP密码为:$LDAPPASS
你的域为cn=$CN,dc=$DC,dc=$Dc,LDAPADMIN密码为:$LDAPADMINPASS\n
请你记录,10s后开始后续写入执行。。。"
sleep 10s
cat >chdomain.ldif<<-EOF
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=$CN,dc=$DC,dc=$Dc" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=$DC,dc=$Dc

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=$CN,dc=$DC,dc=$Dc

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: $HALDAPADMINPASS

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=$CN,dc=$DC,dc=$Dc" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=$CN,dc=$DC,dc=$Dc" write by * read
EOF
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
read -p $'请输入你要创建的组名,例如【Group】(ldapadmin无法创建)这里是写死的,未做判断,不要跳过:\n' -e OU
read -p $'请输入你要创建的组名,例如【People】(ldapadmin无法创建)这里是写死的,未做判断,不要跳过:\n' -e Ou
cat >basedomain.ldif<<-EOF
dn: dc=$DC,dc=$Dc
objectClass: top
objectClass: dcObject
objectclass: organization
o: Test Cloud
dc: $DC

dn: cn=$CN,dc=$DC,dc=$Dc
objectClass: organizationalRole
cn: $CN
description: Directory Manager

dn: ou=$OU,dc=$DC,dc=$Dc
objectClass: organizationalUnit
ou: $OU

dn: ou=$Ou,dc=$DC,dc=$Dc
objectClass: organizationalUnit
ou: $Ou
EOF
expect <<-EOF
set timeout 10
spawn -noecho ldapadd -x -D cn=$CN,dc=$DC,dc=$Dc -W -f basedomain.ldif
expect {
"*assword:*" {send "$LDAPADMINPASS\n";exp_continue}
}
EOF
echo -e "\nldapserver部署完成,5s后开始部署ldapphpadmin。。。"
sleep 5s
yum install -y httpd mod_ssl>/dev/null
WEFILE="/etc/httpd/conf.d/welcome.conf"
if [ -e "$WEFILE" ];then
mv $WEFILE ${WEFILE}_bak
else
:
fi
TIME=`date +%Y%m%d%H%M`
HDFILE="/etc/httpd/conf/httpd.conf"
cp $HDFILE /tmp/httpd.conf-$TIME
read -p $'请输入你期望的httpd监听的端口号:\n' -e LISTEN
sed -i "s/^Listen.*/Listen $LISTEN/g" $HDFILE
grep "AllowOverride All" $HDFILE
if [ $? -ne 0 ];then
sed -i "151s/AllowOverride None/AllowOverride all/g" $HDFILE
if [ $? -ne 0 ];then
echo "151s/AllowOverride None/AllowOverride all/g $HDFILE失败"
else
:
fi
else
:
fi
JUD=`sed -n "/^ServerName.*/p" $HDFILE`
echo "$JUD"
if [ -z "$JUD" ];then
read -p $'请输入你的ip/域名:\n' -e DOMAIN
sed -i "/^#ServerName.*www.example.com:80/a\ServerName $DOMAIN" $HDFILE
else
read -p $'已存在以上servrname,是否继续新增,需要请选择【yes】,忽略请回车' -e CHOO
while [ "$CHOO" == "yes" ]
do
TIME=`date +%Y%m%d%H%M`
cp $HDFILE /tmp/httpd.conf-$TIME
read -p $'请输入你的ip/域名:\n' -e DOMAIN
sed -i "/^#ServerName.*www.example.com:80/a\ServerName $DOMAIN" $HDFILE
JUD=`sed -n "/^ServerName.*/p" $HDFILE`
read -p $'已存在$JUD,是否新增,需要请选择【yes】,忽略请回车' -e CHOO
done
echo "非新增操作,请手动查找修改httpd.conf文件"
fi
sed -i "s/.*DirectoryIndex.*index.*/ DirectoryIndex index.html index.php index.cgi/g" $HDFILE
grep "ServerTokens Prod" $HDFILE >/dev/null
if [ $? -ne 0 ];then
echo -e "\nServerTokens Prod\nKeepAlive On" >> $HDFILE
systemctl start httpd
systemctl enable httpd.service
else
systemctl start httpd
systemctl enable httpd.service
fi
yum -y install php php-mbstring php-pear >/dev/null
systemctl restart httpd
yum --enablerepo=epel -y install phpldapadmin >/dev/null
PHPLPANFE="/etc/phpldapadmin/config.php"
TIME=`date +%Y%m%d%H%M`
cp $PHPLPANFE /tmp/config.php-$TIME
sed -i "397s/.*/\$servers->setValue('login','attr','dn');/g" $PHPLPANFE
sed -i "398s/.*/\/\/ $servers->setValue('login','attr','uid');/g" $PHPLPANFE
HDPHPLPANFE="/etc/httpd/conf.d/phpldapadmin.conf"
cp $HDPHPLPANFE /tmp/phpldapadmin.conf-$TIME
cat >$HDPHPLPANFE<<-EOF
#
# Web-based tool for managing LDAP servers
#
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Allow from all
Allow from ::1
</IfModule>
</Directory>
EOF
systemctl restart httpd

1
#脚本中有下载httpd的mod_ssl模块,在/etc/httpd/conf.d/ssl.conf中配置证书文件地址

2,搭建ldap自助修改密码系统Self Service Password
安装应用
Self Service Password:yum install https://ltb-project.org/rpm/6Server/noarch/self-service-password-1.1-1.el6.noarch.rpm
配置apache: /etc/httpd/conf.d/self-service-password.conf

NameVirtualHost *:80
<VirtualHost *:80>
ServerName changepasswd.xxxxx.net
DocumentRoot /usr/share/self-service-password
DirectoryIndex index.php
AddDefaultCharset UTF-8
<Directory "/usr/share/self-service-password">
AllowOverride None
Require all granted
</Directory>
LogLevel warn
ErrorLog /var/log/httpd/ssp_error_log
CustomLog /var/log/httpd/ssp_access_log combined
</VirtualHost>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
配置Self Service Password,支持密码修改和邮件重置: vim /usr/share/self-service-password/conf/config.inc.php

#关闭 问题验证 和 短信验证(视个人需要):

$use_questions=false;
$use_sms= false;

#配置 LDAP
    $ldap_url = "ldap://ldap.xxxxx.net";
    $ldap_starttls = false;
    $ldap_binddn = "cn=Manager,dc=ldap,dc=xxxxxx,dc=net";
    $ldap_bindpw = "xxxxxxxxx";
    $ldap_base = "dc=ldap,dc=xxxxxx,dc=net";
    $ldap_login_attribute = "cn";
    $ldap_fullname_attribute = "cn";
    $ldap_filter = "(&(objectClass=person)($ldap_login_attribute={login}))";
$who_change_password = "manager"; #指定LDAP 以什么用户身份更改密码
$keyphrase = "admintestcn"; #更改短语。

#配置邮件
    $mail_from = "[email protected]";
    $mail_from_name = "企业账号密码重置";
    $mail_signature = "";
$notify_on_change = true; #密码修改成功后,向用户发送通知邮件
    $mail_sendmailpath = '/usr/sbin/sendmail'; #需安装sendmail服务 yum install -y sendmail
    $mail_protocol = 'smtp';
    $mail_smtp_debug = 0;
    $mail_debug_format = 'html';
    $mail_smtp_host = 'smtp.gmail.com';
    $mail_smtp_auth = true;
    $mail_smtp_user = '[email protected]';
    $mail_smtp_pass = 'xxxxxx';
    $mail_smtp_port = 587;
    $mail_smtp_timeout = 30;
    $mail_smtp_keepalive = false;
    $mail_smtp_secure = 'tls';
    $mail_contenttype = 'text/plain';
    $mail_wordwrap = 0;
    $mail_charset = 'utf-8';
    $mail_priority = 3;
    $mail_newline = PHP_EOL;


配置完成,登录网页访问,通过网页修改账号密码验证

3,注意事项
注意:执行shell脚本时报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录,是因为该文件在windows系统上打开过,关闭后其中的换行符号和Linux的不同,导致这个报错,我们可以通过 sed命令 与正则的配合将文件中的换行符号替换成linux的形式

sed -i 's/\r$//' mocha.sh
1
(四)docker-compose启动Ldap+web管理+自助密码修改
点击跳转到文章地址

END:参考文章
CentOS7下搭建OpenLDAP服务器 - 腾讯云开发者社区-腾讯云

https://cloud.tencent.com/developer/article/1563031
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/haodayizhizhuzhu/article/details/129081815

标签:dn,httpd,cn,ldap,dc,OPENLDAP,conf,Linux,完整版
From: https://www.cnblogs.com/liuzt/p/18430695

相关文章

  • Linux信号学习三步走及知识脉络
    Linux信号学习三步走及知识脉络在Linux系统中,信号(Signal)是一个非常重要的概念,它作为一种异步通知机制,用于通知进程发生了某些事件。信号的本质是软件层次上对中断机制的一种模拟,是进程间通信机制中唯一的异步通信方式。学习Linux信号,可以通过以下三步走,并打通相关的知识脉......
  • 【Linux】多线程:线程池的创建、日志类、RAII互斥锁、单例模式:饿汉方式与懒汉方式
    目录一、线程池概念二、线程的封装及线程池类成员变量的介绍 三、单例模式饿汉方式(EagerInitialization)懒汉方式(LazyInitialization)四、RAII类型的互斥锁 五、日志类的实现六、简单的任务类创建七、线程池的创建 一、线程池概念线程池(ThreadPool)是一种基于......
  • Let‘s Encrypt基于阿里云Linux服务器搭建自动更新免费的SSL证书
    前言:‌SSL免费证书的有效期从2024年4月底开始从12个月缩短至3个月。对于使用免费SSL证书的中小企业或者个人开发者而言,每三个月去手动部署一次证书文件很容易遗忘,从而导致服务器接口或者网站访问异常,今天把基于阿里云一套自动更新的流程详细写出来。本系统环境基于阿里云......
  • Linux6.8最新版本x86路径下分页管理源码详解
    x86路径下分页管理源码详解pgtable_64.h分析:pgtable-2level.h分析pgtable-3level.h分析x86的asm文件夹路径为/usr/src/linux-headers-6.8.0-45-generic/arch/x86/include/asm,是x86体系架构下的文件,本次分析了pgtable_64.h,pgtable-2level.h和pgtable-3level.h......
  • 项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持
    需求  1.使用osg三维引擎进行动力学模型仿真性能测试;  2.打开动力学仿真模型文件,.k后缀的模型文件,测试加载解析过程;  3.解决第三方company的opengl制作的三维引擎,绘制面较多与弹丸路径模拟较卡顿的问题;  4.测试时,使用的模型为公开模型,基础面数量达到160多万个;  5.测......
  • 【Linux】超时重传机制
    超时重传机制超时重传机制是一种常见的网络协议设计策略,用于确保数据包在不可靠网络中的可靠传输。它特别适用于UDP等不提供内建可靠性保障的协议。以下是超时重传机制的基本概念和实现方法。1.基本概念在数据传输过程中,发送方在发送数据包后启动一个定时器。如果在预设......
  • 【Linux】快速上手shell脚本(适合初学者)
    Shell脚本快速上手什么是Shell脚本?Shell脚本是一种通过命令行界面执行的一系列命令的文本文件,主要用于自动化任务。创建Shell脚本使用文本编辑器(如nano或vim)创建一个以.sh结尾的文件:nanomyscript.sh脚本头部在脚本的第一行指定解释器:#!/bin/bash基本命令ec......
  • linux操作系统和文件系统,命令(上)
    Linux是一个类似于windows的操作系统Linux操作系统的一种主要使用方式是通过终端软件;终端软件里只能使用键盘不能使用鼠标,在终端软件里通过输入命令完成各种任务clear命令可以删除终端窗口里的所有文字信息操作系统里用来管理文件的部分叫文件系统所有文件系统都采用分组方式......
  • 【入门岛·第1关】linux 基础知识
    目录闯关任务完成SSH连接与端口映射并运行hello_world.py闯关任务完成SSH连接与端口映射并运行hello_world.py1在远程主机上建立hello_python.py程序并运行,查看程序运行的端口:importsocketimportreimportgradioasgr#获取主机名defget_hostname():hostname......
  • 【Linux】深度解析与实战应用:GCC/G++编译器入门指南
    ......