linux 更改用户根目录

linux 如何查看用户id
cat /etc/passwd | grep <你的用户名>来查看你的ID。
[dacp@ysdag ~]$ cat /etc/passwd | grep dacp
dacp:x:501:503::/home/dacp:/bin/bash
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

linux如何修改用户主目录
有两种方法:
第一:修改/etc/passwd文件
第二:usermod命令
详细说明如下:
第一种方法:vi /etc/passwd
找到要修改的用户那几行,修改掉即可。此法很暴力,建议慎用。
第二种:usermod
usermod -d /usr/newfolder -u uid
-u后面一定要接uid啊,不是username
附:usermod详细参数
语  法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-
f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ]
[用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。
参  数:
-c<备注>   修改用户帐号的备注文字。
-d登入目录>   修改用户登入时的目录。
-e<有效期限>  修改帐号的有效期限。
-f<缓冲天数>   修改在密码过期后多少天即关闭该帐号。
-g<群组>   修改用户所属的群组。
-G<群组>   修改用户所属的附加群组。
-l<帐号名称>  修改用户帐号名称。
-L  锁定用户密码,使密码无效。
-s  修改用户登入后所使用的shell。
-u  修改用户ID-U  解除密码锁定。
#cat/etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:Systemdaemons:/etc:
bin:x:2:2:Ownerofsystemcommands:/bin:
sys:x:3:3:Ownerofsystemfiles:/usr/sys:
adm:x:4:4:Systemaccounting:/usr/adm:
uucp:x:5:5:UUCPadministrator:/usr/lib/uucp:
auth:x:7:21:Authenticationadministrator:/tcb/files/auth:
cron:x:9:16:Crondaemon:/usr/spool/cron:
listen:x:37:4:Networkdaemon:/usr/net/nls:
lp:x:71:18:Printeradministrator:/usr/spool/lp:
sam:x:200:50:Samsan:/usr/sam:/bin/sh
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
“用户名”是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
“口令”一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
“用户标识号”是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0655350是超级用户root的标识号,199由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
“组标识号”字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
“注释性描述”字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
“主目录”,也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即ShellShell是用户与Linux系统之间的接口。LinuxShell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
系统中有一类用户称为伪用户(psuedousers),这些用户在Linux /etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下所示。
伪用户含义
bin拥有可执行的用户命令文件
sys拥有系统文件
adm拥有帐户文件
uucpUUCP使用
lplp或lpd子系统使用
nobodyNFS使用
拥有帐户文件
除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit,cron,mail,usenet等,它们也都各自为相关的进程和文件所需要。
由于Linux /etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
用户ilink是存在的:
[root@demo ~]# id ilink
uid=501(ilink) gid=502(comp) groups=502(comp)

修改它的主目录:
[root@demo ~]# usermod -d /comp/ilink -u 501
usermod: user 501 does not exist

修改它的SHELL:
[root@demo ~]# usermod -s /usr/bin/ksh -u 501
usermod: user 501 does not exist


**解决**
你要更改ilink用户的主目录 直接
usermod -d /comp/ilink ilink
Redhat6.3 添加用户后切换用户出现 -bash-4.1$
我在Redhat6.3 下
useradd XXX
usermod -d /home/123 -s /bin/bash XXX
su - xxx
就变成
-bash-4.1$
是什么问题 ?!
**解决:**
因为 /home/123下没有.bash_profile和.bash_rc,因此PS1环境变量没有设置成想要的

只要将用户原来HOME下的这两个文件复制过来即可
在LINUX下误删用户的.bash_profile和.bashrc,该如何解决?
Linux系统下bash_profile使每个用户都可使用该文件输入专用于自己使用的shell信息,主要设置用户的一些环境变量,可以通过新建一个bash_profile文件,写入下面代码即可:
vi ~/.bash_profile
#写入如下的内容:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi
# User specific environment and startup programs
export PATH

通常要查看一下其他用户的这个文件怎么写的,仿照写。。。
登录其他用户如:xtwh
[xtwh@ysdag ~]$ pwd
/home/xtwh
[xtwh@ysdag ~]$ ls -la
-rw-r--r--. 1 xtwh xtwh        18 79 2013 .bash_logout
-rw-r--r--. 1 xtwh xtwh       176 79 2013 .bash_profile
查看,拷贝即可。

你可能感兴趣的:(linux)