Linux下新增用户、指定用户组、家目录、获取sudo权限方式

目录
  • Linux新增用户、指定用户组、家目录、获取sudo权限
  • Linux用户的家目录——经典干货
  • 总结

Linux新增用户、指定用户组、家目录、获取sudo权限

//系统环境
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
# uname -r
3.10.0-862.el7.x86_64
//SELinux 设置
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
//校准时间的定时任务
# crontab -l
01 */3 * * * /usr/sbin/ntpdate time1.aliyun.com && clock -w
//useradd命令的man信息
useradd - 创建一个新用户或更新默认新用户信息

useradd [选项] 登录

useradd -D

useradd -D [选项]

如果使用时不带 -D 选项,useradd 命令使用命令行上指定的值和系统的默认值创建一个新用户。根据命令行选项,useradd
命令也会更新系统文件和创建新用户的主目录并复制初始文件。

默认上,也会为用户创建组 (察看 -g, -N, -U,和 USERGROUPS_ENAB)。

useradd 可以使用的选项有:

-b, --base-dirBASE_DIR
    The default base directory for the system if -dHOME_DIR is not specified.  BASE_DIR is concatenated with
    the account name to define the home directory. The BASE_DIR must exist otherwise the home directory cannot
    be created.

    如果选项没有指定,useradd 将使用 /etc/default/useradd 中的 HOME 变量,或者默认的 /home。

-c, --commentCOMMENT
    任何字符串。通常是关于登录的简短描述,当前用于用户全名。

-d, --home-dir HOME_DIR
    The new user will be created using HOME_DIR as the value for the user's login directory. The default is to
    append the LOGIN name to BASE_DIR and use that as the login directory name.

-D, --defaults
    看下边,“更改默认值”子节。

-e, --expiredateEXPIRE_DATE
    用户账户将被禁用的日期。日期以 YYYY-MM-DD 格式指定。

    如果没有指定,useradd 将使用 /etc/default/useradd 中 EXPIRE
    变量指定的默认过期日期,或者一个空字符串(不过期)。

-f, --inactiveINACTIVE
    密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1 表示禁用这个功能。

    如果未指定,useradd 将使用 /etc/default/useradd 中的 INACTIVE 指定的默认禁用周期,或者默认为 -1。

-g, --gidGROUP
    用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。

    如果没有指定, useradd 的行为将依赖于 /etc/login.defs 文件中的 USERGROUPS_ENAB 参数。如果此参数设置为了
    yes (或者在命令行上指定了 -U/--user-group),将会为用户创建一个组,组名和登录名相同。如果选项设置为了 no
    (或者在命令行上指定了 -N/--no-user-group),useradd 会把新用户的主组设置为 /etc/default/useradd 中 GROUP
    变量指定的值,再或者默认是 100。

-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]
    用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 -g
    选项给定的组同样的限制。默认上,用户只属于初始组。

-h, --help
    现实帮助信息并退出。

-k, --skelSKEL_DIR
    骨架目录,包含使用 useradd 创建用户时,要复制到用户主目录中的文件和目录。

    这个选项只有在指定 -m (或 --create-home) 选项时才有效。

    如果此项没有设置,骨架目录使用 /etc/default/useradd 中的 SKEL 的变量或默认为 /etc/skel。

    如果可以,也复制 ACL 和扩展属性。

-K, --keyKEY=VALUE
    默认覆盖 /etc/login.defs (UID_MIN, UID_MAX, UMASK, PASS_MAX_DAYS 及其它)。 例如:-K PASS_MAX_DAYS=-1
    可以用于创建一个密码不会过期的系统账户,即使系统账户没有密码。可以指定多个 -K 选项,如:-K UID_MIN=100-K
    UID_MAX=499

-l, --no-log-init
    不要将用户添加到最近登录和登录失败数据库。

    默认上,最近登录和登录失败中用户的条目会被重置,以避免重新使用先前删除的用户的条目。

-m, --create-home
    如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k 选项指定),将会复制到主目录。

    默认上,如果没有指定此选项并且 CREATE_HOME 没有启用,不会创建主目录。

    The directory where the user's home directory is created must exist and have proper SELinux context and
    permissions. Otherwise the user's home directory cannot be created or accessed.

-M, --no-create-home
    Do not create the user's home directory, even if the system wide setting from /etc/login.defs
    (CREATE_HOME) is set to yes.

-N, --no-user-group
    不要创建同名组,而是将用户添加到 -g 选项指定的组,或根据 /etc/default/useradd 中的 GROUP 变量。

    如果没有指定 -g, -N 和 -U 选项,默认行为由 /etc/login.defs 中的 USERGROUPS_ENAB 变量指定。

-o, --non-unique
    允许使用重复的 UID 创建用户账户。

    此选项只有和 -u 选项组合使用才有效。

-p, --passwordPASSWORD
    加密了的密码,就像 crypt(3) 的返回值。默认为禁用密码。

    注

    您应该确保密码符合系统的密码政策。

-r, --system
    创建一个系统账户。

    System users will be created with no aging information in /etc/shadow, and their numeric identifiers are
    chosen in the SYS_UID_MIN-SYS_UID_MAX range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and
    their GID counterparts for the creation of groups).

    注意:useradd 不会为这种用户创建主目录,无论 /etc/login.defs (CREATE_HOME)
    中是的默认设置是怎样。如果想为要创建的系统账户创建主目录,需要指定 -m 选项。

-R, --rootCHROOT_DIR
    Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.

-s, --shellSHELL
    用户的登录 shell 名。默认为留空,让系统根据 /etc/default/useradd 中的 SHELL 变量选择默认的登录
    shell,默认为空字符串。

-u, --uidUID
    用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于
    UID_MIN,且大于任何其他用户 ID 最小值。

    请参考 -r 选项和 UID_MAX 的描述。

-U, --user-group
    创建一个和用户同名的组,并将用户添加到组中。

    如果没有指定 -g, -N 和 -U 选项,默认行为由 /etc/login.defs 中的 USERGROUPS_ENAB 变量指定。

-Z, --selinux-userSEUSER
    用户登陆的 SELinux 用户。默认为留空,这会造成系统选择默认的 SELinux 用户。

只带 -D 选项使用时,useradd 将显示当前的默认值。-D 和其它选项配合使用时,useradd
将为指定的选项更新默认值。有效的“更改默认值”选项有:

-b, --base-dirBASE_DIR
    新用户主目录的路径前缀。如果创建新账户时,没有使用 -d 选项,用户的名称将会缀在 BASE_DIR
    的后边形成新用户的主目录名。

    这个选择在 /etc/default/useradd 中设置 HOME 选项。

-e, --expiredateEXPIRE_DATE
    禁用此用户账户的日期。

    此选项在 /etc/default/useradd 中设置 EXPIRE 变量。

-f, --inactiveINACTIVE
    密码过期到账户被禁用之前的天数。

    这个选项在 /etc/default/useradd 中设置 INACTIVE 变量。

-g, --gidGROUP
    新用户初始组的组名或 ID (使用了 -N/--no-user-group 或者 /etc/login.defs 中的变量 USERGROUPS_ENAB 设置为 no
    时)。给出的组必须存在,并且数字组 ID 必须有一个已经存在的项。

    这个选项在 /etc/default/useradd 中设置 GROUP 变量。

-s, --shellSHELL
    新用户的登录 shell 名。

    这个选项在 /etc/default/useradd 设置 SHELL 变量。

系统管理员负责将默认的用户文件放在 /etc/skel/ 目录中(或者命令行上、/etc/default/useradd中指定的任何其它目录)。

CAVEATS
您可能不能想 NIS 组或 LDAP 组添加用户。这只能在相应服务器上进行。

相似地,如果用户名已经存在于外部用户数据库中,比如 NIS 或 LDAP,useradd 将拒绝创建用户账户的请求。

用户名不能超过 32 个字符长。

在 /etc/login.defs 中有如下配置变量,可以用来更改此工具的行为:

CREATE_HOME (boolean)
    指示是否应该为新用户默认创建主目录。

    此设置并不应用到系统用户,并且可以使用命令行覆盖。

GID_MAX (number), GID_MIN (number)
    useradd,groupadd 或 newusers 创建的常规组的组 ID 的范围。

    GID_MIN 和 GID_MAX 的默认值分别是 1000 和 60000。

MAIL_DIR (string)
    邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。

MAIL_FILE (string)
    定义用户邮箱文件的位置(相对于主目录)。

MAIL_DIR and MAIL_FILE 变量由 useradd,usermod 和 userdel 用于创建、移动或删除用户邮箱。

如果 MAIL_CHECK_ENAB 设置为 yes,它们也被用于定义 MAIL 环境变量。

MAX_MEMBERS_PER_GROUP (number)
    每个组条目的最大成员数。达到最大值时,在 /etc/group 开始一个新条目(行)(使用同样的名称,同样的密码,同样的
    GID)。

    默认值是 0,意味着组中的成员数没有限制。

    此功能(分割组)允许限制组文件中的行长度。这对于确保 NIS 组的行比长于 1024 字符。

    如果要强制这个限制,可以使用 25。

    注意:分割组可能不受所有工具的支持(甚至在 Shadow 工具集中)。您不应该使用这个变量,除非真的需要。

PASS_MAX_DAYS (number)
    一个密码可以使用的最大天数。如果密码比这旧,将会强迫更改密码。如果不指定,就假定为 -1,这会禁用这个限制。

PASS_MIN_DAYS (number)
    两次更改密码时间的最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定,假定为 -1,将会禁用这个限制。

PASS_WARN_AGE (number)
    密码过期之前给出警告的天数。0 表示只有只在过期的当天警告,负值表示不警告。如果没有指定,不会给警告。

SYS_GID_MAX (number), SYS_GID_MIN (number)
    useradd、groupadd 或 newusers 创建的系统组的组 ID 的范围。

    SYS_GID_MIN 和 SYS_GID_MAX 的默认值分别是 101 和 GID_MIN-1。

SYS_UID_MAX (number), SYS_UID_MIN (number)
    useradd 或 newusers 创建的系统用户的用户 ID 的范围。

    SYS_UID_MIN 和 SYS_UID_MAX 的默认值分别是 101 和 UID_MIN-1。

UID_MAX (number), UID_MIN (number)
    useradd 或 newusers 创建的普通用户的用户 ID 的范围。

    UID_MIN 和 UID_MAX 的默认值分别是 1000 和 60000。

UMASK (number)
    文件模式创建掩码初始化为此值。如果没有指定,掩码初始化为 022。

    useradd 和 newusers 使用此掩码设置它们创建的用户主目录的模式。

    也被 login 用于指定用户的初始 umask。注意,此掩码可以被用户的 GECOS 行覆盖(当设置了 QUOTAS_ENAB
    时),也可以被带 K 指示符的 limits(5) 定义的限制值覆盖。

USERGROUPS_ENAB (boolean)
    如果 uid 和 gid 相同,用户名和主用户名也相同,使非 root 组的组掩码位和属主位相同 (如:022 -> 002, 077 ->
    007)。

    如果设置为 yes,如果组中没有成员了,userdel 将移除此用户组,useradd 创建用户时,也会创建一个同名的默认组。

/etc/passwd
    用户账户信息。

/etc/shadow
    安全用户账户信息。

/etc/group
    组账户信息。

/etc/gshadow
    安全组账户信息。

/etc/default/useradd
    账户创建的默认值。

/etc/skel/
    包含默认文件的目录。

/etc/login.defs
    Shadow 密码套件配置。

useradd 可以返回如下值:

0
    成功

1
    无法更新密码文件

2
    无效的命令语法

3
    给了选项一个无效的参数

4
    UID 已经使用 (且没有 -o)

6
    指定的组不存在

9
    用户名已被使用

10
    无法更新组文件

12
    无法创建主目录

14
    can't update SELinux user mapping
//新增用户testuser赋予root权限
//方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL
//然后修改用户,使其从属于root组(wheel),命令如下:
#usermod -g root testuser
//修改完毕,现在可以用testuser帐号登录,然后用命令 su - ,即可获得root权限进行操作。

//方法二(推荐使用): 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
testuser   ALL=(ALL)     ALL
//修改完毕,现在可以用testuser帐号登录,然后用命令 su - ,即可获得root权限进行操作。

//方法三: 修改 /etc/passwd 文件,找到如下行,把UID修改为 0 ,如下所示:
testuser:x:500:500:testuser:/home/user/testuser:/bin/bash
//修改后如下
testuser:x:0:500:testuser:/home/user/testuser:/bin/bash
//保存,用testuser账户登录后,直接获取的就是root帐号的权限。
//创建admin用户并获取sudo权限
//创建用户属组
# groupadd operation
//查看验证
# tail -n 5 /etc/group
//创建用户admin 指定组 operation 指定附加组 root 指定家目录
# useradd -g operation -G root -d /home/user/admin admin
//修改admin目录权限
# chmod -R 766 /home/user/admin
//修改admin用户密码
# passwd admin
//修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,强制保存退出,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
admin	ALL=(ALL)	ALL

//admin用户如需修改没有权限的文件需要在命令前添加sudo,如
$ sudo touch text.txt

Linux用户的家目录——经典干货

使用过Linux的伙伴儿们都知道Linux为每个用户都提供对应的家目录,路径为 /home/用户名(管理员不同,他的家目录是/root),并且家目录下附送文件(文件夹)若干。

张伙伴儿问:如何查看家目录?

登录后进入终端,直接输入pwd命令“显示当前路径”,显示的路径就是用户的家目录。

王伙伴儿问:如何查看家目录下有哪些文件(文件夹)?

当然是Linux下最常用的命令ls啦。

Desktop Document … …都是蓝色的,都是文件夹。

李伙伴儿问:家目录下只有这些默认建立的文件夹吗?

当然不是,输入ls -al,a是全部的意思,l是列表的意思,将全部文件(文件夹)按列表的方式显示。

白色的是文件标记字符为- 蓝色的是文件夹标记字符为d (此外l 链接文件,b存储接口设备,c穿行端口设备)

赵伙伴儿问:文件名中有点啥意思?

以点“.”开头的文件(文件夹)为隐藏文件(文件夹),这为什么就是只输入ls时他们没有显示出来。

刘伙伴儿问:一个点 两个点 是啥意思?

一个点“.”表示当前目录,两个点“…”表示上一级目录(此外“~”表示家目录)

伙伴儿们,重要的4个文件.bash_history .bash_logout .bashrc .profile

.bash_history:保存本次开机前执行过的全部命令,(本次开机执行的命令当前不会被记录)

.profile:bash启动时执行此文件,其实启动文档有3个.bash_profile,.bash_login,.profile,优先执行 ~/.bash_profile,找不到时,再执行 ~/.bash_login ,还找不到,才执行 ~/.profile,此文件定义命令的路径 (PATH) 与环境变量,可以添加自定义命令,做启动时的工作。

.bashrc:每次执行命令时,都执行此文件,因此可将命令别名、路径添加自定义命令到此文档。

.bash_logout:注销bash时,执行此文件,可以添加自定义命令做退出时的工作。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 如何在Linux环境为用户添加sudo权限

    sudo的配置文件 sudo默认配置文件是**/etc/sudoers** ,一般使用Linux指定编辑工具visudo ,此工具的好处是可以进行错误检查.在添加规则不符合语法规则时,保存退出时会提示给我们错误信息:配置好后,可以用切换到您授权的普通用户下,通过sudo -l来查看哪些命令是可以执行的或禁止的: /etc/sudoers 文件中每行是一个规则,前面带有#号可以当作是注释的内容,并不执行:如果规则很长,可以写在多列上,可以用\号来续行. /etc/sudoers 的规则可分为两类:

  • Linux中创建新用户并赋予指定目录的相关权限

    1 创建用户且指定该用户的根路径和密码 useradd -d /home/mydir -m username 这种方式创建的用户可以使用ssh登录,但只有只读权限可以浏览下载部分文件无法写和修改. 建议通过将用户加入一个组来获得指定路径的权限. 2 设置密码 passwd username 3 用户授权 chown -R username: username /home/ mydir chmod 755 /home/mydir 4 将用户加入到组 将一个用户添加到用户组中,尽量不要直接用(除非确

  • linux中如何添加用户并赋予root权限详解

    一.linux添加用户并赋予root权限 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser eric //添加一个名为eric的用户 #passwd eric//修改密码 Changing password for user eric. New UNIX password: //在这里输入新密码 Retype new UNIX password: //再次输入新密码 passwd: all authentication tokens updated succe

  • linux文件上传,给文件或目录添加apache权限的方法

    在LAMP环境中,测试一个简单的php文件上传功能时,发现/var/log/apache2/error.log中出现如下php警告: 1. [Tue Jan 31 09:40:27 2012] [error] [client 127.0.0.1] PHP Warning: move_uploaded_file(/home/leotody/32883679.jpeg): failed to open stream: Permission denied in /var/www/upload_file

  • 详解Linux添加/删除用户和用户组

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数.废话不多说,下面我们来看一下. 1.建用户: adduser phpq                             //新建phpq用户 passwd phpq                               //给phpq用户设置密码 2.建工作组 groupadd test                          //新建test工作组 3.新建用户同时增加工作组 useradd -g te

  • Linux下SFTP用户权限设置条件及实现命令

    众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成. 如何查看自己服务器上的ssh版本?大家可以尝试以下命令: $ ssh -V 具体实施步骤: 1. 我们需要创建一个用户组,专门用于sftp用户 $ groupadd sftpusers 2. 我们创建一个用户test $ u

  • linux下修改用户的工具介绍第1/2页

    1.chfn 修改用户信息工具: chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的:用法如下: chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ] 最简单的方法是 chfn 用户名 [root@localhost ~]# chfn beinanlinux 注:更改用户beinanlinux的信息: Changing finger i

  • mysql下普通用户备份数据库时无lock tables权限的解决方法

    [root@jb51.net]# mysqldump -u dbuser -ppass db > db.sql mysqldump: Got error: 1044: Access denied for user 'dbuser'@'localhost' to database 'db' when using LOCK TABLES 解决一: 加上-skip-lock-tables选项即可.即: [root@jb51.net]# mysqldump -u dbuser -ppass db --s

  • linux下用time(NULL)函数和localtime()获取当前时间的方法

    time(); 函数 函数原型: time_t time(time_t *timer) 函数用途: 得到机器的日历时间或者设置日历时间 头 文 件: time.h 输入参数: timer=NULL时,得到机器日历时间, =时间数值时 用于设置日历时间; time_t是一个long类型 /* time - 获取计算机系统当前的日历时间(Calender Time) * 处理日期时间的函数都是以本函数的返回值为基础进行运算 * * 函数原型: * #include <time.h> * * tim

  • linux创建用户并指定用户组方式

    目录 linux创建用户并指定用户组 一.查看所有用户 二.添加用户 三.修改用户密码 四.相关命令 linux创建用户,并确定该用户所在组 总结 linux创建用户并指定用户组 一.查看所有用户 cat /etc/passwd 每一行最前边的就是用户名. 关于uid:0 表示管理员(root),1 - 500 表示系统用户,501 - 65535 表示普通用户 cat /etc/group 是用来查看所有用户组的,和查看用户类似 二.添加用户 groupadd zhangsangroup  

  • Linux用户和用户组管理方法介绍

    目录 一.用户账号的管理 1.添加新的用户账号使用useradd命令,其语法如下: 2.删除帐号 3.修改帐号 4.用户口令的管理 二.用户组的管理 1.增加一个新的用户组使用groupadd命令.其格式如下: 2.如果要删除一个已有的用户组,使用groupdel命令,其格式如下: 3.修改用户组的属性使用groupmod命令.其语法如下: 4.如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限. 三.与用户账号有关的系统文件 1./etc/passwd文件,

  • linux禁止普通用户切换至root用户的实例讲解

    在上正文之前,我想先将一些基础的linux用户以及用户组的相关命令: 1.添加用户 useradd [-g group] [-d user_home_directory] [-p "your password"] Username -g 表示设置新增用户所属用户组 -d 表示设置新增用户的主目录 -p 表示设置新增用户的登录密码 还有其他的选项可用useradd –h去查看 举例: <span style="font-size:18px;">userad

  • Linux下将Python的Django项目部署到Apache服务器

    这几天花了点时间,将把django开发好的web项目部署到Apache上,参考了官方的一些文档和互联网上的文档,还是花了比较多的时间,这里把配置的过程说一下. 方便有需要的朋友,可以参考,少走弯路! 1. django项目部署环境说明 操作系统 : Red Hat Enterprise Linux Server release 5.3 (Tikanga) x86_64 apache版本 : httpd-2.2.3-22.el5 mod_wsgi版本 : mod_wsgi-3.2-1.el5 fe

随机推荐

其他