服务器管理员

系统和网络管理员的问答

4
如何在Windows DNS服务器上注册Linux服务器
我有几台Ubuntu计算机(主要是8.04),我想在Windows 2000上运行的我的主DNS服务器上注册它们的主机名(或所需的主机名),以便可以通过该主机名从使用该DNS服务器的其他任何计算机上访问这些计算机。Windows客户端可以使用MS客户端自动执行此操作,也可以使用ipconfig / registerdns手动执行此操作。在Linux中我该如何做?我不一定要使用“同等开放”在域中注册它们,除非这是将DNS条目发送到Windows服务器的唯一方法。 这些是静态IP。我意识到我也可以在Windows端手动添加DNS条目,但是我实际上并不负责该Windows DNS服务器。



4
Linux中的命令行递归/深层目录复制?
在大多数情况下,在Linux中制作递归/深层目录副本的最佳通用方法是什么?我用过一些简单的东西,例如cp -R精心制作的cpio咒语。是否有任何明显的优点或缺点使您偏爱另一种?您最常使用哪一个?

3
哪些MySQL用户可以访问数据库?
如何判断哪些MySQL用户可以访问数据库以及他们具有哪些特权? 当我单击“权限”时,我似乎能够从phpMyAdmin获取此信息。。。 Users having access to "mydatabase" User Host Type Privileges Grant myuser1 % database-specific ALL PRIVILEGES Yes root localhost global ALL PRIVILEGES Yes myuser2 % database-specific SELECT, INSERT, UPDATE No 。。。但我想知道如何从命令行执行此查询。 (phpMyAdmin经常向我显示它正在执行的命令的SQL语法,但是在这种情况下我看不到它。) 请注意,我并不是在问特定用户有什么授予权限(即“ myuser1的SHOW GRANTS”),而是在给定数据库名称的情况下,如何确定哪些MySQL用户可以访问该数据库以及他们具有哪些特权? 基本上,如何从命令行获取以上图表?
13 mysql 


3
如何基于X-forward-for标头拒绝对资源的访问
我试图基于在X-forwarded-for标头中传递的客户端IP来限制对Nginx背后资源的访问。Nginx在Google Cloud Platform的Kubernetes集群上的容器中运行,并且实际客户端ip仅在x-forward-for标头中传递 到目前为止,我已经使用以下代码为单个IP做到了这一点: set $allow false; if ($http_x_forwarded_for ~* 123.233.233.123) { set $allow true; } if ($http_x_forward_for ~* 10.20.30.40) { set $allow false; } if ($allow = false) { return 403; } 但是我如何才能对整个IP地址范围进行操作呢?手动指定数百个IP并没有多大意义。 感谢所有帮助
13 nginx 

1
将所有请求重定向到HTTPS(一个子目录除外)
我正在尝试从nginx Web服务器上的自签名证书迁移到“让我们加密”证书。 目前,我将所有请求重定向http/80到https/443,使用我之前创建的自签名证书。 现在-根据我的理解,让我们加密向端口80发出请求(因为我正在使用的webroot选项certbot)。这些请求将被重定向,从而导致证书生成失败。 我尝试通过以下服务器块来实现此目的,监听端口80: server { listen 80; server_name sub.domain.tld; server_tokens off; location /.well-known { root /var/www/letsencrypt; } location / { return 301 https://$host$request_uri; } } 但是无论如何/.well-known都将请求重定向到https/443。 我如何将所有请求从重定向http/80到https/443,除了以外的请求/.well-known/?


1
为什么Nginx $ ssl_client_i_dn的格式突然改变了?
我们正在使用客户端证书来认证我们的一位客户。 我们的设置是这样的:在Django应用程序的前面有nginx。在我们的nginx配置中,我们具有必需的参数,以使实际的客户端证书验证有效(ssl_client_certificate,ssl_verify_client等等),并且 uwsgi_param X-Client-Verify $ssl_client_verify; uwsgi_param X-Client-DN $ssl_client_s_dn; uwsgi_param X-SSL-Issuer $ssl_client_i_dn; 这意味着我们将这些变量的值输入到我们的Django应用中。然后,Django应用程序使用此信息来识别正在连接的用户并对其进行授权。 我们已经成功使用了几个月,没有任何问题,突然之间我们开始收到有关人们无法使用证书登录的报告。原来,$ssl_client_s_dn和$ssl_client_i_dn值的格式已从斜杠分隔的格式进行了更改: /C=SE/O=Some organziation/CN=Some CA 转换为逗号分隔的格式: CN=Some CA,O=Some organization,C=SE 解决这个问题很容易,但是我不明白为什么。所以我的问题确实是: 价值$ssl_client_s_dn从何而来?它是由nginx设置的吗?客户端? 此值可以有格式的任何文档/规范,并且它有名称吗?

1
如何临时禁用本地转发
我的~/.ssh/config文件条目中包含本地转发定义,例如 HOST myServer hostname 10.10.0.1 user xyz LocalForward 8080 localhost:80 LocalForward 4000 127.0.0.1:4000 ... 这就像一个符咒,但是我也有脚本来同步一些数据。 当这些脚本尝试连接到已经存在连接的服务器时,它们会显示许多警告。 bind: Address already in use channel_setup_fwd_listener_tcpip: cannot listen to port: 8080 bind: Address already in use channel_setup_fwd_listener_tcpip: cannot listen to port: 4000 .... 有没有一种整洁的方法可以使用ssh或rsync带有选项来禁用会话的所有本地转发? 显然,我可以复制并粘贴每个配置块,并使用和不使用本地转发构建一个配置块,但是我希望有一个更好的解决方案。

1
如何在CentOS Docker容器内启用SELinux?
我试图将SELinux安装在Docker容器中,以便分发内部使用SELinux的应用程序。 默认的CentOS映像未安装SELinux: $ docker run -it centos:latest /bin/bash [root@38ae5a98273d /]# sestatus bash: sestatus: command not found 从yum安装它之后,尚未启用SELinux。 [root@38ae5a98273d /]# yum install policycoreutils selinux-policy-targeted ... [root@38ae5a98273d /]# sestatus SELinux status: disabled 我发现的所有文档都说您需要发出系统重新启动才能进行安装。但是,我不知道一种模拟Docker容器内系统重启的方法。 如何在容器内安装和启用SELinux?
13 centos  docker  selinux 

5
大型目录的rsync更快,没有更改
我们使用rsync备份服务器。 不幸的是,某些服务器的网络速度很慢。 rsync最多需要五分钟才能检测到,巨大的目录中没有任何变化。这些巨大的目录树包含许多小文件(约80k文件)。 我猜想rsync客户端会为每个80k文件发送数据。 由于网络速度较慢,我希望避免发送有关每个文件的80k次信息。 有没有办法告诉rsync进行子目录树的哈希和? 这样,rsync客户端将只为一个巨大的目录树发送几个字节。 更新资料 到目前为止,我的策略是使用rsync。但是,如果其他工具更适合此处,我可以进行切换。(服务器和客户端)都在我的控制之下。 更新2 一棵目录树中有8万个文件。每个目录的文件或子目录数量均不超过2k 更新3 有关网络慢速的详细信息: time ssh einswp 'cd attachments/200 && ls -lLR' >/tmp/list real 0m2.645s tmp /列表文件的大小:2MByte time scp einswp:/tmp/list tmp/ real 0m2.821s 结论:scp具有相同的速度(不足为奇) time scp einswp:tmp/100MB tmp/ real 1m24.049s 速度:1.2MB / s

3
调试时退出Ansible剧本的最简单方法
假设我正在调试Ansible剧本,并希望在完成给定任务后退出(而不是通过以下所有任务运行)。是否有可用的单行魔术命令,还是我必须手动创建退出/声明任务? 从ansible-playbook手册中,我看到有一个--start-at-task=START_AT标记,但是看不到任何类似“ end-at” 的标记。
13 ansible 

3
拍摄快照时,Linux设备映射器映射嵌套在LV中的LVM PV
备份我的机器的计划真的搞砸了... 我有一台服务器,该服务器是多个虚拟机的KVM管理程序。其中之一是运行Docker。它在/ dev / vdb上具有其Docker卷,该卷设置为LVM PV,Docker在其上使用direct-lvm驱动程序存储Docker容器数据。该虚拟磁盘是主机本地磁盘上的LVM LV。 主机和来宾都运行Fedora 21。 该卷的主机视图是(仅显示相关卷): [root@host ~]# lvs LV VG Attr LSize docker2.example.com-volumes vm-volumes -wi-ao---- 40.00g [root@host ~]# dmsetup ls --tree vm--volumes-docker2.example.com--volumes (253:10) └─ (9:125) 访客对此卷的看法是(再次,仅显示相关卷): [root@docker2 ~]# pvs PV VG Fmt Attr PSize PFree /dev/vdb docker-volumes lvm2 a-- 40.00g 0 对于主机上的所有其他LVM卷,我可以使用制作快照lvcreate --snapshot,备份快照,然后lvremove毫无问题。但是对于这个特定的卷,我无法使用lvremove,因为它正在使用中: [root@host ~]# …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.