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

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

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

useradd -s /usr/sbin/nologin -M www

相反,如果你要创建家目录以及指定默认的shell,则要这样指定(debian系统默认不会指定默认shell和创建家目录,所以一般要用这种方式创建,centos貌似都会默认创建,但centos用这个也可以)

useradd -s /usr/bin/bash -m www

如果你是用zsh的,就指定-s/usr/bin/zsh

useradd -s /usr/bin/zsh -m www

-s(shell的首字母)用户指定该用户的登录shell为/usr/sbin/nologin(如果不指定,那么就用当前环境的shell,echo $SHELL即可查看当前的shell),/usr/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用户和组。

打赏

订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x

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

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