一、添加用户和删除用户
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
# useradd test 创建帐号
# New password: **** 这里没有*号,为了保密输入密码的时候是看不见的。
# Retype new password:***** 再次输入新密码,要跟上面的密码输入一致。
当然这样添加用户,只能得到一个账户,但是在建立账户的时候,还可以加上一些选项参数:
例如:useradd 选项 用户名
选项:-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组
-G 用户组,用户组 指定用户所属的附加组
-s Shell文件 指定用户的登录Shell
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
# useradd -s /sbin/nologin test
可以在建立帐号的同时指定这个帐号的shell登录口令的解析,否则就会默认为/bin/bash的解析。
# useradd -d /home/test test
可以指定新建帐号的主目录,同时这条命令也建立了用户组。 在某些linux系统下在建立帐号的同时,其实已经默认建立用户组了,而用户组的名称跟用户名一样。
# useradd -g test -G systemone,root test
而这条命令的意思就是新建了一个用户test,并同时指定用户组为test并同时属于systemone组和root组,(前提是已经有test的这个组存在,否则会报错。)
# useradd -G systemone,root test
新建用户test并指定同属于组systemone和root组。其中systemone和root组就属于附加组。用到了上面的 -G 的选项参数。
# cat /etc/shadow 查看用户名
accountone:!!:16750:0:99999:7:::
1.“accountone”用户名
2.“!!”密码
3.“16750”最后一次修改时间,linux这里以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为16750了
4.“0”最小时间间隔,这个字段代表要经过多久才可以更改密码。如果是“0”表密码可以随时更改。
5.“99999”最大时间间隔,由于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个帐号将暂时失效。而上面的 99999,表示密码不需要重新输入,最好设定一段时间修改密码,确保系统安全。.
6.“7”密码变更期限快到前的警告期,当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。默认的是七天。
7.帐号失效期,如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重新启用,那么这个帐号将暂时失效。
8.帐号取消日期,这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。
9.保留,最后一个字段是保留的,看以后有没有新功能加入。
删除用户
# userdel username 删除用户
# userdel -r username 连同用户的主文件目录一起删除
二、用户口令
指定和修改用户口令的Shell命令是passwd,
用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
# passwd 选项 用户名
选项:-l 禁用账户即锁定口令
-u 口令解锁
-d 使帐号无口令
-f 强迫用户下次登录时修改口令
不加选项后面只跟用户名表示修改用户名的当前密码
这是在root超级用户下更改test的密码
# passwd -d test 为test指定空口令
# passwd -l test 锁定test的账户为不能登录状态
# passwd -u test 解锁test的账户
# passwd -f test 强迫用户下次登录的时候修改密码
【以上是常用的密码口令管理。】
# cat /etc/passwd 查看密码文件,详解见下文。
三、添加组和删除组以及修改用户组的属性
添加组:
# groupadd 选项 组名
选项:-g GID 指定新建立的用户组的标识号
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
# groupadd -g 100 best 建立用户组best并指定用户组ID为100
这样用户就添加好了,那么如何给用户相应的权限呢,除了组有相对应的权限以外,还可以这样来实现:
删除组:
# groupdel best 删除用户组best
修改用户组属性:
# groupmod -g 100 best 修改用户组的标识号为100
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
#groupmod -n test best 将组test的组名修改为best
#groupmod -g 100 -n test best 将组best的标识号修改为100,并且组名将由test更改为best
# cat /etc/group 查看用户组
test:x:502:
1.表示用户名
2.密码占位符
3.组标识号
四、用户组间的切换
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组
#newgrp root 从当前组切换到root组
五、权限分配
如果要给普通的用户root权限,只用建立好用户以后修改/etc/passwd即可,把用户名和组的ID都修改为0就可以了,如下:
#vi /etc/passwd 查看密码文本
test:x:0:0::/home/zt1903:/bin/bash
这一条代表了目前用户的权限,而用冒号“:”分开一共有七段,而各段代表的意义如下:
1.用户名
2.密码(已经加密的密码)
3.UID (用户标识)
4.GID (用户组标识)
5.用户全名或者本地帐号
6.开始的路径(目录)
7.登录这个帐号所使用的shell,换句话说就是对登录命令进行解析的工具
1.伪用户与系统和程序服务相关
bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户。
mail、news、games、apache、ftp、mysql及sshd等,与linux系统的进程相关。
2. 伪用户通常不需要或无法登录系统
3. 可以没有宿主目录
六、结合现实总结
1.现实中我们通常需要建立一个账户,以便可以登录使用。
# useradd -g root test 建立账户test并指定用户组为root
# chown -R test.test/home/test 指定/home/test下面的所有目录和文件都属于test的用户和test的用户组
(当前你建立账户的时候,系统其实已经默认在/home下面建立test的主目录了。所以主目录不用建立,但是为了以后方便并确保对自己的主目录拥有绝对权限。所以还应该指定主目录下的所有目录还是文件的用户和用户组都是自己的。)
2.还有另一种建立的方式
# useradd -s /sbin/nologin test 建立用户tset并指定口令解析shell为/sbin/nologin
# mkdir /usr/local/test 建立用户test的主目录为/usr/local/test
# chown -R test.test/usr/local/test 指定/usr/local/test下面的所有目录和文件都属于test的用户和test的用户组