阿里云ECS服务器操作


阿里云ECS服务器操作


查看基本信息

命令行登录,进行以下操作。

切换到root用户(输入密码):

su - root

查看用户:

cat /etc/passwd

[root@iZuf68667a5gti22hgkrshZ ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
~:x:1000:1000::/home/~:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
www:x:1001:1001::/home/www:/sbin/nologin
[root@iZuf68667a5gti22hgkrshZ ~]# 
[~@iZuf68667a5gti22hgkrshZ ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:29:c1:70 brd ff:ff:ff:ff:ff:ff
    inet 172.19.140.143/20 brd 172.19.143.255 scope global dynamic eth0
       valid_lft 315358970sec preferred_lft 315358970sec
    inet6 fe80::216:3eff:fe29:c070/64 scope link 
       valid_lft forever preferred_lft forever
[~@iZuf68667a5gti22hgkrshZ ~]$ 
[root@iZuf68667a5gti22hgkrshZ ~]# ls /etc/sysconfig/network-scripts/
ifcfg-eth0   ifdown-isdn      ifdown-tunnel  ifup-isdn    ifup-Team
ifcfg-lo     ifdown-post      ifup           ifup-plip    ifup-TeamPort
ifdown       ifdown-ppp       ifup-aliases   ifup-plusb   ifup-tunnel
ifdown-bnep  ifdown-routes    ifup-bnep      ifup-post    ifup-wireless
ifdown-eth   ifdown-sit       ifup-eth       ifup-ppp     init.ipv6-global
ifdown-ippp  ifdown-Team      ifup-ippp      ifup-routes  network-functions
ifdown-ipv6  ifdown-TeamPort  ifup-ipv6      ifup-sit     network-functions-ipv6
[root@iZuf68667a5gti22hgkrshZ ~]# 

查看网卡的设置:

[root@iZuf68667a5gti22hgkrshZ ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
# If you don't want cloud-init genrated automatically,you can disable it in /etc/cloud/cloud.cfg
# For more information, please refer to: https://help.aliyun.com/document_detail/57803.html
#
BOOTPROTO=dhcp
DEVICE=eth0
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
USERCTL=no
[root@iZuf68667a5gti22hgkrshZ ~]#

ONBOOT="yes" 表示在系统启动时激活网卡。

查看是否可以访问外网IP:

[root@iZuf68667a5gti22hgkrshZ ~]# ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=49 time=10.0 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=49 time=10.0 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=49 time=10.0 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=4 ttl=49 time=10.0 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=5 ttl=49 time=10.0 ms
^C
--- www.a.shifen.com ping statistics ---
6 packets transmitted, 5 received, 16% packet loss, time 5002ms
rtt min/avg/max/mdev = 10.029/10.044/10.075/0.111 ms
[root@iZuf68667a5gti22hgkrshZ ~]# 

查看防火墙状态:

[root@iZuf68667a5gti22hgkrshZ ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2024-05-30 12:32:28 CST; 36min ago
     Docs: man:firewalld(1)
 Main PID: 3479 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─3479 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

May 30 12:32:27 iZuf68667a5gti22hgkrshZ systemd[1]: Starting firewalld - dynamic firewall daemon...
May 30 12:32:28 iZuf68667a5gti22hgkrshZ systemd[1]: Started firewalld - dynamic firewall daemon.
May 30 12:32:28 iZuf68667a5gti22hgkrshZ firewalld[3479]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.
May 30 12:32:29 iZuf68667a5gti22hgkrshZ firewalld[3479]: WARNING: ZONE_ALREADY_SET: public
May 30 12:32:32 iZuf68667a5gti22hgkrshZ firewalld[3479]: WARNING: ALREADY_ENABLED: 22:tcp
May 30 12:32:33 iZuf68667a5gti22hgkrshZ firewalld[3479]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.
[root@iZuf68667a5gti22hgkrshZ ~]# 

查看对外开放的端口:

[root@iZuf68667a5gti22hgkrshZ ~]# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 20/tcp 21/tcp 22/tcp 80/tcp 443/tcp 8888/tcp 39000-40000/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

[root@iZuf68667a5gti22hgkrshZ ~]# 

查看针对22端口的ssh服务状态:

[root@iZuf68667a5gti22hgkrshZ ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2024-05-30 12:22:18 CST; 34min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1020 (sshd)
   CGroup: /system.slice/sshd.service
           └─1020 /usr/sbin/sshd -D

[root@iZuf68667a5gti22hgkrshZ ~]# 

使用宝塔

安装宝塔

在阿里云Web管理页面,选择 云服务器ECS,点击 应用管理,安装宝塔。

安装完成后,把 立即使用 弹出框中的访问面板url地址、用户名、密码 记录下来。

开放端口

宝塔使用的是8888端口,除了在firewall中添加8888端口,在安全组中也要添加。

在阿里云Web管理页面,选择 云服务器ECS,点击 网络与安全 下的子菜单,选择实例,在 入方向 手动添加 8888端口。

浏览器访问

在浏览器输入 访问宝塔的面板url地址,打开后访问输入用户名和密码登录。

MySQL安装

在宝塔面板中点击 首页 或者 网站 菜单,会提示安装MySQL等软件,选择后进行安装。也可以在这里对Nginx进行安装。

安装完成后,点击 数据库 菜单,查看root用户的密码。

为了远程管理MySQL方便,设置root用户能够远程连接并管理。 点击宝塔的 终端 菜单,或者在阿里云Web管理页面的 实例-远程连接 页面中进行设置。

mysql -u root -p root用户登录MySQL服务,登录密码是上面宝塔中查看到的root用户的密码。 输入授权命令grant all on *.* to root@'%' identified by 'your_password' with grant option;your_password 换成自己想设的密码:

[root@iZuf68667a5gti22hgkrshZ ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.7.44-log Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
mysql> grant all on *.* to root@'%' identified by 'your_password' with grant option;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql>

在宝塔的 安全 菜单下,添加 3306 端口规则。在阿里云ECS实例管理的 安全组 中添加 3306 端口规则,然后就可以远程连接MySQL了。

Nginx安装

在宝塔面板中点击 软件商店 菜单,搜索Nginx进行安装。同样的,在这里也可以搜索MySQL进行安装。

PHP安装

在宝塔面板中点击 软件商店 菜单,搜索PHP,选择版本进行安装。

自带安装了 Composer,在运行的时候会让选择是不是以root用户身份运行。

Redis安装

在宝塔面板中点击 软件商店 菜单,搜索Redis进行安装。

安装完成后,在设置界面设置密码。

在宝塔 安全 菜单下,添加 6379 端口规则。 在阿里云ECS实例管理的 安全组 中添加 6379 端口规则,然后就可以远程连接Redis了。

docker安装

在这里建议直接使用宝塔对软件进行安装管理。在必要是再安装Docker。

在宝塔面板中点击 Docker 菜单,进行安装。

安装成功后,选择一个 加速URL。

Web项目部署

开源项目

ECS服务器自带了git服务,在目标文件夹下直接拉取项目。

拉取完成后,修改项目目录权限为www用户。

[root@iZuf68667a5gti22hgkrshZ ~]# cd /www/wwwroot/
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 
[root@iZuf68667a5gti22hgkrshZ wwwroot]# ll
total 1
drwxr-xr-x 2 root root 4096 May 30 17:25 default
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 
[root@iZuf68667a5gti22hgkrshZ wwwroot]# git clone https://github.com/iBaiYang/layuimini-laravel.git laylar.lezhing.com
Cloning into 'laylar.lezhing.com'...
remote: Enumerating objects: 786, done.
remote: Counting objects: 100% (786/786), done.
remote: Compressing objects: 100% (572/572), done.
remote: Total 786 (delta 271), reused 688 (delta 173), pack-reused 0
Receiving objects: 100% (786/786), 3.18 MiB | 1.58 MiB/s, done.
Resolving deltas: 100% (271/271), done.
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 
[root@iZuf68667a5gti22hgkrshZ wwwroot]# ll
total 8
drwxr-xr-x  2 root root 4096 May 30 17:25 default
drwxr-xr-x 12 root root 4096 May 30 21:38 laylar.lezhing.com
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 
[root@iZuf68667a5gti22hgkrshZ wwwroot]# sudo chown -R www:www laylar.lezhing.com    
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 
[root@iZuf68667a5gti22hgkrshZ wwwroot]# ll
total 8
drwxr-xr-x  2 root root 4096 May 30 17:25 default
drwxr-xr-x 12 www  www  4096 May 30 21:38 laylar.lezhing.com
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 
[root@iZuf68667a5gti22hgkrshZ wwwroot]# sudo chmod -R 755 laylar.lezhing.com
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 
[root@iZuf68667a5gti22hgkrshZ wwwroot]# ll
total 8
drwxr-xr-x  2 root root 4096 May 30 17:25 default
drwxr-xr-x 12 www  www  4096 May 30 21:38 laylar.lezhing.com
[root@iZuf68667a5gti22hgkrshZ wwwroot]# 

安装项目vendor插件,使用www用户环境进行操作:

[root@iZuf68667a5gti22hgkrshZ wwwroot]# cd laylar.lezhing.com
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# 
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# sudo -u www composer install --no-plugins --optimize-autoloader --no-dev
Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Your lock file does not contain a compatible set of packages. Please run composer update.

  Problem 1
    - league/flysystem is locked to version 1.1.10 and an update of this package was not requested.
    - league/flysystem 1.1.10 requires ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
  Problem 2
    - league/mime-type-detection is locked to version 1.13.0 and an update of this package was not requested.
    - league/mime-type-detection 1.13.0 requires ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
  Problem 3
    - league/flysystem 1.1.10 requires ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
    - laravel/framework v6.20.44 requires league/flysystem ^1.1 -> satisfiable by league/flysystem[1.1.10].
    - laravel/framework is locked to version v6.20.44 and an update of this package was not requested.

To enable extensions, verify that they are enabled in your .ini files:
    - /www/server/php/74/etc/php-cli.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# 

报错,缺少 fileinfo 拓展。项目中锁定的 league/flysystem 和 league/mime-type-detection 这两个包都依赖于 ext-fileinfo。 此外,由于你的 Laravel 框架版本 v6.20.44 也依赖于 league/flysystem 的一个版本,因此必须安装 fileinfo 扩展才能继续。

在宝塔管理页面的PHP管理的 安装拓展 中安装 fileinfo 拓展,再次执行:

[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# sudo -u www composer install --no-plugins --optimize-autoloader --no-dev
PHP Warning:  putenv() has been disabled for security reasons in phar:///www/server/php/74/bin/composer/vendor/composer/xdebug-handler/src/Process.php on line 93

Warning: putenv() has been disabled for security reasons in phar:///www/server/php/74/bin/composer/vendor/composer/xdebug-handler/src/Process.php on line 93
PHP Warning:  putenv() has been disabled for security reasons in phar:///www/server/php/74/bin/composer/bin/composer on line 59

Warning: putenv() has been disabled for security reasons in phar:///www/server/php/74/bin/composer/bin/composer on line 59

                                                   
  [ErrorException]                                 
  putenv() has been disabled for security reasons  
                                                   

install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-suggest] [--no-dev] [--no-autoloader] [--no-scripts] [--no-progress] [--no-install] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--] [<packages>]...

[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# 

这个错误表明 putenv() 函数在 PHP 环境中被禁用了,这通常是由于 disable_functions 指令在 php.ini 配置文件中被设置为了包含 putenvputenv() 函数用于设置环境变量的值,但在某些共享主机或严格的安全配置中,它可能会被禁用以防止潜在的安全风险。

proc_open() 是一个 PHP 内置函数,用于执行外部程序并与之交互。

在宝塔管理页面的PHP管理的 禁用函数 中删除 putenv、proc_open 设定,再次执行:

[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# sudo -u www composer install --no-plugins --optimize-autoloader --no-dev
Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Package operations: 52 installs, 0 updates, 0 removals
  - Downloading doctrine/inflector (2.0.8)
  - Downloading doctrine/lexer (1.2.3)
  - Downloading dragonmantank/cron-expression (v2.3.1)
  - Downloading symfony/polyfill-ctype (v1.28.0)
  - Downloading phpoption/phpoption (1.9.2)
  - Downloading vlucas/phpdotenv (v3.6.10)
  - Downloading symfony/polyfill-php80 (v1.28.0)
  - Downloading symfony/css-selector (v5.4.26)
  - Downloading tijsverkoyen/css-to-inline-styles (2.2.6)
  - Downloading symfony/polyfill-php72 (v1.28.0)
  - Downloading symfony/polyfill-mbstring (v1.28.0)
  - Downloading symfony/var-dumper (v4.4.47)
  - Downloading symfony/routing (v4.4.44)
  - Downloading symfony/process (v4.4.44)
  - Downloading symfony/polyfill-php73 (v1.28.0)
  - Downloading symfony/polyfill-intl-normalizer (v1.28.0)
  - Downloading symfony/polyfill-intl-idn (v1.28.0)
  - Downloading symfony/deprecation-contracts (v2.5.2)
  - Downloading symfony/mime (v5.4.26)
  - Downloading symfony/http-foundation (v4.4.49)
  - Downloading symfony/http-client-contracts (v2.5.2)
  - Downloading symfony/event-dispatcher-contracts (v1.10.0)
  - Downloading symfony/event-dispatcher (v4.4.44)
  - Downloading psr/log (1.1.4)
  - Downloading symfony/debug (v4.4.44)
  - Downloading symfony/error-handler (v4.4.44)
  - Downloading symfony/http-kernel (v4.4.51)
  - Downloading symfony/finder (v4.4.44)
  - Downloading psr/container (1.1.2)
  - Downloading symfony/service-contracts (v2.5.2)
  - Downloading symfony/console (v4.4.49)
  - Downloading symfony/polyfill-iconv (v1.28.0)
  - Downloading egulias/email-validator (2.1.25)
  - Downloading swiftmailer/swiftmailer (v6.3.0)
  - Downloading paragonie/random_compat (v9.99.100)
  - Downloading ramsey/uuid (3.9.7)
  - Downloading psr/simple-cache (1.0.1)
  - Downloading opis/closure (3.6.3)
  - Downloading symfony/translation-contracts (v2.5.2)
  - Downloading symfony/translation (v4.4.47)
  - Downloading psr/clock (1.0.0)
  - Downloading carbonphp/carbon-doctrine-types (2.1.0)
  - Downloading nesbot/carbon (2.72.1)
  - Downloading monolog/monolog (2.9.2)
  - Downloading league/mime-type-detection (1.13.0)
  - Downloading league/flysystem (1.1.10)
  - Downloading league/commonmark (1.6.7)
  - Downloading laravel/framework (v6.20.44)
  - Downloading fideloper/proxy (4.4.2)
  - Downloading nikic/php-parser (v4.17.1)
  - Downloading psy/psysh (v0.11.22)
  - Downloading laravel/tinker (v2.8.2)
  - Installing doctrine/inflector (2.0.8): 
  - Installing doctrine/lexer (1.2.3): 
  - Installing dragonmantank/cron-expression (v2.3.1): 
  - Installing symfony/polyfill-ctype (v1.28.0): 
  - Installing phpoption/phpoption (1.9.2): 
  - Installing vlucas/phpdotenv (v3.6.10): 
  - Installing symfony/polyfill-php80 (v1.28.0): 
  - Installing symfony/css-selector (v5.4.26): 
  - Installing tijsverkoyen/css-to-inline-styles (2.2.6): 
  - Installing symfony/polyfill-php72 (v1.28.0): 
  - Installing symfony/polyfill-mbstring (v1.28.0): 
  - Installing symfony/var-dumper (v4.4.47): 
  - Installing symfony/routing (v4.4.44): 
  - Installing symfony/process (v4.4.44): 
  - Installing symfony/polyfill-php73 (v1.28.0): 
  - Installing symfony/polyfill-intl-normalizer (v1.28.0): 
  - Installing symfony/polyfill-intl-idn (v1.28.0): 
  - Installing symfony/deprecation-contracts (v2.5.2): 
  - Installing symfony/mime (v5.4.26): 
  - Installing symfony/http-foundation (v4.4.49): 
  - Installing symfony/http-client-contracts (v2.5.2): 
  - Installing symfony/event-dispatcher-contracts (v1.10.0): 
  - Installing symfony/event-dispatcher (v4.4.44): 
  - Installing psr/log (1.1.4): 
  - Installing symfony/debug (v4.4.44): 
  - Installing symfony/error-handler (v4.4.44): 
  - Installing symfony/http-kernel (v4.4.51): 
  - Installing symfony/finder (v4.4.44): 
  - Installing psr/container (1.1.2): 
  - Installing symfony/service-contracts (v2.5.2): 
  - Installing symfony/console (v4.4.49): 
  - Installing symfony/polyfill-iconv (v1.28.0): 
  - Installing egulias/email-validator (2.1.25): 
  - Installing swiftmailer/swiftmailer (v6.3.0): 
  - Installing paragonie/random_compat (v9.99.100): 
  - Installing ramsey/uuid (3.9.7): 
  - Installing psr/simple-cache (1.0.1): 
  - Installing opis/closure (3.6.3): 
  - Installing symfony/translation-contracts (v2.5.2): 
  - Installing symfony/translation (v4.4.47): 
  - Installing psr/clock (1.0.0): 
  - Installing carbonphp/carbon-doctrine-types (2.1.0): 
  - Installing nesbot/carbon (2.72.1): 
  - Installing monolog/monolog (2.9.2): 
  - Installing league/mime-type-detection (1.13.0): 
  - Installing league/flysystem (1.1.10): 
  - Installing league/commonmark (1.6.7): 
  - Installing laravel/framework (v6.20.44): 
  - Installing fideloper/proxy (4.4.2): 
  - Installing nikic/php-parser (v4.17.1): 
  - Installing psy/psysh (v0.11.22): 
  - Installing laravel/tinker (v2.8.2): 
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Package manifest generated successfully.
40 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# 

复制配置文件,生成应用的密钥(APP_KEY):

[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# ll -all
total 360
drwxr-xr-x 13 www  www    4096 May 30 22:39 .
drwxr-xr-x  4 root root   4096 May 30 21:38 ..
drwxr-xr-x  8 www  www    4096 May 30 21:38 app
-rwxr-xr-x  1 www  www    1686 May 30 21:38 artisan
drwxr-xr-x  3 www  www    4096 May 30 21:38 bootstrap
-rwxr-xr-x  1 www  www    1569 May 30 21:38 composer.json
-rwxr-xr-x  1 www  www  258544 May 30 21:38 composer.lock
drwxr-xr-x  2 www  www    4096 May 30 21:38 config
drwxr-xr-x  5 www  www    4096 May 30 21:38 database
-rwxr-xr-x  1 www  www     220 May 30 21:38 .editorconfig
-rwxr-xr-x  1 www  www     778 May 30 21:38 .env.example
drwxr-xr-x  8 www  www    4096 May 30 21:38 .git
-rwxr-xr-x  1 www  www     111 May 30 21:38 .gitattributes
-rwxr-xr-x  1 www  www     528 May 30 21:38 .gitignore
-rwxr-xr-x  1 www  www    1004 May 30 21:38 package.json
drwxr-xr-x  4 www  www    4096 May 30 21:38 public
-rwxr-xr-x  1 www  www    8893 May 30 21:38 README.md
drwxr-xr-x  6 www  www    4096 May 30 21:38 resources
drwxr-xr-x  2 www  www    4096 May 30 21:38 routes
-rwxr-xr-x  1 www  www     563 May 30 21:38 server.php
drwxr-xr-x  5 www  www    4096 May 30 21:38 storage
-rwxr-xr-x  1 www  www     174 May 30 21:38 .styleci.yml
drwxr-xr-x  4 www  www    4096 May 30 21:38 tests
drwxr-xr-x 24 www  www    4096 May 30 22:44 vendor
-rwxr-xr-x  1 www  www     538 May 30 21:38 webpack.mix.js
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]#
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# sudo -u www cp .env.example .env
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# 
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# ll -all
total 364
drwxr-xr-x 13 www  www    4096 May 30 22:53 .
drwxr-xr-x  4 root root   4096 May 30 21:38 ..
drwxr-xr-x  8 www  www    4096 May 30 21:38 app
-rwxr-xr-x  1 www  www    1686 May 30 21:38 artisan
drwxr-xr-x  3 www  www    4096 May 30 21:38 bootstrap
-rwxr-xr-x  1 www  www    1569 May 30 21:38 composer.json
-rwxr-xr-x  1 www  www  258544 May 30 21:38 composer.lock
drwxr-xr-x  2 www  www    4096 May 30 21:38 config
drwxr-xr-x  5 www  www    4096 May 30 21:38 database
-rwxr-xr-x  1 www  www     220 May 30 21:38 .editorconfig
-rwxr-xr-x  1 www  www     778 May 30 22:53 .env
-rwxr-xr-x  1 www  www     778 May 30 21:38 .env.example
drwxr-xr-x  8 www  www    4096 May 30 21:38 .git
-rwxr-xr-x  1 www  www     111 May 30 21:38 .gitattributes
-rwxr-xr-x  1 www  www     528 May 30 21:38 .gitignore
-rwxr-xr-x  1 www  www    1004 May 30 21:38 package.json
drwxr-xr-x  4 www  www    4096 May 30 21:38 public
-rwxr-xr-x  1 www  www    8893 May 30 21:38 README.md
drwxr-xr-x  6 www  www    4096 May 30 21:38 resources
drwxr-xr-x  2 www  www    4096 May 30 21:38 routes
-rwxr-xr-x  1 www  www     563 May 30 21:38 server.php
drwxr-xr-x  5 www  www    4096 May 30 21:38 storage
-rwxr-xr-x  1 www  www     174 May 30 21:38 .styleci.yml
drwxr-xr-x  4 www  www    4096 May 30 21:38 tests
drwxr-xr-x 24 www  www    4096 May 30 22:44 vendor
-rwxr-xr-x  1 www  www     538 May 30 21:38 webpack.mix.js
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# 
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# sudo -u www php artisan key:generate
Application key set successfully.
[root@iZuf68667a5gti22hgkrshZ laylar.lezhing.com]# 

在宝塔面板中点击 网站 菜单,添加站点,同时创建数据库。

修改项目的配置文件.env文件中的数据库连接信息。

在阿里云的管理后台的域名管理中添加 公网DNS解析,指向ECS服务器。

在宝塔管理页面的 网站 管理中,点击要修改的项目 设置,在 伪静态 中写入:

location / {  
    if (!-e $request_filename) {  
        rewrite ^(.*)$ /index.php?s=$1 last;  
        break;  
    }  
}

访问域名:laylar.lezhing.com ,报错了:

Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/laylar.lezhing.com/vendor/autoload.php) is not within the allowed path(s): (/www/wwwroot/laylar.lezhing.com/public/:/tmp/) in /www/wwwroot/laylar.lezhing.com/public/index.php on line 24

Warning: require(/www/wwwroot/laylar.lezhing.com/vendor/autoload.php): failed to open stream: Operation not permitted in /www/wwwroot/laylar.lezhing.com/public/index.php on line 24

Fatal error: require(): Failed opening required '/www/wwwroot/laylar.lezhing.com/public/../vendor/autoload.php' (include_path='.:') in /www/wwwroot/laylar.lezhing.com/public/index.php on line 24

这些错误表明 PHP 脚本在尝试加载 vendor/autoload.php 文件时遇到了 open_basedir 限制的问题。 open_basedir 是一个 PHP 安全设置,它限制了 PHP 脚本可以访问的目录。

错误信息表明 /www/wwwroot/laylar.lezhing.com/vendor/autoload.php 文件不在允许的路径列表中, 而当前允许的路径是 /www/wwwroot/laylar.lezhing.com/public//tmp/

open_basedir 的作用:

  • 限制访问范围:open_basedir 可以将 PHP 脚本能够打开的文件限制在指定的目录树中,包括文件本身。 这有助于防止跨站脚本攻击(XSS)和文件包含漏洞。
  • 增强安全性:合理设置 open_basedir 能够显著增强服务器的安全性,减少潜在的安全风险。

在宝塔管理页面的 网站 管理中,点击要修改的项目 设置,在 网站目录 中取消 防跨站攻击。

然后再次访问域名,成功。

github私有项目部署

github私有项目拉取时需要认证信息。

ssh-keygen -t rsa -b 4096 -C "your_comment" 命令用于生成一个RSA类型的SSH密钥对,其中密钥长度为4096位, 并且附带一个注释(通常用于标识这个密钥对的用途或所有者)。

这里是命令各部分的解释:

  • ssh-keygen: 这是用于创建、管理和转换认证密钥的工具。
  • -t rsa: 指定密钥类型为RSA。RSA是一种广泛使用的公钥加密算法,用于SSH认证。
  • -b 4096: 指定密钥长度为4096位。更长的密钥长度提供了更强的安全性,但也会增加计算负担。4096位是目前推荐的长度。
  • -C "your_comment": 允许你为密钥对添加一个注释。这个注释会保存在公钥文件中,并且可以在查看密钥时显示, 帮助你识别不同的密钥。your_comment应该替换为你想要的任何文本,例如你的用户名、电子邮件地址或密钥的用途。

执行这个命令后,ssh-keygen会提示你输入保存私钥的文件名和位置(如果未指定)。默认情况下, 它会在当前用户的.ssh目录中创建一个名为id_rsa的私钥文件和一个名为id_rsa.pub的公钥文件。 如果你希望使用不同的文件名或位置,可以在提示时输入完整的路径和文件名。

接下来,ssh-keygen可能会询问你是否要为私钥设置一个密码短语(passphrase)。这是一个额外的安全层, 用于保护私钥文件,防止未经授权的访问。如果你设置了密码短语,那么每次使用私钥时都需要输入密码短语进行验证。

最后,一旦密钥对生成完成,公钥的内容会显示在终端上,并且你可以将其复制到需要的地方, 例如远程服务器的~/.ssh/authorized_keys文件中,以便进行SSH认证。

复制id_rsa.pub的公钥文件内容,打开github中的目标私有项目,在 Settings 配置的 Deploy keys 中 Add deploy key,写入复制的内容。

拉取项目时使用项目的 SSH 地址进行git clone git@github.com:**** www_name

下面剩余的配置和上面开源项目的配置一样。

https服务

在宝塔管理页面的 网站 管理中,点击要修改的项目 设置,在 SSL 下选择 Let's Encrypt 申请证书。

在宝塔面板的 安全 菜单下,添加 3306 端口规则。

在阿里云Web管理页面,选择 云服务器ECS,点击 网络与安全 下的子菜单,选择实例,在 入方向 手动添加 443端口。

邮件服务器邮局搭建

我们使用宝塔提供的 宝塔邮局管理器 插件,快速简便完成邮件服务器搭建。

在搭建前,我们要做好准备工作,一个是安装好带密码的Redis(邮局的反垃圾模块 rspamd服务需要使用redis服务),一个是邮箱域名做好A记录。 然后就是安装插件,进行配置,接着进行正常使用。

邮箱域名

邮箱服务要用到SMTP25端口,先开放25端口:在阿里云Web管理页面,选择 云服务器ECS,点击 网络与安全 下的子菜单,选择实例,在 入方向 手动添加 25端口。

在阿里云域名管理的 域名解析 下,添加解析记录:

顺便看下记录类型:

A-将域名指向一个IPV4地址
CNAME-将域名指向另外一个域名
AAAA-将域名指向一个IPV6地址
NS-将子域名指定其他DNS服务器解析
MX-将域名指向邮件服务器地址
SRV-标识提供特定服务的服务器
TXT-文本长度限制512,通常做SPF记录(反垃圾邮件)
CAA-CA证书颁发机构授权校验显性
URL-将域名重定向到另外一个地址隐性
URL-与显性URL类似,但是会隐藏真实目标地址
SVCB-服务绑定记录
HTTPS-约定HTTPS服务的安全建连信息

再做一个二级域名为mail或者其他的二级域名。

邮局安装

在 软件商店 搜索 宝塔邮局管理器 下载。点击设置,进入设置界面,系统将提示您执行环境修复,完成所有修复,该步骤涉及依赖环境的安装:

然而,Rspamd的修复一直无法成功完成,因此需要您自行执行以下命令进行修复安装,在另一个浏览器窗口的命令行中输入:

# For Centos-7
> curl https://rspamd.com/rpm-stable/centos-7/rspamd.repo > /etc/yum.repos.d/rspamd.repo
> rpm --import https://rspamd.com/rpm-stable/gpg.key
> yum update
> yum install -y rspamd

详细:

[root@iZuf63na909xjyb4nymwotZ ~]# curl https://rspamd.com/rpm-stable/centos-7/rspamd.repo > /etc/yum.repos.d/rspamd.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   169  100   169    0     0     31      0  0:00:05  0:00:05 --:--:--    41
[root@iZuf63na909xjyb4nymwotZ ~]# rpm --import https://rspamd.com/rpm-stable/gpg.key
[root@iZuf63na909xjyb4nymwotZ ~]# yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
rspamd/x86_64/signature                                                   |  833 B  00:00:00     
rspamd/x86_64/signature                                                   | 3.0 kB  00:00:00 !!! 
No packages marked for update
[root@iZuf63na909xjyb4nymwotZ ~]# yum install rspamd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package rspamd.x86_64 0:3.8.4-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================
 Package        Arch        Version          Repository                        Size
==============================================================================================
Installing:
 rspamd       x86_64       3.8.4-1.el7        rspamd                           6.9 M

Transaction Summary
==============================================================================================
Install  1 Package

Total download size: 6.9 M
Installed size: 21 M
Is this ok [y/d/N]: y
Downloading packages:
rspamd-3.8.4-1.el7.x86_64.rpm           | 6.9 MB  00:05:59     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : rspamd-3.8.4-1.el7.x86_64                         1/1 
  Verifying  : rspamd-3.8.4-1.el7.x86_64                         1/1 

Installed:
  rspamd.x86_64 0:3.8.4-1.el7

Complete!
[root@iZuf63na909xjyb4nymwotZ ~]#

完成后,在原来界面 点击 刷新列表,看一下依赖环境的修复情况。

如果提示 主机名 不正常,点击修复,使用域名方式作为主机名,如 lezhing.com。然后点击提交。

页面没问题后,点击提交,进行邮局初始化操作。

解析MX、SPF、DKIM和DMARC记录

在 域名列表 菜单,点击 添加域名:

完成后,点击域名后的 MX记录,按照步骤在 阿里云域名管理 中进行配置:

MX记录:邮件交换记录,是域名在DNS服务器上的一个记录,告诉那台计算机负责为系统处理邮件。
MX记录存在于域名的 DNS文件中,用于将某个域名的电子邮件指向到对应的邮件服务器处理。
SPF记录:可以避免伪造地址的垃圾邮件,避免有其他人伪造我的域名来投递。提高发送外域邮箱的成功率;
DKIM记录:提供邮件签名验证的公钥信息;
DMARC记录:识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全;

阿里云配置完成的效果:

在宝塔中点击 验证,查看效果:

SSL配置

添加SSL证书:

选择手动解析、域名,申请:

按照提示,在阿里云的域名解析管理中添加记录:

过一段时间,完成DNS解析后,在宝塔中点击 验证:

点击 保存,至此SSL配置结束,不过要定期来更新SSL。

用户管理

点击操作中的 用户管理,添加用户,密码要包含大小写字母和数字,首字母大写:

在面板 发送邮件 中发送邮件进行测试,被告知25端口被禁用了!需要改成465端口!

宝塔邮局管理器发送邮件只支持25端口,阿里云明确禁用25端口,看来这次搭建是废了。上面域名相关的配置删除掉,邮局软件卸载掉吧。

邮件服务各端口

  • 以下端口都是不带有安全套接字的协议

25端口( SMTP ) :25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。 如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25号端口建立一个连接, 你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来。

109端口(POP2):109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,是用于接收邮件的。(这个协议基本上已经被淘汰了)

110端口(POP3):110端口是为POP3(Post Office Protocol Version 3,邮局协议3)服务开放的,是用于接收邮件的。

143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。

  • 以下端口是带有安全套接字的协议

465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议, 它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些, 防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。

995端口(POP3S):995端口是为POP3S(POP3-over-SSL)协议服务开放的,这是POP3协议基于SSL安全协议之上的一种变种协议, 它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。POP3S和POP3协议一样,也是用来接收邮件的,只是更安全些, 防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

993端口(IMAPS):993端口是为IMAPS(IMAP-over-SSL)协议服务开放的,这是IMAP协议基于SSL安全协议之上的一种变种协议, 它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。IMAPS和IMAP协议一样,也是用来接收邮件的,只是更安全些, 防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

PostFix+Dovecot 部署邮件系统

https://cloud.tencent.com/developer/article/2361644

https://cloud.tencent.com/developer/article/2201610

https://www.wosign.com/News/news_2019012401.htm

https://yijiebuyi.com/blog/5388701a5ea536509abde3e274b8c4bd.html

https://www.cnblogs.com/007sx/p/18349388

知识点

passwd文件

/etc/passwd 是 Unix 和 Linux 系统中存储用户账户信息的文件。这个文件包含了系统上所有用户的基本信息,每一行代表一个用户账户。

/etc/passwd 文件的每一行通常遵循以下格式:

username:password:UID:GID:GECOS:home_directory:shell

这里的字段分别代表:

  1. username:用户名。这是用户在系统中唯一的标识符,用于登录和识别用户。

  2. password:密码字段。在早期的 Unix 系统中,这个字段确实包含了加密的密码。 但在现代的 Linux 系统中,这个字段通常显示为 x*,而真正的加密密码通常存储在 /etc/shadow 文件中。 这样做是为了提高安全性,因为 /etc/passwd 文件通常对所有用户都是可读的,而 /etc/shadow 文件则只有 root 用户才能读取。

  3. UID (User ID):用户标识符。这是一个唯一的数字,用于在系统中标识用户。root 用户的 UID 通常是 0,而其他用户的 UID 通常是正整数。

  4. GID (Group ID):初始组标识符。这是一个数字,指定了用户所属的初始组。组是用户账户的一种扩展,用于管理多个用户的权限和访问控制。

  5. GECOS:用户全名或描述。这个字段通常包含用户的全名、房间号、电话号码或其他描述性信息。 这个字段的具体内容和用途可能会因系统和应用程序的不同而有所变化。

  6. home_directory:用户的主目录。当用户登录系统时,他们的主目录就是他们的起始目录。 这个目录通常包含用户的个人文件、配置文件和其他私有数据。

  7. shell:用户的默认 shell。当用户登录时,这个 shell 将被启动。 常见的 shell 包括 /bin/bash/bin/sh/bin/csh/bin/tcsh/bin/zsh 等。

例如,一个 /etc/passwd 文件中的条目可能如下所示:

john:x:1001:1001:John Doe:/home/john:/bin/bash

在这个例子中,john 是用户名,x 表示密码存储在 /etc/shadow 文件中,1001 是 UID 和 GID, John Doe 是 GECOS 字段(用户全名),/home/john 是用户的主目录,/bin/bash 是用户的默认 shell。

我们可以查看下所有的用户:

cat /etc/passwd

[root@iZuf68667a5gti22hgkrshZ ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
~:x:1000:1000::/home/~:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
www:x:1001:1001::/home/www:/sbin/nologin
[root@iZuf68667a5gti22hgkrshZ ~]# 

用户没有shell

当提到“www可能没有shell”时,这是指在某些系统配置中,www(或其他用于运行web服务的用户, 如apachenginx等)通常不被分配一个可登录的shell。这意味着你不能直接通过SSH或其他方式登录为该用户, 也不能为该用户打开一个shell会话。

在Unix和Linux系统中,每个用户账户都与一个shell相关联,这个shell通常用于登录和执行命令。但是,对于像www这样的服务账户, 出于安全考虑,它们通常被配置为使用/sbin/nologin/usr/sbin/nologin作为它们的shell。 这些特殊的shell程序会阻止用户登录,并显示一条消息说明该账户不能用于登录。

如果你需要为www用户执行命令,你可以使用sudo命令以该用户的身份执行它们,而无需实际登录为该用户。例如:

sudo -u www command_to_run

这条命令会以www用户的身份执行command_to_run,但你需要有适当的权限来使用sudo

如果你需要为www用户修改文件或目录的权限,你可以使用chownchmod命令,但同样地,你可能需要使用sudo来获得必要的权限。

总之,“www可能没有shell”意味着你不能直接登录为该用户来执行命令,但你可以使用其他方法(如sudo)以该用户的身份执行命令。

上面我们在查看用户信息时看到www用户就没有shell,不能外部登录,只能是内部用户:

www:x:1001:1001::/home/www:/sbin/nologin

什么是sudo命令

以下是对susudo命令的详细解释:

su命令

1. 定义与用途

  • 定义su是“Switch User”的缩写,表示切换用户。
  • 用途:用于从当前用户切换到其他用户身份,以获取该用户的权限和环境变量。

2. 使用方法

  • 基本格式su [选项] [用户名]
  • 常用选项
    • -:在切换用户时同时切换环境变量。
    • -c <命令>:以目标用户的身份执行指定命令后,恢复到原来的用户身份。
  • 密码验证
    • 如果从root用户切换到其他用户,不需要输入密码。
    • 如果从普通用户切换到其他用户(包括root),需要输入目标用户的密码。

3. 安全隐患

  • 默认情况下,任何用户都可以使用su命令,这可能导致安全风险,因为攻击者可以尝试猜测root或其他用户的密码。
  • 可以使用PAM(Pluggable Authentication Modules,可插拔认证模块)来限制su命令的使用。

sudo命令

1. 定义与用途

  • 定义sudo是“superuser do”的缩写,表示以超级用户(通常是root)的权限执行命令。
  • 用途:允许系统管理员让普通用户执行一些或全部的root命令,提高了系统的安全性和管理的灵活性。

2. 使用方法

  • 基本格式sudo [选项] [命令]
  • 常用选项
    • -u <用户>:以指定的用户身份执行命令,默认为root。
    • -l:列出当前用户可执行与无法执行的命令。
    • -i:以目标用户的身份登录一个新的shell。
    • -p:改变询问密码的提示符号。
  • 密码验证
    • 执行sudo命令时,需要输入当前用户的密码(而非root或目标用户的密码)。
    • 密码的有效期限可以通过-v-k选项来设置。

3. 安全性

  • sudo不是对shell的替代,而是面向每个命令的,提高了安全性。
  • sudo的配置文件/etc/sudoers允许管理员精细控制哪些用户可以执行哪些命令。

总结

  • susudo都是Linux系统中用于权限管理的命令,但它们在用途、使用方法和安全性方面有所不同。
  • su用于切换用户身份,而sudo允许普通用户以超级用户的权限执行命令。
  • 在使用这些命令时,需要注意安全性问题,并遵循最佳实践来避免潜在的安全风险。

举例

当使用su命令来切换用户身份时,你可以指定要切换到的用户名。以下是一些使用su命令切换用户身份的示例:

1、从普通用户切换到root用户

假设你当前登录为名为john的普通用户,并且你想切换到root用户以执行某些需要更高权限的命令。你可以这样做:

su - root

或者,因为su命令默认尝试切换到root,所以你也可以简单地输入:

su -

在输入密码后(通常是root用户的密码),你将切换到root用户,并且你的环境变量也会被更新为root用户的环境变量。

2、从root用户切换回普通用户

如果你当前是root用户,并且你想切换回名为john的普通用户,你可以这样做:

su - john

在输入密码后(通常是john用户的密码),你将切换到john用户。

3、使用-c选项执行单个命令

你也可以使用su命令的-c选项来以另一个用户的身份执行单个命令。例如,以john用户的身份执行ls命令:

su - john -c 'ls -l'

在这个例子中,ls -l命令将以john用户的身份执行,而不需要先切换到john用户,然后再手动执行命令。

4、切换到其他普通用户

假设你有多个普通用户账户,并且你想从当前用户切换到另一个普通用户,比如从john切换到jane。你可以这样做:

su - jane

在输入密码后(通常是jane用户的密码),你将切换到jane用户。

注意:在上面的示例中,我使用了-选项来同时切换用户和环境变量。如果你省略了-选项,那么只会切换用户,而不会更改环境变量。 这可能会导致某些命令或脚本无法正常工作,因为它们依赖于特定的环境变量。因此,在大多数情况下,建议使用-选项来完整地切换用户。

5、安全性考虑

  • 不要在生产环境中以 root 用户登录:直接以 root 用户登录到系统是一个安全风险, 因为任何错误或恶意操作都可能对系统造成严重后果。最好是以普通用户身份登录,并在需要时使用 susudo 来获取必要的权限。
  • 使用 sudo 而不是 su:在许多现代Linux发行版中,sudo 是更推荐的方法, 因为它允许你以其他用户的身份执行单个命令,而不需要切换到该用户。这提供了更细粒度的权限控制,并减少了安全风险。
  • 限制 su 的使用:如果你确实需要使用 su,请确保只有受信任的用户可以访问它, 并考虑使用PAM(Pluggable Authentication Modules)或其他工具来限制其使用。

阿里云ECS安装宝塔

下面记录下又一次阿里云ECS安装宝塔的操作,作为日后参考。

翻阅宝塔官方安装文档 https://www.bt.cn/new/download.html

[root@iZuf63na909xjyb4nymwotZ ~]# yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh ed8484bec
Loaded plugins: fastestmirror
Determining fastest mirrors
base                                                         | 3.6 kB  00:00:00
epel                                                         | 4.3 kB  00:00:00
extras                                                       | 2.9 kB  00:00:00
updates                                                      | 2.9 kB  00:00:00
(1/7): base/7/x86_64/group_gz                                | 153 kB  00:00:00
(2/7): epel/x86_64/group                                     | 399 kB  00:00:00
(3/7): epel/x86_64/updateinfo                                | 1.0 MB  00:00:00
(4/7): extras/7/x86_64/primary_db                            | 253 kB  00:00:00
(5/7): epel/x86_64/primary_db                                | 8.7 MB  00:00:00
(6/7): base/7/x86_64/primary_db                              | 6.1 MB  00:00:00
(7/7): updates/7/x86_64/primary_db                           |  27 MB  00:00:00
Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version
Nothing to do
--2024-08-13 23:03:48--  https://download.bt.cn/install/install_lts.sh
Resolving download.bt.cn (download.bt.cn)... 42.157.128.146, 240e:97e:4000:33f:103:212:48:148
Connecting to download.bt.cn (download.bt.cn)|42.157.128.146|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 51960 (51K) [application/octet-stream]
Saving to: ‘install.sh’

100%[=======================================>] 51,960      --.-K/s   in 0.03s

2024-08-13 23:03:48 (1.94 MB/s) - ‘install.sh’ saved [51960/51960]


+----------------------------------------------------------------------
| Bt-WebPanel FOR CentOS/Ubuntu/Debian
+----------------------------------------------------------------------
| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.
+----------------------------------------------------------------------
| The WebPanel URL will be http://SERVER_IP:39625 when installed.
+----------------------------------------------------------------------
| 为了您的正常使用,请确保使用全新或纯净的系统安装宝塔面板,不支持已部署项目/环境的系统安装
+----------------------------------------------------------------------
| 当前您正在安装的是宝塔面板稳定版-9.0-lts
+----------------------------------------------------------------------

Do you want to install Bt-Panel to the /www directory now?(y/n): y
Loading mirror speeds from cached hostfile
Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version
Nothing to do
---------------------------------------------
Selected download node...
Download node: https://download.bt.cn
---------------------------------------------
正在设置虚拟内存,请稍等..........
---------------------------------------------
1025+0 records in
1025+0 records out
1074790400 bytes (1.1 GB) copied, 5.39333 s, 199 MB/s

+++++++++++++++++++++++++++++++++++省略若干+++++++++++++++++++++++++++++++++++++++++

 39350K .......... .......... .......... ....                 100% 74.7M=2.6s

2024-08-13 23:07:20 (14.6 MB/s) - ‘panel.zip’ saved [40330045/40330045]

--2024-08-13 23:07:21--  https://download.bt.cn/install/src/bt7.init
Resolving download.bt.cn (download.bt.cn)... 42.157.128.146, 240e:97e:4000:33f:103:212:48:148
Connecting to download.bt.cn (download.bt.cn)|42.157.128.146|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16511 (16K) [application/octet-stream]
Saving to: ‘/etc/init.d/bt’

     0K .......... ......                                     100%  148M=0s

2024-08-13 23:07:21 (148 MB/s) - ‘/etc/init.d/bt’ saved [16511/16511]

--2024-08-13 23:07:21--  https://download.bt.cn/install/src/bt7.init
Resolving download.bt.cn (download.bt.cn)... 42.157.128.146, 240e:97e:4000:33f:103:212:48:148
Connecting to download.bt.cn (download.bt.cn)|42.157.128.146|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16511 (16K) [application/octet-stream]
Saving to: ‘/www/server/panel/init.sh’

     0K .......... ......                                     100%  132M=0s

2024-08-13 23:07:21 (132 MB/s) - ‘/www/server/panel/init.sh’ saved [16511/16511]

--2024-08-13 23:07:21--  https://download.bt.cn/install/conf/softList.conf
Resolving download.bt.cn (download.bt.cn)... 42.157.128.146, 240e:97e:4000:33f:103:212:48:148
Connecting to download.bt.cn (download.bt.cn)|42.157.128.146|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2216 (2.2K) [application/octet-stream]
Saving to: ‘/www/server/panel/data/softList.conf’

     0K ..                                                    100%  300M=0s

2024-08-13 23:07:22 (300 MB/s) - ‘/www/server/panel/data/softList.conf’ saved [2216/2216]

Starting Bt-Panel....   done
Starting Bt-Tasks...    done
username: w6xdsagd
========================================
正在开启面板SSL,请稍等............
========================================
证书开启成功!
========================================
Stopping Bt-Tasks...    done
Stopping Bt-Panel...    done
Starting Bt-Panel....   done
Starting Bt-Tasks...    done
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Package firewalld-0.6.3-13.el7_9.noarch already installed and latest version
Nothing to do
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
success
True
==================================================================
Congratulations! Installed successfully!
=============注意:首次打开面板浏览器将提示不安全=================

 请选择以下其中一种方式解决不安全提醒
 1、下载证书,地址:https://dg2.bt.cn/ssl/baota_root.pfx,双击安装,密码【www.bt.cn】
 2、点击【高级】-【继续访问】或【接受风险并继续】访问
 教程:https://www.bt.cn/bbs/thread-117246-1-1.html
 mac用户请下载使用此证书:https://dg2.bt.cn/ssl/mac.crt

========================面板账户登录信息==========================

 【云服务器】请在安全组放行 23412 端口
 外网面板地址: https://139.121.001.102:23412/e412f75g
 内网面板地址: https://172.13.151.231:23412/e412f75g
 username: sd3j3jsdd
 password: 234234354

 浏览器访问以下链接,添加宝塔客服
 https://www.bt.cn/new/wechat_customer
==================================================================
Time consumed: 1 Minute!
[root@iZuf63na909xjyb4nymwotZ ~]#

ECS安全组 放开 23412 端口入方向。

然后浏览器访问:https://139.121.001.102:23412/e412f75g






参考资料

【宝塔邮局管理器】使用教程 https://www.bt.cn/bbs/thread-87496-1-1.html

自己用宝塔面板搭建企业邮箱 https://www.ali-exmail.cn/ask/364.html

5分钟教你搭建邮件服务器的实用指南 https://cloud.tencent.com/developer/article/2414524

搭建邮件服务器,过程非常简单 https://cloud.tencent.com/developer/article/2056446 +源码 https://gitee.com/laowu5/EwoMail

常用端口 https://help.aliyun.com/zh/ecs/user-guide/common-ports?spm=5176.smartservice_service_robot_chat_new.0.0.59b143ecGOq9HK


返回