前言

今天下载了elasticsearch的7.x版本,使用bin/elasticsearch -d 启动后,报出如下错误:

java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105)
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349)
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)

原来,启动的时候不能使用root用户启动,无奈,只能创建一个新用户

用户创建

  1. 创建用户:
useradd -m elastisearch

-m : 在home目录下创建用户目录

  1. 设置密码:
passwd elastisearch

自此,就可以通过ssh elastisearch@ip登录机器了

更改文件拥有者(chown命令)

将/opt目录下面的es安装包目录elasticsearch-7.6.1,所有者设为elastisearch

chown elasticsearch:elasticsearch elasticsearch-7.6.1

设置完成后,观察/opt目录

drwxr-xr-x 10 elasticsearch elasticsearch  156 Mar 26 20:15 elasticsearch-7.6.1

发现elasticsearch-7.6.1目录的所有者修改成功,
到此,elasticsearch就可以使用elasticsearch用户启动成功

chmod 777 是个啥

之前碰到一些文件不能修改,就索性用chmod 777 去执行下,也没有管他到底在做什么,今天来捋一捋,记录一下。

首先,ls -l查看一个目录,会出现:

drwxrwxr-x 11 elasticsearch elasticsearch 4096 Mar 26 21:00 apache-skywalking-apm-bin-es7
drwxr-xr-x 10 elasticsearch elasticsearch  156 Mar 26 20:15 elasticsearch-7.6.1
drwxr-xr-x  2 root          root             6 Mar 27 14:45 test
-rwxrwxrwx  1 root          root             0 Mar 27 15:21 test.sh
-rw-r--r--  1 root          root             0 Mar 27 15:21 test.txt

Linux下,分为这么几种文件类型:

  • d:目录directory
  • l:符号链接link
  • s:套接字socket
  • c:字符设备char
  • p:命名管道pipe
  • -:其他,不属于以上几类

文件创建后,有三种访问方式:

  • 读(read):显示内容
  • 写(write):编辑内容,删除文件
  • 执行(execute):执行文件

针对用户,文件有三类权限:

  • 创建人(user)权限:创建文件的人
  • 组(group)用户权限:和拥有者处于相同用户组的其他人
  • 其他(other)用户权限

所以针对-rwxr-xr-x可分析为:

  • 第1个字符表示文件的类型:[-]表示普通文件
  • 第234字符表示创建人的权限:[rwx]表示可读,可写,可执行
  • 第567字符表示组用户权限:[r-x]表示可读可执行
  • 第890字符表示其他用户权限:[r-x]表示可读可执行

修改test.sh文件权限两种办法

chmod u+x test.sh 赋予可执行权限
chmod go-w xxx.sh 不让其它用户修改

第一个参数:

  • u:创建人
  • g:组用户
  • o:其他用户
  • a:所有用户(all)

第二个参数:

  • +:增加权限
  • -:取消权限
  • =:设定权限

第三个参数:

  • r:读
  • w:写
  • x:执行
chmod 777 test.sh 赋予可读可写可执行权限

若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7

若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6

若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5

我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法可简化为:

chmod <abc> file
a,b,c各为一个数字,分别代表User、Group、及Other的权限。
相当于简化版的
chmod u=权限,g=权限,o=权限 file

stone想静静
45 声望7 粉丝

春暖花痴开 傻傻创未来