0221自学Linux_bash全局配置+个人配置+命令(useradd,finger,groupadd相关,chage,chown,chmod,umask)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0221自学Linux_bash全局配置+个人配置+命令(useradd,finger,groupadd相关,chage,chown,chmod,umask)相关的知识,希望对你有一定的参考价值。

13

一、useradd
要牢牢掌握这个

useradd [options] USERNAME(登录名)

-u:指定UID

[email protected] ~]# useradd -u 1000 user1

[[email protected] ~]# tail -1 /etc/passwd

user1:x:1000:1000::/home/user1:/bin/bash

要明白,如果UIDGID不一样,会在权限和脚本上有一定的影响

-r:添加一个系统用户,从1-499之间找一个id号,并且默认“系统用户”是不能登录的,因为不会生产家目录

groupadd也有一个-r也是添加一个系统组的意思,而且也是没有家目录的,手动复制/etc/skel的文件变成家目录也是可以登录的

-gGID(基本组)指定创建用户的基本组是什么(这样指定的话,组名必须要存在,所以要事先先创建组)

/etc/group最后那一个字段是以该组为附加组的用户,多个的话用逗号隔开

useradd -g togogo togogo02

-G:GID(附加组)

如果我们指定了UID,下次创建默认的就是最大的UID1,所以中间可能会空很多UID没有设置

-c "CONMENT"指定注释信息(多个注释信息用,隔开,并且可以用chfn来设置

-d /path/to/somedirectory 指定某个目录作为家目录

[[email protected] ~]# useradd -c "mynameistom" -d /home/tomny togogo03

[[email protected] ~]# tail -1 /etc/passwd

togogo03:x:1001:1001:mynameistom:/home/tomny:/bin/bash

 

-s SHELL的意思,指定的shell要是/etc/shells下面的一个shell,所以这个-s是指定shell路径的

cat /etc/shells

[[email protected] ~]# useradd -s /sbin/nologin user5

[[email protected] ~]# su - user5

This account is currently not available.

到现在学习的环境变量有以下几个

PATHSHELLHISTSIZE

[[email protected] ~]# echo $SHELL查看当前默认的SHELL是什么

/bin/bash  -m强制为用户创建家目录() 

-k /etc/skelskel这个单词指的是人的骨架框架(是一些bash的配置文件,一些环境变量)

[[email protected] ~]# cd /etc/skel/

[[email protected] skel]# ls -a 

.  ..  .bash_logout  .bash_profile  .bashrc

创建用户的时候,默认是把/etc/skel中会把这些默认赋值到家目录里面去的

如果没有这些文件在家目录下,这个用户是不健全的,

 

密码的最短时间,最长时间,还有那些默认是5001000,还有默认的权限077

都是在etc/login.defs可以设置

-M不创建家目录 

如果用户没有家目录的话,是不能够进入这个用户的。因为他没有默认的一些skel给与的配置,找不到一些默认配置,所以不能登录

[[email protected] ~]# useradd -M user7

[[email protected] ~]# su - user7

su: warning: cannot change directory to /home/user7: No such file or directory  这里是告诉你妮没有家目录没哟一定的环境变量

-bash-4.1$ pwd           

/root

 

二、userdel

userdel:【option】 USERNAME

删除一个用户默认不会删除家目录的

-r选项remove,就是删除用户的同时,也把家目录给删除了

 

id :查看用户的账号属性信息

-n显示组的组名,名称,而非是id

还有-u -g -G几个,分别显示不同的UID,GID之类的

[[email protected] ~]# id -G user1

1000 0

[[email protected] ~]# id -G -n user1

user1 root

其他的就不是很常用了

 

三、finger

finger:食指,是用来检索用户信息的账号信息

finger togogo01 就可以看到用户账号的相关属性信息了

修改finger信息用chfnchange finger

[[email protected] Packages]# finger togogo01

Login: togogo01                         Name: 

Directory: /home/togogo01               Shell: /bin/bash

Last login Sat Jul 25 05:22 (EDT) on pts/3

No mail.

No Plan.

 

四、usermod

如何修改用户账号属性信息:

usermod,跟useradd的选项差不多的,意思也是差不多的

-u UID

-g GID

-G GID附加组,如果之前有附加组,如果用这个命令,就会之前的附加组会没了

所以经常用-a-G是一起使用的,追加附加组,不然没有-a会替换原来的附加组

-c 修改注释信息(注释多项的时候用逗号隔开,具体为chfn修改他的注释信息

[[email protected] ~]# tail -1 /etc/passwd

linan3:x:502:500::/var/linan3/:/bin/bash

[[email protected] ~]# usermod -c "whoyouare" linan3

[[email protected] ~]# tail -1 /etc/passwd

linan3:x:502:500:whoyouare:/var/linan3/:/bin/bash

-d 为用户指定新的家目录,但是很危险,原来的家目录文件就没有了,如果要用户还能访问此前在家目录创建的文件,需要将原来的东西移动到新的位置

可以用-m目录,所以-d经常和-m一起使用:即指定新的家目录位置,又移动此前家目录的文件到新的家目录

 

-s 修改shell

-l 直接修改用户名的用户(修改用户名:登录名)

-L可以直接锁定用户账号,类似于禁用

立刻可以锁定账户,所以对于的就是-U

-U就是用于解锁的,解锁账号

其实这个命令的用处是非常大的

-e 定义用户的过期时间,格式年月日

-f 非活动时间   用得少,到时候man一下就可以了

[[email protected] skel]# cp .bash_logout .bash_profile .bashrc /var/linan3/

[[email protected] skel]# cd /var/linan3/

如果指定了其他的家目录,别忘了把一些相关的文件从/etc/skel中拷贝到指定的家目录去,不然是不能登录用户的

 

五、chshchfn

chshchange shell的简写---就是用来修改shell 

 [[email protected] Packages]# chsh togogo02

Changing shell for togogo02.

New shell [/bin/bash]: /bin/tcsh 

[[email protected] Packages]# finger togogo02

Login: togogo02                         Name: 

Directory: /home/togogo02               Shell: /bin/tcsh

 

chfn:其实这个就是用来修改注释信息的,用法也是chfn USERNAME

[[email protected] ~]$ chfn

Changing finger information for user1.

Password: 

Name []: Xiaoming

Office []: Yanfabu

Office Phone []: 13690965166

Home Phone []: 6299498

Finger information changed.

[[email protected] ~]$ finger user1

Login: user1                            Name: Xiaoming

Directory: /home/mainuser/              Shell: /bin/bash

Office: Yanfabu, +1-369-096-5166        Home Phone: 629-9498

[[email protected] ~]$ 

所以以后自己管理Linux的时候,给不同的人创建账号的时候,用到这个也是非常好的

finger 查看修改的相关信息

 

密码管理:

六、passwd

passwd USERNAME

这个用起来很简单,但是也有几个选项使用

管道方式输入密码杠杠stdin    --stdin 通过标准字符串来接收密码

将来可在脚本中,方便的创建用户账号,并同时给他指定密码(这个体现了Linux重要的思想之一:尽量避免捕获用户接口

[[email protected] Packages]# echo "123456" | passwd --stdin togogo01

Changing password for user togogo01.

passwd: all authentication tokens updated successfully.

-l锁定用户

-u解锁用户

-d删除用户密码(默认清空了密码是不给登录的,当然root su 过去是可以的

-n 密码最短使用期限

-x 密码最长使用期限

其他不常用的参看man 一下去看一下

六:pwck

pwck:检查用户账号的完整性

 

接下来跟组相关的命令

组管理

七、groupadd

groupadd 

-g指定GID

-r添加系统组,我们将来在安装服务器软件的时候可能会用到这个去生成系统组和系统用户

而且系统用户和系统组是不会有家目录的,当然是可以手动增加家目录就可以登录的了

八、groupmod

groupmod

-gGID

-nGRPNAME修改组名称  而usermod是用-l来修改组名的

groupdel删除组

gpasswd:为组设定密码

应用场景:是在你想修改文件的属组的时候,你要登录属组的这个组的密码。

通常和newgrp连用,它可以修改用户的属组

所以newgrp可以临时切换用户的基本组,改变一种登录属性

[[email protected] ~]# groupadd hoop

[[email protected] ~]# gpasswd hoop

Changing the password for group hoop

New Password: 

Re-enter new password: 

[[email protected] ~]# su - togogo01

 [[email protected] tmp]$ touch a.hoop

 [[email protected] tmp]$ ll

-rw-r--r--. 1 togogo01 togogo    0 Jul 26 02:00 a.hoop

[[email protected] tmp]$ newgrp hoop

Password: 

上面这一步可以看到,newgrp是修改用户的属组为hoop,然后就需要输入这个组的密码了,输入正确,后面创建的文件就是这个属组了

[[email protected] tmp]$ touch 2.hoop

[[email protected] tmp]$ ll

-rw-r--r--. 1 togogo01 hoop      0 Jul 26 02:01 2.hoop

-rw-r--r--. 1 togogo01 togogo    0 Jul 26 02:00 a.hoop

是可以退出的,不想用newgrp修改的属组的是用户就用exit退出即可

 

练习题目

对密码的期限在设置密码的时候使用

而对于用户的期限可以用chage或者是usermod来实现

技术分享 

 

九、chage

(这些信息可以直接修改shadow文件,前提一定要知道shadow里面的各个字段的意思是什么

chage 改变用户密码过期信息的 ----------man手册要常用

-d:最近一次的修改时间

-E:过期时间

-I:非活动时间

-m:最短使用期限

-M:最长使用时间

-W:警告时间

 

 

14

权限管理:

r对文件来说:可以使用less cat ,目录来说,可以对此目录用ls命令,但是不能ls -l也不能cd进去

w文件来说:可以编辑删除这个文件,目录亦如此

x文件来说:可以交给内核执行。目录来说:可以用ls -l cd 进去

对于这些权限,我们对三类用户都分别定义了

u属主:

g属组:

o其他用户

 

一、chown

chown:改变文件属主(这个命令是只有管理员可以使用此命令)

# chown USERNAME file...

-R:修改目录及其内部文件的属主,对目录用此命令,里面的文件和目录所有也都变成修改的属主

--reference它的意思是引用,参考,参考某一个文件或者目录的属组和属主

--reference=/path/to/somefile file...

[[email protected] tmp]# mkdir ccc

[[email protected] tmp]# chown --reference=/tmp/aaa ccc/

[[email protected] tmp]# ls -ld ccc

drwxr-xr-x. 2 togogo01 root 6 Jul 26 02:24 ccc

 

二、chgrp

chgrp:改变文件属组(这个命令是只有管理员可以使用此命令)

-R:修改目录及其内部文件的属主,对目录用此命令,里面的文件和目录所有也都变成修改的属

--reference它的意思是引用,参考,参考某一个文件或者目录的属组和属主,这个是一块改的

--reference=/path/to/somefile file,...

如果我们想同时改变属组和属主怎么办,就可以用chown一起改,用:或者用.分开

[[email protected] ~]# chown root:redhat /tmp/

[[email protected] ~]# ll -d /tmp/

drwxrwxrwt. 3 root redhat 4096 Aug 23 20:14 /tmp/

 

三、chmod

改变文件的权限

chmod

这个也是支持--reference=/path/to/somefile file,...

技术分享 

 

可以用=号,可以用+—符号,可以用数字,多种模式

a+x ,只有+x也是代表了所有的用户组加上执行权限

技术分享

[[email protected] skel]# useradd -M nani

[[email protected] skel]# su - nani

su: warning: cannot change directory to /home/nani: No such file or directory

mkdir: cannot create directory ‘/home/nani‘: Permission denied

-bash-4.2$ exit

logout---------之前说过,没有家目录是不能登录的,所以这个练习也是为没有家目录的用户怎么让它可以登录

[[email protected] ~]# cp -r /etc/skel/ /home/nani   -r是完全复制(包括一些时间戳,而-a通常用在备份东西上)。

[[email protected] ~]# cd /home/nani

[[email protected] nani]# ls -a 

.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

 [[email protected] nani]# chmod -R go= /home/nani/

 [[email protected] nani]# chown -R nani:nani /home/nani/

[[email protected] nani]# ls -la

drwx------. 3 nani nani  74 Jul 26 02:45 .

-rw-------. 1 nani nani  18 Jul 26 02:45 .bash_logout

-rw-------. 1 nani nani 193 Jul 26 02:45 .bash_profile

[[email protected] nani]# su - nani

Last login: Sun Jul 26 02:44:59 EDT 2015 on pts/0

[[email protected] ~]$

[[email protected] ~]# ls -ld `which passwd`

-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd

 

bc是一个计算器,直接bc然后输入既可以了

 技术分享

所以我们可以手动改文件创建一个目录

passwd,shadow,group加一行   自主创建家目录就可以实现了

实例:手动添加用户hive ,基本组为hive5000),附加组为mygroup

技术分享 

    上图的实例中是没有密码的,所以不能直接ssh登录

    这个密码密钥也是可以手动生成的

用这个命令:openssl 

手动生成密码的方法(单向加密,输入一样的密码,一样的salt,结果的密钥也是一样的

技术分享 

    上图的意思是创建一个密码,进行加密

    但是没有盐,没有杂质,后来加一点指定的盐

    形成了一个有盐也有加密的一串密码

    将其复制到/etc/shadow相应的用户目录下,就可以实现手动生成密码了

 

四、umask

决定了我们目录或者文件的默认权限的

注意的一点是我们的umask这样的设定只在当前的shell有用。

文件默认都没有执行权限的

umask:遮罩码(反向掩码),用户创建文件或者目录的遮罩码

技术分享 

文件是 666-u

以上是关于0221自学Linux_bash全局配置+个人配置+命令(useradd,finger,groupadd相关,chage,chown,chmod,umask)的主要内容,如果未能解决你的问题,请参考以下文章

个人博客开发之 全局配置文件settings设置

00_git配置个人信息

原创 | 刘贝:Linux_Bash故障分析

Linux_bash的特性之glob

Linux_bash的特性之glob

Eclipse-maven相关配置