发表于: 2016-10-21 22:05:31
0 811
今天学到的内容:
目录加不加/在一些命令的对其操作的结果是不一样的。
readlink 软链接 在已知某个链接的情况下查看其真实的地址
tr 命令 字符集1 字符集2
当字符集1长度大于字符集2的长度时,字符集1超出字符集2的那些字符都被字符集2里面的最后一个字符替换。
当字符集2长度大于字符集1的长度时,字符集2超出字符集1的那些字符不被使用
tr 只接受标准输入的
加上-t之后,就会限制为一一转换
-c参数 表示补集,表示除了之外的都做转换。
tr -dc ‘a-z’ <file1
file1内的字集除了a-z之外都被删除,并将其他的字符全部用a-z的字符集替换
标准输入
< 文件 (标准输入,可以理解为由文件输出,还是谁大谁输出), > 文件,标准输出
记忆技巧:谁大谁输出。
命令 <文件1>文件2
文件1的内容作为标准输入给命令处理完,之后标准输出到文件2
等于 命令>we>文件2<文件1
两者的顺序不重要,肯定是先有输入才能输出,谁前谁后都行。
cat <file1>file2 =cp file1 file2 (前提是文本文档)
多行重定向
使用“<< 终止词”命令从键盘把多行重导向给STDIN
直到 终止词 位置的所有文本都发送给STDIN
mail -s 标题 用户名 这个时候是以.退出的
图形界面的自动登录
Windows下用户名和组名不能一样,linux下面是可以的,linux创建的时候必须善于一个组,叫做主组
管道符 |
命令1 | 命令2|命令3|…….
前一个命令的标准输出(是正确的执行结果,若是错误的话就不行)成为后一个命令的标准输入
命令1标准输出 命令2标准输入
tee 命令
命令1|tree 命令2|tree命令3|…….
命令1标准输出
|
|
|
命令1标准输出 ————————————————————————》 命令2标准输入
命令1的标准输出该怎么输出还是怎么输出的同时还成为了命令2的标准输入
/etc/passwd 详解
root :x :0 :0 :root :/root :/bin/bash
(1) (2) (3) (4) (5) (6) (7)
(1) username 用户名
它唯一地标识了一个用户帐号,用户在登录时使用的就是它。
(2) password 该帐号的口令
passwd文件中存放的密码是经过加密处理的。Linux的加密算法很严密,其中的口令几乎是不可能被破解的
(3) User ID 用户识别码,简称UID
Linux系统内部使用UID来标识用户,而不是用户名。UID是一个整数,用户的UID互不相同。 0是系统管理员账号,1-499是系统保留账号,500+即一般账号
(4) Group ID 用户组识别码,简称GID
不同的用户可以属于同一个用户组,享有该用户组共有的权限。与UID类似,GID唯一地标识了一个用户组。 用usermod -g 设置
(5) comment 这是给用户帐号做的注解
它一般是用户真实姓名、电话号码、住址等,当然也可以是空的。
(6) home directory 主目录
这个目录属于该帐号,当用户登录后,它就会被置于此目录中,就像回到家一样。一般来说,root帐号的主目录是/root,其他帐号的家目录都在/home目录下,并且和用户名同名。 用usermod -d 设置
(7) login command 用户登录后执行的命令
一般来说,这个命令将启动一个shell程序。例如,用bbs帐号登录后,会直接进入bbs系统,这是因为bbs帐号的login command指向的是bbs程序,等系统登录到bbs时就自动运行这些命令。
/etc/group
root :x :0 :
bin :x :1 :bin,daemon
(1) (2) (3) (4)
(1) 用户组名称
(2) 用户组密码
(3) GID
(4) 组用户列表(组成员),每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名。
/etc/shadow
han :!! :17089 :0 :99999 :7 : : :
(1) (2) (3) (4) (5) (6) (7) (8) (9)
(1) loginname:登录名。即/etc/passwd中的account。例子中hanll
(2) encryptedpassword:加密的密码 !!表示用户被锁定无法登陆但是可以su –进行身份的切换(这个账号是没有密码的!!可以理解为没有密码但是不说说密码为空)
(3) date of last password change:最近更改密码日期。从1970年1月1日开始计算的时间差,单位是秒。
(4) minimum password age:最小密码寿命。实际指若需要改密码至少要经过多少天。或者可以理解为在这些天内密码不允许更改。注意0表示随时可以更改。
(5) maximum password age:最大密码寿命。可以这么理解,为了密码的安全,需要定期修改,过设定密码寿命,过期后提醒用户更新密码。99999 表示永不过期
(6) password warning period:密码过期前几天提醒用户更新密码。前面说过密码是有寿命的,在寿终前需要提醒用户更新密码,这个参数就是设定提醒天数的。
(7) password inactivity period:密码不可用期限。实际上密码寿终后是还可以继续使用的,在它下地狱前还是有魂魄的,魂魄还能呆多久呢?就是这个参数决定的。
(8) account expiration date:账户过期时间。这才是最终过期时间。就是说,在用户密码过期后用户还不更新密码的话,将到这个日期后用户将真的无法使用了。账号过期和密码过期是有区别的。
(9) reserved field:保留位。
/etc/gshadow
root : : :root
(1 ) (2) (3) (4)
(1) groupname 用户组名
(2) password 用户组密码,这个段可以是空的或!,如果是空的或有!表示没有密码
(3) admin 用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割
(4) member,member 组成员,如果有多个成员,用,号分割
useradd 命令
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
3.主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的主目录,替换系统默认值/home/<用户名>
-D:变更预设值。
-e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
-g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。默认值为/bin/bash。
-u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
4.说明
useradd可用来建立用户账号,他和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。
5.应用实例
建立一个新用户账户,并设置ID:
#useradd david -u 544
需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特别用户,一般0到499之间的值留给bin、mail这样的系统账号。
#useradd Oracle -g oinstall -G dba
新创建一个oracle用户,这初始属于oinstall组,且同时让他也属于dba组。
#useradd tomcat -d /var/servlet/service -s /sbin/nologin
无法使用shell,且其用户目录至/var/servlet/service
[root@local ~]# useradd -e 17/1/1 han
Creating mailbox file: File exists
这是在删除用户的时候没有选择 –r参数,使用了userdel han 指令,然后自己手动吧/home/han 给删掉了,但是在/var/mail下面还有han的文件,所以再次创建同一个账号的时候,提示这个错误。
这里涉及到了执行useradd username 的作用
/etc/default/useradd 文件
通过useradd 添加用户时的规则文件,内容如下:
# useradd defaults file
GROUP=100
HOME=/home :把用户的家目录建在/home中;
INACTIVE=-1 :是否启用帐号过期停权,-1表示不启用;
EXPIRE= :帐号终止日期,不设置表示不启用;
SHELL=/bin/bash :所用SHELL的类型;
SKEL=/etc/skel :默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
每个新创建的用户在起家目录下面都会有这 个文件
.bash_logout
.bash_profile
.bashrc
当丢失了这里面其中的文件的时候,会发生的情况是:
[root@local ~]# rm -rf /home/han/.*[^.]*
[root@local ~]# su - han
-bash-4.1$ -------》这里的这个提示符显示都变了
解决方法:
-bash-4.1$ su -
Password:
[root@local ~]# cp /etc/skel/.*[^.]* /home/han/
[root@local ~]# su - han
[han@local ~]$ ls -la /home/han/
total 20
drwx------. 2 han han 4096 Oct 21 09:17 .
drwxr-xr-x. 3 root root 4096 Oct 21 09:03 ..
-rw-r--r--. 1 root root 18 Oct 21 09:17 .bash_logout
-rw-r--r--. 1 root root 176 Oct 21 09:17 .bash_profile
-rw-r--r--. 1 root root 124 Oct 21 09:17 .bashrc
对比之删除之前的信息
[root@localhoast ~]# ls -la /home/han
total 24
drwx------. 2 han han 4096 Oct 15 19:13 .
drwxr-xr-x. 4 root root 4096 Oct 19 19:53 ..
-rw-------. 1 han han 223 Oct 15 19:13 .bash_history (之前已执行的命令)
-rw-r--r--. 1 han han 18 May 11 07:21 .bash_logout
-rw-r--r--. 1 han han 176 May 11 07:21 .bash_profile
-rw-r--r--. 1 han han 124 May 11 07:21 .bashrc
为了防止出现问题,要改一下复制过来的几个文件的所属者和所属组
评论