File: 5.html

package info (click to toggle)
lg-issue39 2-4
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,408 kB
  • ctags: 145
  • sloc: ansic: 207; perl: 72; makefile: 37; sh: 4
file content (182 lines) | stat: -rw-r--r-- 6,884 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!--startcut ======================================================= -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<META NAME="generator" CONTENT="lgazmail v1.1J.c">
<TITLE>The Answer Guy 39: Deleting Files and UNIX Permissions</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"
	LINK="#3366FF" VLINK="#A000A0">
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<H4>"The Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<center>
<H1><A NAME="answer">
	<img src="../../gx/dennis/qbubble.gif" alt="(?)" 
		border="0" align="middle">
	<font color="#B03060">The Answer Guy</font>
	<img src="../../gx/dennis/bbubble.gif" alt="(!)" 
		border="0" align="middle">
</A></H1> 
<BR>
<H4>By James T. Dennis,
	<a href="mailto:answerguy@ssc.com">answerguy@ssc.com</a><BR>
	LinuxCare,
	<A HREF="http://www.linuxcare.com/">http://www.linuxcare.com/</A> 
</H4>
</center>

<p><hr><p>
<!--  endcut ======================================================= -->
<!-- begin 5 -->
<H3 align="left"><img src="../../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>Deleting Files and UNIX Permissions</H3>


<p><strong>From martin a. salazar  on Fri, 05 Mar 1999  
</strong></p>
<!-- ::
Deleting Files and UNIX Permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	>
Hi,
</STRONG></P>
<P><STRONG>
How can I delete files with attributes like these.
</STRONG></P>
<Pre><STRONG>
b---r-----   1 10080    24640     96,  68 Feb 10  1977 csh.cshrc
b---rwxr--   1 24672    8231      32,  39 Dec 16  2010 exports
</STRONG></Pre>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	>
These look CORRUPT.  See below.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	>
Regards,
<br>Marty Salazar
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	>
Your ability to remove files has nothing to do with
the permissions of the files themselves, and often
nothing to do with the ownership of the files.
</BLOCKQUOTE>
<BLOCKQUOTE>
Under UNIX (and Linux, of course) you need write access
to the <EM>directory</EM> in which a link occurs to remove that
link.  So in a mode 777 directory you can remove <EM>any</EM>
filename (link) REGARDLESS OF WHO OWNS THAT FILE AND
REGARDLESS OF THE PERMISSIONS ON IT.
</BLOCKQUOTE>
<BLOCKQUOTE>
(As a special case under Linux and most modern versions
of Unix if the mode of the directory is "sticky" ---
mode 1xxx --- then you must have write access to the
directory <EM>and</EM> you must own the file, or be root, to
unlink/remove it).
</BLOCKQUOTE>
<BLOCKQUOTE>
Note that I've made a distinction here between the file
and its names (links).  In a Unix/Linux filesystem a
file is an association between an inode (a management and
meta-data structure) and a set of data blocks (the
data or file contents).  The file's <EM>name</EM> is a link from
a directory to the inode.  There can be many such links
or "hard links.
</BLOCKQUOTE>
<BLOCKQUOTE>
Thus the process of removing a file involves "unlinking"
it.  When the link count is zero (there are no remaining
links to a file) and there are not processes with a
file open, then the filesystem driver removes the actual
file (that is it marks the inode as deleted and adds
all of its data blocks back to the "free" list.
</BLOCKQUOTE>
<BLOCKQUOTE>
So the '<tt>rm</tt>' command doesn't actually "remove files" ---
technically it "unlinks files from directories" (which
often has the side effect of reducing the link count to
zero and consequently deleting the file).
</BLOCKQUOTE>
<BLOCKQUOTE>
Understanding this hopefully explains why write access
to a directory is generally sufficient to remove files
in it.
</BLOCKQUOTE>
<BLOCKQUOTE>
Now regarding your example:
</BLOCKQUOTE>
<BLOCKQUOTE><BlockQuote>
The filenames you show here would normall be related
to regular files in the <TT>/etc/</TT> directory.  However the
"permissions" you show suggest that these are block
device nodes (links to things like your <TT>/dev/hda1</TT>, etc).
</BlockQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Moreover the ownership/group fields are rather
unlikely to be valid UIDs or GIDs on your system.  This
suggests that you have a rather thoroughly corrupted
filesystem.  So, my first suggestion would be to
boot from a clean rescue floppy and try '<tt>e2fsck -c</tt>'
Then consider re-installing Linux (after backing up any
data, of course).
</BLOCKQUOTE>
<!-- sig -->

<!-- end 5 -->
<!--startcut ======================================================= -->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/ssc.copying.html"
	>Copyright &copy;</a> 1999, James T. Dennis 
<BR>Published in <I>The Linux Gazette</I> Issue 39 April 1999</H5>
<P> <hr> <P>
<!-- begin tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::-->
<TABLE WIDTH="96%"><TR VALIGN="center" ALIGN="center">
<TD ROWSPAN="2" WIDTH="30%"><A HREF="../lg_answer39.html"
	><IMG SRC="../../gx/dennis/answernew.gif"
              ALT="[ Answer Guy Index ]"></A></td>
  <TD WIDTH="6%"><A HREF="2.html">2</A></TD>
  <TD WIDTH="6%"><A HREF="3.html">3</A></TD>
  <TD WIDTH="6%"><A HREF="4.html">4</A></TD>
  <TD WIDTH="6%"><A HREF="5.html">5</A></TD>
  <TD WIDTH="6%"><A HREF="6.html">6</A></TD>
  <TD WIDTH="6%"><A HREF="7.html">7</A></TD>
  <TD WIDTH="6%"><A HREF="8.html">8</A></TD>
  <TD WIDTH="6%"><A HREF="9.html">9</A></TD>
  <TD WIDTH="6%"><A HREF="10.html">10</A></TD>
  <TD WIDTH="6%"><A HREF="11.html">11</A></TD>
</TR><TR VALIGN="center" ALIGN="center">
  <TD><A HREF="12.html">12</A></TD>
  <TD><A HREF="13.html">13</A></TD>
  <TD><A HREF="15.html">15</A></TD>
  <TD><A HREF="16.html">16</A></TD>
  <TD><A HREF="18.html">18</A></TD>
  <TD><A HREF="19.html">19</A></TD>
  <TD><A HREF="21.html">21</A></TD>
  <TD><A HREF="22.html">22</A></TD>
  <TD><A HREF="23.html">23</A></TD>
</TR></TABLE>
<!-- end tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<P> <hr> <P>
<!-- begin lgnav ::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<A HREF="../lg_toc39.html"
	><IMG SRC="../../gx/indexnew.gif" ALT="[ Table Of Contents ]"></A>
<A HREF="../../lg_frontpage.html"
	><IMG SRC="../../gx/homenew.gif" ALT="[ Front Page ]"></A>
<A HREF="../lg_bytes39.html"
	><IMG SRC="../../gx/back2.gif" ALT="[ Previous Section ]"></A>
<A HREF="../lg_tips39.html"
	><IMG SRC="../../gx/fwd.gif" ALT="[ Next Section ]"></A>
<!-- end lgnav ::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
</BODY></HTML>
<!--endcut ========================================================= -->