Linux创建用于执行程序的非登录用户

Linux创建用于执行程序的非登录用户

使用以下命令创建用于执行程序的非登录用户(其中www为要创建的用户名):

useradd -s /sbin/nologin -M www

-s指定该用户的登录shell为/sbin/nologin(如果不指定,那么就用当前环境的shell,echo $SHELL即可查看当前的shell),/sbin/nologin是一个专门用来防止登录的shell,它非常简单,只会输出一句话:

Xnip2019-01-18_16-02-46.jpg

所以你想切换到这个用户,它也会提示相同的信息:

Xnip2019-01-18_16-03-16.jpg

-M选项用于指定不创建家目录(因为非登录用户不需要家目录),相反-m(小写m)则指定创建家目录,如果两个都没指定,那么将会使用默认设置文件/etc/login.defs中的CREATE_HOME选项来确定的,如果CREATE_HOME yes那么就会创建,如果CREATE_HOME no那就不创建。

我们可以在/etc/passwd文件最后一行看到刚刚创建的用户,最后一个/sbin/nologin即为它的shell:

Xnip2019-01-18_16-52-28.jpg

Linux很多服务软件都可以指定运行用户和组,经常默认配置都写着nobody/www之类的。

比如nginx就可以这么指定的:

user www www

又比如,php-fpm是这么指定的:

user www
group www

又比如rsync是这么指定的:

uid www
gid www

那么这个www就是我们专门用来启动进程用的,比如php-fpm和nginx接收到请求读取文件时,就是用这个www用户和组的权限去读,又或者php-fpm写入文件时,生成的文件权限也是www的用户和组,又或者rsync同步文件时,也是用www这个用户和组的权限去扫描变化文件并读取,同步的文件生成后也是www用户和组。

打赏

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Notify of

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

Linux创建用于执行程序的非登录用户