Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明From:http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html鸟哥官网Linux帐号管理与ACL权限设定:http://linux.vbird.org/linux_basic/0410accountmanager.php鸟哥官网(简体中文):http://cn.linux.vbird.org/linux_ba…

From:http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html
鸟哥官网 Linux 帐号管理与 ACL 权限设定:http://linux.vbird.org/linux_basic/0410accountmanager.php
鸟哥官网(简体中文):http://cn.linux.vbird.org/linux_basic/linux_basic.php
Linux 中将用户添加到组的指令:https://cnzhx.net/blog/linux-add-user-to-group/

1、Linux 单用户多任务,多用户多任务概念

Linux 是一个多用户、多任务的操作系统;单用户多任务、多用户多任务 概念;

  • Linux 的 单用户、多任务:比如:以 beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan 用户登录时,执行了gedit 、xmms以及msn等,当然还有输入法fcitx ;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;
  • Linux 的 多用户、多任务:上面除了 beinan 这个用户,可能还有其它的用户远程登录过来,也能做其它的工作。这就是多用户,很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说;比如:在服务器上面有 FTP 用户、系统管理员、web 用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma 或Yuking 兄在管理他们的主页系统和FTP ;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody 用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样

用户的角色区分:用户在系统中是分角色的,在 Linux 系统中,由于角色不同,权限和所完成的任务也不同;用户的角色是通过 UID 和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;

  • root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
  • 虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如 bin、daemon、adm、ftp、mail 等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
  • 普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;

多用户操作系统的安全

  • 多用户系统对系统管理更为方便、更为安全。比如 beinan 用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有beinan一个用户可读可写可编辑就行了,这样一来只有beinan一个用户可以对其私有文件进行操作,Linux 在多用户下表现最佳,Linux 能很好的保护每个用户的安全,从服务器角度来说,多用户的下的系统安全性也是最为重要的,常用的 Windows 操作系统在系纺权限管理方面根本没法和 Linux 或 Unix 类系统相比。

2、用户 (user)和 用户组(group)概念

用户 ( user )

Linux 是多用户操作系统,所以可以在 Linux 系统中建若干用户(user)。比如:我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;

当然用户(user)的概念理解还不仅仅于此,在 Linux 系统中还有一些用户是用来完成特定任务的,比如 nobody 和 ftp 等,我们访问 LinuxSir.Org 的网页程序,就是 nobody 用户;我们匿名访问 ftp 时,会用到用户 ftp 或 nobody ;

如果您想了解 Linux 系统的一些帐号,请查看文件:/etc/passwd

用户组 ( group )

用户组(group)就是具有相同特征的用户(user)的集合体;比如:有时要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时就需要用户组,把用户都定义到同一用户组,通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限。

用户用户组 的对应关系

  • 一对一:某个用户可以是某个组的唯一成员;
  • 多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
  • 一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
  • 多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;

实际用户有效用户 区别

Unix系统通过进程的有效用户ID和有效用户组ID来决定进程对系统资源的访问权限。

Unix高级编程第八章提到实际用户和有效用户,那么这两个用户到底是什么,它们之间有什么区别呢?

实际用户 和 有效用户 区别

  • 实际用户ID( 实际组ID ):标识当前用户(所属组)是谁,当用户登陆时取自口令文件。即标识我是谁。也就是登录用户的 uid 和 gid。比如我的Linux以king用户登录,在Linux运行的所有的命令的实际用户ID都是king的uid,实际用户组ID都是king的gid(可以用id命令查看)
  • 有效用户ID( 有效组ID ):用来决定我们(当前进程)对资源的访问权限或者对文件的访问权(即实际该进程是以那个用户运行的)

一般情况下,有效用户 ID 等于实际用户ID,有效用户组ID等于实际用户组ID。当设置-用户-ID(SUID)位设置,则有效用户ID等于文件的所有者的uid,而不是实际用户ID;同样,如果设置了设置-用户组-ID(SGID)位,则有效用户组ID等于文件所有者的gid,而不是实际用户组ID。

一个测试验证程序

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

这个程序非常简单没有什么好说的。编译这个程序生成 test 程序

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

通过 id 命令看到当前登录用户为 root,uid=0,gid=0。通过 ls 命令可以看出 test 程序没有设置SUID 和 SGID,所有者是 root,所有组也是 root。
执行 test 发现有效用户ID等于实际用户ID(0),有效用户组ID等于实际用户组ID(0)。
你可能注意到 test 的所有者root,组也是 root,和实际用户,实际用户组是一样的。
下一步我们修改一下test所有者和组,再看结果。

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

发现结果和上面一样,test 进程的有效用户ID等于实际用户ID(0),有效用户组ID等于实际用户组ID(0)。下面给 test 程序设置 SUID

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

发现设置 test 程序的 SUID 位之后,test 进程的有效用户ID等于文件所有者的 UID( gkh的uid为500),有效用户组ID还是等于实际用户组ID(0)。这样程序就可以访问只有 gkh 才能访问的资源了

linux 特殊权限 SUID、SGID、SBIT

先看看下面两个的权限是什么

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

非常奇怪,/tmp 目录和 passwd 文件的权限怎么怪怪的,怎么有 s 和 t 权限。

SUID 权限

s 出现在 “文件拥有者的 x 权限上时,如上面看到的 /usr/bin/passwd 这个文件的权限是 -rwsr-xr-x,此时就被称为 SET UID 简称 SUID。

SUID 对于一个文件有什么限制和功能呢?

1.  SUID权限仅对二进制可执行文件有效
2.  执行者对于该文件具有x的权限
3.  本权限仅在执行该文件的过程中有效
4.  执行者将具有该文件拥有者的权限

例如:普通用户用 passwd 修改自己的命令,实际上最终更改的是 /etc/passwd 文件。此文件时用户管理配置文件,只有 root 权限才能更改

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

既然是 root 用户才拥有此权限,为什么我们可以通过 passwd 命令来修改密码呢,那这就要归功于 passwd 设置了 suid 权限位了

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

此时普通用户通过执行 passwd 命令,临时拥有 root 权限,间接的修改 /etc/passwd,以达到修改自己密码的权限

SGID 权限

当 s 出现在 ” 目录或文件所属群的x权限 ” 上时,此时就称为 SET GID,简称 SGID。
那 SGID 对文件和目录分部有哪些功能呢?

SGID 对 目录

1.  使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录
2.  使用者在此目录下的群组将会变成该目录的群组
3.  若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同

SGID 对 文件

1.  SGID 对二进制可执行文件有效
2.  程序执行者对于该文件来说,需具备 x 的权限
3.  执行者在执行的过程中,将会获得该文件群组的支援(用于改文件群组的权限)

SBIT 权限

当 s 出现在目录其他用户的x权限上时,此时就称为 Sticky Bit 简称SBIT。
那 SBIT 有哪些限制和作用呢?

1.  仅对目录有效,对文件无效
2.  当使用者在该目录下建立文件或目录时(有权限的情况下),仅自己与 root 才有权力删除新建的目录或文件

我们知道 /tmp 目录是这样的权限。

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

现在我们来验证下,先用 root 账号在 tmp 文件中创建一个文件 test,然后用 openstack (其他账号) 进入该目录,删除 test 文件,看看发生什么情况

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

我们看到这样是不能删除文件的。因为 /temp 目录有 SBIT 权限

设置 SUID、SGID、SBIT

操作这些标志与操作文件权限的命令是一样的,都是 chmod。 有两种方法来操作

方法 1:符号类型改变权限(文字法:SUID: u+s ,SGID: g+s,SBIT: o+t )

chmod u+s testbin    // 为testbin文件加上 setuid 标志.
chmod g+s testdir    // 为testdir目录加上 setgid 标志
chmod o+t testdir    // 为testdir目录加上 sticky 标志

方法 2:数字类型改变档案权限

数字法:将原来的三位数扩展为四位数即可,SUID为4,SGID为2,SBIT为1,把它们放在权限数字的最开头。
例如:设置 SUID 可以写成4777,设置 SGID 可以写成,2777
        setuid 位, 如果该位为1, 则表示设置 setuid 4755
        setgid 位, 如果该位为1, 则表示设置 setgid 2755
        sticky 位, 如果该位为1, 则表示设置 sticky 1755

设置完这些标志后,可以用 ls -l 来查看。
rwsrw-r–      表示有 setuid 标志
rwxrwsrw-      表示有 setgid 标志
rwxrw-rwt     表示有 sticky 标志

3、管理用户(user)和用户组(group)相关命令

su、su -、sudo、visudo、sudoedit

su :切换用户(su 和 su – 这两个切换用户命令是有区别的。)

  • su :是用来切换用户,只输入su 后面不加账户名称时,系统默认切换到 root 账户。仅仅只是切换 root 身份,但 Shell 环境仍然是普通用户的 Shell。执行 pwd 命令发现工作目录仍然是普通用户的工作目录
  • su – :申请切换到 root 用户,需要 root 用户密码。用户 和 Shell 环境一起切换成 root 身份。执行 pwd 命令可以发现工作目录变成 root 的工作目录。要从当前用户切换到其它用户,推荐使用 su – 命令,这样连 shell 环境也切换了。有些 Linu x发行版默认没有设置 root 用户的密码,需要先使用 sudo passwd root 设置 root 用户密码。示例:su – root  或者  su –
  • echo $PATH 命令看一下 su 和 su – 环境变量也不一样。

sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作。默认的安全策略记录在 /etc/sudoers 文件中。而安全策略可能需要用户通过密码来验证他们自己。也就是在用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。

sudo 程序相关文件

/etc/sudoers
/etc/init.d/sudo
/etc/pam.d/sudo
/var/lib/sudo
/usr/share/doc/sudo
/usr/share/lintian/overrides/sudo
/usr/share/bash-completion/completions/sudo
/usr/bin/sudo
/usr/lib/sudo

系统默认创建了一个名为 sudo 的组。只要把用户加入这个组,用户就具有了 sudo 的权限。至于如何把用户加入 sudo 组,您可以直接编辑 /etc/group 文件,当然您得使用一个有 sudo 权限的用户来干这件事:先创建用户并设置密码后,然后在sudo组中加入该用户,多个用户用逗号隔开。

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

添加内容如下:

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

把用户 testuser 添加到了 sudo 组中,所以当用户 testuser 登录后就可以通过 sudo 命令以 root 权限执行命令了!但是,用 testuser 执行 root 权限的命令时会报错,还需要修改文件,解决办法:

1)、切换到 root 用户下
        普通用户切换到root用户下:sudo -i
        root用户切换到普通用户下:su testuser
2)、添加sudo文件的写权限,命令是:
        chmod u+w /etc/sudoers
3)、编辑 sudoers 文件
        vi /etc/sudoers
        找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)

执行 visudo 命令可以编辑 /etc/sudoers
也可以直接用 vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit   注:和 sudo 功能差不多;

sudoers 添加下面四行中任意一条
youuser            ALL=(ALL)                ALL
%youuser           ALL=(ALL)                ALL
youuser            ALL=(ALL)                NOPASSWD: ALL
%youuser           ALL=(ALL)                NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.

4)、撤销sudoers文件写权限,命令:
        chmod u-w /etc/sudoers  这样普通用户就可以使用sudo了。

4、sudo命令的日志
        在 ubuntu 中,sudo 的日志默认被记录在 /var/log/auth.log 文件中。
        当执行 sudo 命令时,相关日志都是会被记录下来的。

sudo 命令帮助:

sudo -l    列出用户的权限

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

管理用户(user)的工具或命令

adduser :添加用户。会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。( 推荐使用 adduser)
useradd :添加用户。需要使用参数指定一些基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定 shell 版本。需要单独设置用户密码、指定家目录、指定shell 等

usermod :修改已经存在用户的信息 
userdel :删除用户
passwd :为用户设置密码
chage :更改用户密码过期信息 
chfn :改变用户备注信息 
chsh :更改登录 shell
usermod :修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等。即更改passwd和shadow文件中用户的相关属性 
pwcov :同步用户从/etc/passwd 到/etc/shadow 
pwck :pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv :pwcov的逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger :查看用户信息工具
id :查看用户的UID、GID及所归属的用户组
chfn :更改用户信息工具

adduser 命令帮助

adduser -h
adduser [–home DIR] [–shell SHELL] [–no-create-home] [–uid ID]
[–firstuid ID] [–lastuid ID] [–gecos GECOS] [–ingroup GROUP | –gid ID]
[–disabled-password] [–disabled-login] [–add_extra_groups] USER
   Add a normal user

adduser –system [–home DIR] [–shell SHELL] [–no-create-home] [–uid ID]
[–gecos GECOS] [–group | –ingroup GROUP | –gid ID] [–disabled-password]
[–disabled-login] [–add_extra_groups] USER
   Add a system user

adduser –group GROUP
addgroup [–gid=GID] GROUP             添加一个用户组  
addgroup –system [–gid=GID] GROUP    添加一个系统组
adduser USER GROUP    添加一个存在的用户到存在的组

通用选项:
  –force-badname       允许添加不匹配 NAME_REGEX 变量的用户名
  -q, –quiet           执行时不显示信息
  -d, –debug           显示更多信息
  -h, –help            帮助
  -v, –version         显示版本号
  -c FILE, –conf=FILE  使用文件作为配置文件

useradd 命令帮助。

在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动生成一个同名同ID(UID=GID)的用户组,即与用户名同名的工作组。

useradd -h

选项:
  -b, --base-dir BASE_DIR       设置基本路径作为用户的登录目录  
  -c, --comment COMMENT         对用户的注释  
  -d, --home-dir HOME_DIR       设置用户的登录目录  
  -D, --defaults                改变设置  
  -e, --expiredate EXPIRE_DATE  新账户的过期日期。设置用户的有效期  
  -f, --inactive INACTIVE       用户过期后,让密码无效  
  -g, --gid GROUP               使用户 “只属于某个组 ” (只能属于一个组)
  -G, --groups GROUPS           新账户的附加组列表。使用户加入某个组(可以属于多个组)  
  -h, --help                    帮助
  -k, --skel SKEL_DIR           使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init             不把用户加入到lastlog文件中  
  -m, --create-home             自动创建登录目录  
  -M, --no-create-home          不自动创建登录目录  
  -N, --no-user-group           不创建同名的组
  -o, --non-unique              允许使用重复的 UID 创建用户
  -p, --password PASSWORD       为新用户使用加密密码  
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL             登录时候的shell  
  -u, --uid UID                 为新用户指定一个UID  
  -U, --user-group              创建与用户同名的组
  -Z, --selinux-user SEUSER     为 SELinux 用户映射使用指定 SEUSER

示例:

// 创建用户 user1 的时候指定其所属工作组 users
useradd -g users user1

// 添加用户 test,并设置密码,不然不能登录的。
useradd test   
passwd test    // 设置用户test 的密码   

//添加 phpq 用户并让用户 “只属于test工作组”。  
注: -g 所属组 -d 家目录 -s 所用的 SHELL
useradd -g test phpq   

useradd 用户名            // 创建一个新用户 
useradd -G 用户组 用户名  // 新建一个用户,同时添加到附加组中 
useradd -u 600 liuyalei   // 创建一个用户liuyalei,指定uid为600
useradd -M /sbin/nologin liuyalei  // 创建 liuyalei 用户,不创建家目录,不允许登录
useradd -e  // 帐号中指日期,日期的指定格式为MM/DD/YY
useradd -g  // grop名称或以数字来作为用户登入起始用户组。

添加用户和组

使用 useradd test123 命令给linux系统添加一个新的用户。
使用 passwd test123 命令给用户“test123”添加密码。输入两次一样的密码即可完成创建。
使用 groupadd groupTest 命令创建用户组。
使用 usermod -G groupTest test123 将已有的用户添加到已有的组中。
使用 cat /etc/group |grep group 命令查看是否将刚才的用户添加到组中。
使用 useradd -g test king 命令将新建的“king”用户添加到已有的“test”组

示例:useradd -c adminadmin -d /home/admin -e 2014-12-12 -g root -G,bin,mail
创建 admi 帐户 
用户信息为 adminadmin
家目录为/home/admin
失效日期为2014年12月12日
指定默认组为root,
附加组为bin,mail

修改用户属性 usermod (user modify) 命令

对于已创建好的用户,可使用 usermod 命令来修改和设置账户的各项属性,包括登录名,主目录,用户组,登录shell等,

命令用法:usermod [option] username

更多参数看帮助文档:man usermod     或者    usermod -h

usermod -h     
Usage: usermod [options] LOGIN

Options:
  -b, --badnames                allow bad names
  -c, --comment COMMENT         new value of the GECOS field
  -d, --home HOME_DIR           new home directory for the user account
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                the user from other groups
  -r, --remove                  remove the user from only the supplemental GROUPS
                                mentioned by the -G option without removing
                                the user from other groups
  -h, --help                    display this help message and exit
  -l, --login NEW_LOGIN         new value of the login name
  -L, --lock                    lock the user account
  -m, --move-home               move contents of the home directory to the
                                new location (use only with -d)
  -o, --non-unique              allow using duplicate (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new password
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             new login shell for the user account
  -u, --uid UID                 new UID for the user account
  -U, --unlock                  unlock the user account
  -v, --add-subuids FIRST-LAST  add range of subordinate uids
  -V, --del-subuids FIRST-LAST  remove range of subordinate uids
  -w, --add-subgids FIRST-LAST  add range of subordinate gids
  -W, --del-subgids FIRST-LAST  remove range of subordinate gids
  -Z, --selinux-user SEUSER     new SELinux user mapping for the user account

(1)改变用户帐户名

命令:usermod -l 新用户名 原用户名

例如,若要将用户 lijie 更名为lijunjie,则操作命令为:
[root@localhost ~]# usermod -l lijunjie lijie
[root@localhost ~]# tail -1 /etc/passwd
lijunjie:x:502:502::/home/lijie:/bin/bash
从输出结果可见,用户名已更改为lijunjie。主目录仍为原来的/home/lijie,
若也要更改为/home/lijunjie,则可通过执行以下命令来实现
[root@localhost ~]# usermod -d /home/lijunjie lijunjie
[root@localhost ~]# tail -1 /etc/passwd
lijunjie:x:502:502::/home/lijunjie:/bin/bash
[root@localhost ~]# mv /home/lijie /home/lijunjie

(2)锁定账户

若要临时禁止用户登录,可将该用户账户锁定。锁定账户可利用-L参数来实现,
命令:usermod -L 要锁定的账户
linux锁定用户,是通过在密码文件shadow的密码字段前加“!”来标识该用户被锁定。

(3)解锁账户

要解锁账户,可以使用带-U参数的usermod命令来实现

修改用户 加入 单个组 和 多个组

usermod 参数 -G 和 -g 的 区别:

// 将 test 用户的登录目录改成/home/test,并加入 test2 组,注意这里是大G。
命令:usermod -d /home/test -G test2 test

注意:将一个用户添加到用户组中,千万不能直接用: usermod -G groupA userName 
这样做会使你离开其他用户组,仅仅做为这个groupA用户组的成员。 
命令:usermod -g 组名 用户名  // 是修改用户所在组,其它组都给删除了。

使用 usermod -G 添加多个组要用”,”号隔开。
命令:usermod -G groupA,groupB,groupC user

如果真要使用 -G 选项追加组,应该加上 -a 选项
(-a 代表 append, 也就是 将自己添加到 用户组groupA 中,而不必离开 其他用户组。 )
命令: usermod -a -G groupA user
示例: usermod -a G dba grid

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

# Linux 把用户加入某个组(不退出当前所属组 同时属于多个组)
usermod -a -G groupname username

gpasswd -a test test2  //将用户test加入到test2组
gpasswd -d test test2  //将用户test从test2组中移出

#查看某用户所属组
groups username

删除用户 userdel

更多选项参看:man userdel  或者  userdel -h

用法:userdel 用户名

示例:userdel test           // 将 test 用户删除
示例:userdel -r liuyalei    // 连同家目录删掉

生产环境中,我们可以通过注视配置文件 /etc/passwd,选择先注销而不删除用户,类似回收站的作用,即使出了问题也能恢复。

将文件夹赋给相应用户以及所在组

给 oinstall 组中的 oracle 相应的拥有者权限
[root@gl oracle]# chown -R oracle:oinstall /data/encryption/  

然后指定相应的用户或组的相应权限
[root@gl oracle]# chmod -R 775 /data/encryption/

查看用户

a),查看当前登录用户
        [root@krlcgcms01 ~]# w
        [root@krlcgcms01 ~]# who
b),查看自己的用户名
        [root@krlcgcms01 ~]# whoami
c),查看单个用户信息
        [root@krlcgcms01 ~]# finger apacheuser
        [root@krlcgcms01 ~]# id apacheuser
d),查看用户登录记录
        [root@krlcgcms01 ~]# last    查看登录成功的用户记录
        [root@krlcgcms01 ~]# lastb   查看登录不成功的用户记录
e),查看所有用户
        [root@krlcgcms01 ~]# cut -d : -f 1 /etc/passwd
        [root@krlcgcms01 ~]# cat /etc/passwd |awk -F \: ‘{print $1}’

查看某个用户所属的组

命令:groups 用户名
示例:[root@xxx~]# groups root
root : root bin daemon sys adm disk wheel
用户 root 属于root bin daemon sys adm disk wheel这7个group 

查看系统中所有组

命令:more /etc/group 

管理 用户密码

用户管理的一项重要内容是用户口令(密码)的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的Shell命令是:passwd [用户名]超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
命令的格式为:passwd 选项 用户名
可使用的选项:

passwd -h
用法: passwd [options] [LOGIN]

选项:
  -a, --all                  报告所有帐户的密码状态。与-S搭配使用,显示所有用户状态
  -d, --delete               删除指定帐户的密码
  -e, --expire               强制使指定帐户的密码过期。
                             这可以强制一个用户下次登录时更改密码。
  -h, --help                 显示此帮助信息并退出
  -k, --keep-tokens          仅在过期时更改密码
  -i, --inactive INACTIVE    密码过期一定天数之后禁用账户。
  -l, --lock                 锁定用户,即禁用账号。此选项通过在密码开头添加一个 ! 实现。
  -n, --mindays MIN_DAYS     多长时间改一次密码
  -q, --quiet                安静模式
  -r, --repository REPOSITORY  更改 REPOSITORY 存储库中的密码
  -R, --root CHROOT_DIR        目录到 chroot 到
  -S, --status                 报告指定帐户的密码状态
  -u, --unlock                 解锁指定用户的密码。此操作将密码改回锁定前的值
  -w, --warndays WARN_DAYS     密码过期之前提前警告的天数
  -x, --maxdays MAX_DAYS       密码到期时仍然有效的最大天数

文件
       /etc/passwd          用户账户信息。
       /etc/shadow          用户账户的密码信息。
       /etc/pam.d/passwd    passwd 的 PAM 配置。

示例

例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******

如果是超级用户,可以用下列形式指定任何用户的口令:
# passwd sam
New password:*******
Re-enter new password:*******

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,
如果两次输入的口令一致,则将这个口令指定给用户;
而超级用户为用户指定口令时,就不需要知道原口令。

为用户指定空口令时,执行下列形式的命令:
# passwd -d sam
此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
# passwd -l sam

锁定 / 解锁账户密码

在linux中,除了用户账户可被锁定外,账户密码也可被锁定,任何一方被锁定后,都将无法登录系统。

只有 root 用户才有权执行该命令,锁定账户密码使用带 -l 参数的 passwd 命令,其用法为:
passwd -l 帐户名
passwd -u 帐户名 #解锁账户密码

查询密码状态

查询当前账户的密码是否被锁定。用法为:passwd -S 账户名
例如
[root@localhost etc]# passwd -S lijunjie
lijunjie LK 2011-03-25 0 99999 7 -1 (密码已被锁定。)
[root@localhost etc]# passwd -u lijunjie      // 解锁用户 lijunjie 的密码 。

[root@localhost etc]# passwd -S lijunjie
lijunjie PS 2011-03-25 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)

删除账户密码

其用法为:passwd -d 帐户名

帐户密码被删除后,将不能登录系统,除非重新设置密码。

管理用户组(group)的工具或命令

groupadd :添加用户组;
groupdel :删除用户组;
groupmod :修改用户组信息 
newgrp :切换到一个新组 
gpasswd  :管理组和组密码的命令。man gpasswd
groups :显示用户所属的用户组
grpck
grpconv :通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv :通过 /etc/group 和 /etc/gshadow 文件内容来同步或创建 /etc/group ,然后删除gshadow文件;  

涉及命令:

  • gpasswd (管理组)
  • groupadd(添加组)
  • groupmod (修改组)
  • groupdel(删除组)  

LINUX 下把一个用户加入多个组 命令:gpasswd -a 用户 组
示例:gpasswd -a user group    // 将 user 用户加入到 group 组中

如果查看 /etc/shadow 或 /etc/passwd 等文件看不出来用户已经加入想要的组时,此时可以用 id 命令 来查看

用户 ruan 隶属于 ruan 组,id为 500,现在想要同时加入组 ruanrongjian 中
[root@diandianrong ~]# gpasswd -a rong ruanrongjian
Adding user rong to group ruanrongjian
先切换到ruan用户,然后用ID查看
[root@diandianrong ~]# su ruan
[ruan@diandianrong root]$ id
uid=500(ruan) gid=500(ruan) groups=500(ruan),501(ruanrongjian) context=user_u:system_r:unconfined_t
当然直接用id ruan 也是可以的

[ruan@diandianrong root]$ id ruan
uid=500(ruan) gid=500(ruan) groups=500(ruan),501(ruanrongjian)
此时group加有两个,组ruan是在用户被创建时自发产生的,ruanrongjian则是后面手动添加进去的。

另一种实现方法:

[root@diandianrong ~]# usermod -a -G rong ruanrongjian   // 必须加上 -a 选项才是追加组,否则是清除原来的组,只加入组
[root@diandianrong ~]# id rong
uid=502(rong) gid=502(rong) groups=502(rong),501(ruanrongjian)

添加、删除用户和组

groupadd 命令

root@kali:~# groupadd -h
用法:groupadd [选项] 组

选项:
  -f, --force           如果组已经存在则成功退出
                        并且如果 GID 已经存在则取消 -g
  -g, --gid GID                 为新组使用 GID
  -h, --help                    显示此帮助信息并推出
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -o, --non-unique              允许创建有重复 GID 的组
  -p, --password PASSWORD       为新组使用此加密过的密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录

可以使用的选项有:
    -g GID 指定新用户组的组标识号(GID)。
    -o 一般与 -g 选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。 

# groupadd group1 
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。 
#groupadd -g 101 group2 
此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。 

删除用户组

删除用户组使用 groupdel 命令来实现,命令用法:groupdel 用户组    
示例:groupdel liuyalei  //删除liuyalei组
在删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应先删除引用该私有用户组的账户,然后再删除用户组。

[root@localhost ~]# groupdel teacher
groupdel: cannot remove the primary group of user ‘zhangjie’
[root@localhost ~]# userdel -r zhangjie
[root@localhost ~]# groupdel teacher
[root@localhost ~]# grep teacher /etc/group #没有输出,说明teacher用户组已经不存在,删除成功

一般直接通过usermod命令来更改用户的相关属性(包括用户组属性)

groupadd test            //增加一个test组
groupmod -n test2 test   //将test组的名子改成test2
groupdel test2           //删除组 test2

修改组 

命令:groupmod 选项 用户组 
更多参数看帮助:man groupmod    或者    groupmod -h
常用的选项有:
    -g GID 为用户组指定新的组标识号。
    -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
    -n新用户组 将用户组的名字改为新名字

例如:

groupmod -g 102 group2     // 将组group2的组标识号修改为102。 
groupmod -g 10000 -n group3 group2    // 将组group2的标识号改为10000,组名修改为group3。 

修改用户组属性

  用户组创建后,根据需要可对用户组的相关属性进行修改。对用户组属性的修改,主要是修改用户组的名称和用户组的GID值。

(1)改变用户组的名称(重命名组名

若要对用户组进行重命名,可使用带-n参数的groupmod命令来实现,
用法:groupmod -n 新用户组名 原用户组名
对于用户组改名,不会改变其GID的值。
比如,若要将student用户组更名为teacher用户组,则操作命令为:
[root@localhost ~]# tail -3 /etc/group
student:x:501:
lijie:x:502:
vodup:x:503:
[root@localhost ~]# groupmod -n teacher student
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:501:

(2)重设用户组的GID

用户组的GID值可以重新进行设置修改,但不能与已有用户组的GID值重复。对GID进行修改,不会改变用户名的名称。
要修改用户组的GID,可使用带-g参数的groupmod命令,其用法为:groupmod -g new_GID 用户组名称

例如,若要将teacher组的GID更改为504,则操作命令为:
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:501:
[root@localhost ~]# groupmod -g 504 teacher
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:504:

添加用户到指定的组/从指定的组中移除用户

gpasswd命令是 Linux 下工作组文件/etc/group 和 /etc/gshadow 管理工具。主要功能:管理组。

root@kali:~# gpasswd -h
用法:gpasswd [选项] 组

选项:
  -a, –add USER                向组 GROUP 中添加用户 USER
  -d, –delete USER             从组 GROUP 中添加或删除用户
  -h, –help                    显示此帮助信息并推出
  -Q, –root CHROOT_DIR         要 chroot 进的目录
  -r, –remove-password         移除组 GROUP 的密码
  -R, –restrict                向其成员限制访问组 GROUP
  -M, –members USER,…        设置组 GROUP 的成员列表
  -A, –administrators ADMIN,…        设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。

可以将用户添加到指定的组,使其成为该组的成员。命令:gpasswd -a 用户账户 用户组名

若要从用户组中移除某用户,命令:gpasswd -d 用户账户 用户组名

例如,现在将上面创建的lijunjie用户添加到vodup用户组中

[root@localhost ~]# groups lijunjie
lijunjie : lijie
[root@localhost ~]# gpasswd -a lijunjie vodup  #添加用户到指定的用户组
Adding user lijunjie to group vodup
[root@localhost ~]# groups lijunjie
lijunjie : lijie vodup
[root@localhost ~]# gpasswd -d lijunjie vodup  #从指定的用户组中移除用户
Removing user lijunjie from group vodup
[root@localhost ~]# groups lijunjie   #查看用户所属的组
lijunjie : lijie

设置 用户组管理员

添加用户到组和从组中移除某用户,除了 root 用户可以执行该操作外,用户组管理员也可以执行该操作。

将某用户指派为某个用户组的管理员命令:gpasswd -A 用户账户 要管理的用户组
命令功能:将指定的用户设置为指定用户组的用户管理员。用户管理员只能对授权的用户组进行用户管理(添加用户到组或从组中删除用户),无权对其他用户组进行管理。

示例

[root@localhost ~]# gpasswd -A lijunjie vodup
[root@localhost ~]# useradd fen
[lijunjie@localhost ~]# gpasswd -a fen vodup
Adding user fen to group vodup
[lijunjie@localhost ~]# groups fen
fen : fen vodup
[lijunjie@localhost ~]# gpasswd -d fen vodup
Removing user fen from group vodup
[lijunjie@localhost root]$ gpasswd -d fen fen  #试图将fen用户从fen用户组中移除
gpasswd: Permission denied.                    #操作被拒绝,说明无权对其他用户组进行管理

切换用户所属的组

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令 newgrp 切换到其他用户组,这个命令的参数就是目的用户组。

例如: $ newgrp root 

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

查看组

a),查看当前登录用户所在的组 groups,查看apacheuser所在组groups apacheuser
b),查看所有组 cat /etc/group
c),有的linux系统没有/etc/group文件的,这个时候看下面的这个方法
cat /etc/passwd |awk -F [:] ‘{print $4}’ |sort|uniq | getent group |awk -F [:] ‘{print $1}’
这里用到一个命令是getent,可以通过组ID来查找组信息,如果这个命令没有的话,那就很难查找,系统中所有的组了.

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

查看用户所属的组使用命令: $ groups user
或者查看文件: $ cat /etc/group
查看一个用户的UID和GID: $ id user 或者 cat /etc/passwd
finger命令 ——可以查看用户的主目录、启动shell、用户名、地址、电话等信息
例:finger root

/etc/skel 目录

/etc/skel 目录一般是存放用户启动文件的目录,这个目录是由 root 权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel 目录下的文件都是隐藏文件,也就是类似 .file 格式的;我们可通过修改、添加、删除 /etc/skel 目录下的文件,来为用户提供一个统一、标准的、默认的用户环境;

[root@localhost beinan]# ls -la /etc/skel/
总用量 92
drwxr-xr-x    3 root root  4096  8月 11 23:32 .
drwxr-xr-x  115 root root 12288 10月 14 13:44 ..
-rw-r--r--    1 root root    24  5月 11 00:15 .bash_logout
-rw-r--r--    1 root root   191  5月 11 00:15 .bash_profile
-rw-r--r--    1 root root   124  5月 11 00:15 .bashrc
-rw-r--r--    1 root root  5619 2005-03-08  .canna
-rw-r--r--    1 root root   438  5月 18 15:23 .emacs
-rw-r--r--    1 root root   120  5月 23 05:18 .gtkrc
drwxr-xr-x    3 root root  4096  8月 11 23:16 .kde
-rw-r--r--    1 root root   658 2005-01-17  .zshrc 

/etc/skel 目录下的文件,一般是用 useradd 和 adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把 /etc/skel 下的文件复制到用户的家目录下,然后要用 chown 来改变新用户家目录的属主;

/etc/login.defs 配置文件

/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID 和 GID的范围;用户的期限等等,这个文件是可以通过root来定义的;

比如 Fedora 的 /etc/logins.defs 文件内容;

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail  注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999   注:用户的密码不过期最多的天数;
PASS_MIN_DAYS   0       注:密码修改之间最小的天数;
PASS_MIN_LEN    5       注:密码最小长度;
PASS_WARN_AGE   7       注:

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500  注:最小UID为500 ,也就是说添加用户时,UID 是从500开始的;
UID_MAX                 60000   注:最大UID为60000;

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500   注:GID 是从500开始;
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME     yes   注:是否创用户家目录,要求创建;

/etc/default/useradd 文件

通过 useradd 添加用户时的规则文件;

# useradd defaults file
GROUP=100
HOME=/home  注:把用户的家目录建在/home中;
INACTIVE=-1  注:是否启用帐号过期停权,-1表示不启用;
EXPIRE=   注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash  注:所用SHELL的类型;
SKEL=/etc/skel   注: 默认添加用户的目录默认文件存放位置;
                也就是说,当用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;

4、用户管理、密码、组密码

在 linux 中为了保障系统用户的安全信息,所以将用户帐号,用户密码,用户组信息和用户组密码分开存放在不同的配置文件中的。

  1. 用户名配置文件:/etc/passwd
  2. 用户密码配置文件:/etc/shadow
  3. 用户组配置文件:/etc/group
  4. 用户组密码配置文件:/etc/gshadow

把这四个文件弄清楚,添加、删除用户和用户组可以通过修改这4个文件来完成。

用户分类

linux 用户有三类:根用户(root用户,命令提示符介面显示#)、普通用户 (命令提示符显介面示#)、虚拟用户。

  1. root用户:根用户也就是超级用户,拥有最高权限任务,任何文件权限对根用户无效,用户UID为0
  2. 普通用户:可以登陆系统,只能操作自己拥有文件权限的文件。是由系统管理员创建的。用户UID从501开始(500~60000 之间)
  3. 虚拟用户:又称伪用户,不具备系统登陆的权限,一般由系统创建或某些程序安装后创建,

用户名文件 /etc/passwd 文件结构

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

以上 /etc/passwd 文件的属性分解如下,共七个属性(每个属性用分号分割)

/etc/passwd 每行7个字段:账号:密码:UID:GID:账号信息说明:家目录:Shell

示例:smbuser:x:500:500::/home/smbuser:/bin/bash

对应字段:用户名:加密口令:UID:用户所属组的GID:个人信息描述:用户主目录:登陆shell

  • 1.用户名  :由字母、数字组成。必须以字母开头,区分大小写,长度不超过8个字符
  • 2.加密口令:在早期的 UNIX 版本中,用户和密码放在一起的,用户名在第一个选项位,密码在第二个选项位,后来出于账户安全的考虑,对此进行了改进,将密码另外存放,并用一个特殊字符X占用第二个密码选项位。因为 passwd 文件对所有用户都是可读的,所以为了安全起见,系统将加密口令存放于 /etc/shadow 文件中且只有超级用户才有读取权限。
  • 3.用户 UID: 标识用户的数字(root:UID为0  ,普通用户UID为500-60000之间 )
    管理员:0。其中0表示系统管理员ROOT账户。 
    一般用户1-65535(一般用户又分系统用户和普通用户)
    系统用户:1-499 (系统默认创建)。用于系统内置账户,如 nobody,bin等    
    普通用户:500-65535 (管理员创建)。500-65535普通系统本地账户,系统安装完成后,由ROOT用户创建分配给有需要接入Linux主机的使用者使用。如果因为需要,可以将普通系统本地账户的UID改为0,就样该用户就有了ROOT用户一样的权限了,但不建议这样设置。 
  • 4.用户所属组 GID:默认刚创建,主GID和用户UID相同,是主用户组,可以更改(一般组分为主用户组和附加组)用户组的 GID,用户组名保存在 /etc/group 文件中,有时为了便于权限的分配,可以将多个用户加入到同一个用户组中,对用户组分配相应权限,这样该用户组中的所有用户都同时获得了相同的权限,可以简化对每一个用户来分配权限。将用户加入其它用户组,可以在 /etc/group 文件中的用户组名后批量添加相应的用户名称便可,不需要在此进行修改。
  • 5.用户的全名信息,或描述等内容
  • 6.用户主目录:   创建普通系统帐户时会默认创建一个和用户名相同的帐户,用户登陆后默认所处的目录一般为~([root@centso-test ~])
  • 7.用户登陆后使用的 shell。虚拟用户一般该属性为空或者是 /sbin/nologin     /bin/fase 表示禁止用户登陆

用户密码文件 /etc/shadow 文件结构

(以:作为分隔符,一共有九栏)

[root@serverln tmp]# cat /etc/shadow
root:$6$hgwagXkBWGArriiQ$sajFOnZmrW2x0S6dipxvXXAJNfB1/BC0OvzjqeGZqQBVbng3aD9/CeD2j3YOnd6g2NJfPnk7zI1.9xqQ5aO6d0:16381:0:99999:7:::
bin:*:15980:0:99999:7:::
jacob:!!:16382:0:99999:7:::

字段说明:

帐号名称:密码:最近更改密码日期:密码不可被更改日期:密码需重设定日期:密码到期警告天数:密码过期后能使用的天数:帐号失效的日期:保留

  • 1 用户名
  • 2 经过加密码后的密码信息。这个才是该账号的真正的密码,不过这个密码已经加密过了,但是有些黑客还是能够解密的。所以为了安全,该文件属性设置为600,只允许root读写。
  • 3 最近改动密码的日期,该日期参数是以1970年1月1日作为第1天而累加计算出的
  • 4 密码不可改动的天数,由选项3中的日期为第1天,如果该选项参数为0,表示随时可以更改
  • 5 密码需要改动的天数,即强制用户每多少天修改密码。
  • 6 密码快要到期的前多少天提示警告信息
  • 7 密码到期后可以宽限的天数。密码过期后,在宽限天数内可以更改密码并登陆重新激活账号
  • 8 账号失效日期,在一些收费使用系统的应用中,可以设置此选项内容.
  • 9 预留选项,未使用

用户组文件 /etc/group

/etc/group 共4个字段    群组名:群组密码:GID:群组支持的群组名称(即可以加入多个群组)

[root@localhost ~]# cat /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
……

用户组的选项内容只有四个,其选项意义如下:

  1. 用户组名
  2. 用户组密码,同样经改进后,用户组密码不再保存在用户组名文件中,另存放在/etc/gshadow文件中,此选项使用字符x占位
  3. 用户组GID
  4. 用户组中包含的用户名,默认只含有同用户组名的用户,如需往用户组中添加多个用户名,可以在此选项中添加,并用逗号隔开

[root@localhost ~]# groups
root bin daemon sys adm disk wheel
[root@localhost ~]# 
以上操作,表示用户名root同时属于root,bin,daemon,sys,adm,disk,wheel等用户组中
或者 
[root@localhost ~]# groups root

用户组密码文件 /etc/gshadow

组密码文件示例:

[root@localhost etc]# cat gshadow
root:::root
bin:::root,bin,daemon
daemon:::root,bin,daemon
……
cisco:!::
huawei:!::
named:!::

用户组密码文件中的内容和用户组名文件中的内容几乎一样,因为一般很少用到需要对用户组设置密码等的操作

  1. 组名称
  2. 密码栏,同样的,开头为 ! 表示无合法密码,所以无群组管理员
  3. 群组管理员的帐号 (相关资讯在 gpasswd 中介绍)
  4. 该群组的所属帐号 (与 /etc/group 内容相同!)

5、文件、目录 的 权限

​鸟哥 Linux 的文件权限与目录配置:http://linux.vbird.org/linux_basic/0210filepermission.php
Linux中的特殊权限粘滞位(sticky bit)详解:http://www.cnblogs.com/MrListening/p/5813281.html

在Linux系统中,对每个文件和目录都有定义相应的属主和属组,以用来管理用户对文件和目录的访问和操作。。

  • chown [用户名][文件或目录] 更改文件或目录的所有者(用户),即属主
  • chgrp [用户组名][文件或目录] 更改文件或目录所属的用户组,即属组。也可以使用 “chown 用户名:用户组名(用户名.用户组名) 文件或目录” 直接对文件或目录的用户和用户组进行修改
  • chmod [ugoa][+-=][rwx] 文件或目录名,更改用户和用户组对目录或文件的访问权限,其简化操作为 chmod 755 /home/user01/ = chmod u=rwx /home/user01|chmdo g=rw /home/user01|chmod o=rw /home/user01

[root@localhost home]# ls -l
total 32
drwxr-xr-x. 30 cisco cisco 4096 Sep 10 03:52 cisco
drwx——. 4 huawei huawei 4096 Sep 8 18:54 huawei
drwx——. 2 root root 16384 Sep 3 05:17 lost+found
drwxr-xr-x. 4 nobody nobody 4096 Sep 9 20:39 samba
drwxr-xr-x. 2 root root 4096 Sep 9 01:24 share
[root@localhost home]# 

1. 第一个选项代表这个档案是‘目录、档案或连结档等等’:
    当为[ d ]则是目录,
    当为[ – ]则是档案,
    若是[ l ]则表示为链接文件(link file),目录的快捷方式
    若是[ b ]则表示为装置档里面的可供储存的周边设备(可随机存取装置);
    若是[ c ]则表示为装置档里面的序列埠设备,例如键盘、滑鼠(一次性读取装置)。 
2.表示快捷方式指向本文件或目录的数,最少是一个
3.目录或文件的所有者用户
4.目录或文件的所有组
5.目录或文件的大小,目录大小都为4096,文件大小为实际大小
6.目录或文件的最近修改日期
7.目录或文件的名称

6、综合案例

【题1.1】建立两个用户组group1和group2,以及三个用户dennis、daniel、abigale,并且将前2个用户分配在group1用户组下,后一个分配在group2用户组下

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

【题1.2】以dennis用户登录,创建一个Hello.java文件
【题1.3】以daniel用户登录,观察是否可以访问/home/dennis目录以及读或写其创建的Hello.java文件
【题1.4】以dennis用户登录,修改目录/home/dennis及Hello.java文件的读写权限(更正:修改目录权限的时候,应该使用770,而不是760,否则权限不足)

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

【题1.5】重复【题1.3】
【题1.6】改变abigale的用户组由group2变为group1

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

然后,可以使用cat /etc/passwd查看并确定

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

今天的文章Linux 用户 和 用户组 管理 (添加、删除、修改)及说明分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/5074.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注